diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-02-08 15:10:16 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-02-08 15:10:16 +0300 |
commit | d4913af84660318047e3404f9766014cd78864ab (patch) | |
tree | 216516057dc8df5177e4f179392de5a79811ba3f /source/blender/alembic/intern/abc_exporter.cc | |
parent | c973e8d2da5cf3f615256269128a07390f8c06a9 (diff) | |
parent | 8cda364d6f2e6e8da454034f19fb959739045813 (diff) |
Merge branch 'master' into blender2.8
# Conflicts:
# source/blender/blenloader/intern/writefile.c
Diffstat (limited to 'source/blender/alembic/intern/abc_exporter.cc')
-rw-r--r-- | source/blender/alembic/intern/abc_exporter.cc | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/source/blender/alembic/intern/abc_exporter.cc b/source/blender/alembic/intern/abc_exporter.cc index cc61d5ad49f..844079faa78 100644 --- a/source/blender/alembic/intern/abc_exporter.cc +++ b/source/blender/alembic/intern/abc_exporter.cc @@ -382,7 +382,10 @@ void AbcExporter::createTransformWritersFlat() void AbcExporter::exploreTransform(EvaluationContext *eval_ctx, Object *ob, Object *parent, Object *dupliObParent) { - createTransformWriter(ob, parent, dupliObParent); + + if (export_object(&m_settings, ob) && object_is_shape(ob)) { + createTransformWriter(ob, parent, dupliObParent); + } ListBase *lb = object_duplilist(eval_ctx, m_scene, ob); @@ -410,8 +413,12 @@ void AbcExporter::createTransformWriter(Object *ob, Object *parent, Object *dupl { const std::string name = get_object_dag_path_name(ob, dupliObParent); + /* An object should not be its own parent, or we'll get infinite loops. */ + BLI_assert(ob != parent); + BLI_assert(ob != dupliObParent); + /* check if we have already created a transform writer for this object */ - if (m_xforms.find(name) != m_xforms.end()){ + if (getXForm(name) != NULL){ std::cerr << "xform " << name << " already exists\n"; return; } @@ -426,6 +433,14 @@ void AbcExporter::createTransformWriter(Object *ob, Object *parent, Object *dupl if (parent->parent) { createTransformWriter(parent, parent->parent, dupliObParent); } + else if (parent == dupliObParent) { + if (dupliObParent->parent == NULL) { + createTransformWriter(parent, NULL, NULL); + } + else { + createTransformWriter(parent, dupliObParent->parent, dupliObParent->parent); + } + } else { createTransformWriter(parent, dupliObParent, dupliObParent); } |