[Bf-blender-cvs] [9c02990ac13] master: Alembic import: changing cache modifier path no longer discards object paths

Sybren A. Stüvel noreply at git.blender.org
Fri Apr 21 14:16:25 CEST 2017


Commit: 9c02990ac13a25968d8ec15da15129617d3f25d0
Author: Sybren A. Stüvel
Date:   Fri Apr 21 14:11:13 2017 +0200
Branches: master
https://developer.blender.org/rB9c02990ac13a25968d8ec15da15129617d3f25d0

Alembic import: changing cache modifier path no longer discards object paths

This allows, for example, the path of an Alembic file to be changed from
absolute to relative, without having to reconstruct all object paths.

===================================================================

M	source/blender/blenkernel/intern/cachefile.c
M	tests/python/bl_alembic_import_test.py

===================================================================

diff --git a/source/blender/blenkernel/intern/cachefile.c b/source/blender/blenkernel/intern/cachefile.c
index ff0a776aa82..67c66d4e40b 100644
--- a/source/blender/blenkernel/intern/cachefile.c
+++ b/source/blender/blenkernel/intern/cachefile.c
@@ -221,7 +221,6 @@ void BKE_cachefile_clean(Scene *scene, CacheFile *cache_file)
 				}
 #endif
 				mcmd->reader = NULL;
-				mcmd->object_path[0] = '\0';
 			}
 		}
 
@@ -239,7 +238,6 @@ void BKE_cachefile_clean(Scene *scene, CacheFile *cache_file)
 				}
 #endif
 				data->reader = NULL;
-				data->object_path[0] = '\0';
 			}
 		}
 	}
diff --git a/tests/python/bl_alembic_import_test.py b/tests/python/bl_alembic_import_test.py
index cd23183ec06..33ccc49f301 100644
--- a/tests/python/bl_alembic_import_test.py
+++ b/tests/python/bl_alembic_import_test.py
@@ -85,6 +85,43 @@ class SimpleImportTest(unittest.TestCase):
         for ob in bpy.data.objects:
             self.assertEqual('Cube' in ob.name, ob.select)
 
+    def test_change_path(self):
+        import math
+
+        fname = 'cube-rotating1.abc'
+        abc = self.testdir / fname
+        relpath = bpy.path.relpath(str(abc))
+
+        res = bpy.ops.wm.alembic_import(filepath=str(abc), as_background_job=False)
+        self.assertEqual({'FINISHED'}, res)
+        cube = bpy.context.active_object
+
+        # Check that the file loaded ok.
+        bpy.context.scene.frame_set(10)
+        x, y, z = cube.matrix_world.to_euler('XYZ')
+        self.assertAlmostEqual(x, 0)
+        self.assertAlmostEqual(y, 0)
+        self.assertAlmostEqual(z, math.pi / 2, places=5)
+
+        # Change path from absolute to relative. This should not break the animation.
+        bpy.context.scene.frame_set(1)
+        bpy.data.cache_files[fname].filepath = relpath
+        bpy.context.scene.frame_set(10)
+
+        x, y, z = cube.matrix_world.to_euler('XYZ')
+        self.assertAlmostEqual(x, 0)
+        self.assertAlmostEqual(y, 0)
+        self.assertAlmostEqual(z, math.pi / 2, places=5)
+
+        # Replace the Alembic file; this should apply new animation.
+        bpy.data.cache_files[fname].filepath = relpath.replace('1.abc', '2.abc')
+        bpy.context.scene.update()
+
+        x, y, z = cube.matrix_world.to_euler('XYZ')
+        self.assertAlmostEqual(x, math.pi / 2, places=5)
+        self.assertAlmostEqual(y, 0)
+        self.assertAlmostEqual(z, 0)
+
 
 def main():
     global args




More information about the Bf-blender-cvs mailing list