diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2019-11-26 16:35:47 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2019-11-26 18:26:52 +0300 |
commit | f18ad385dffe70f5e57df00ff9bbb7b42fa05be0 (patch) | |
tree | 00c70215a421b1187d7482f428d1548d0b29ea1c /source/blender/alembic/intern/abc_mesh.cc | |
parent | a018a7fb0d5b2cd6de2bb7b4f4aa092594655fdd (diff) |
Alembic export: don't assume transform is always animated
Instead of always writing the transform on every frame, it's now checked
whether the object is animated at all. This could be made stricter to
reduce false positives, for example by checking FCurves and drivers to
see whether translation/rotation/scale is animated. However, this
approach is already better than the `return true` we had before.
This commit adds the BKE_animdata_id_is_animated(id) function, which
returns true if the ID datablock has non-empty animation data. This is
determined by checking the the active action's fcurves, the drivers, and
NLA tracks.
Diffstat (limited to 'source/blender/alembic/intern/abc_mesh.cc')
-rw-r--r-- | source/blender/alembic/intern/abc_mesh.cc | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/source/blender/alembic/intern/abc_mesh.cc b/source/blender/alembic/intern/abc_mesh.cc index 89fafc65e5d..edcb6263da3 100644 --- a/source/blender/alembic/intern/abc_mesh.cc +++ b/source/blender/alembic/intern/abc_mesh.cc @@ -304,14 +304,8 @@ AbcGenericMeshWriter::~AbcGenericMeshWriter() bool AbcGenericMeshWriter::isAnimated() const { - if (m_object->data != NULL) { - AnimData *adt = BKE_animdata_from_id(static_cast<ID *>(m_object->data)); - /* TODO(Sybren): make this check more strict, as the AnimationData may - * actually be empty (no fcurves, drivers, etc.) and thus effectively - * have no animation at all. */ - if (adt != NULL) { - return true; - } + if (BKE_animdata_id_is_animated(static_cast<ID *>(m_object->data))) { + return true; } if (BKE_key_from_object(m_object) != NULL) { return true; |