Merge branch 'blender-v4.5-release'
This commit is contained in:
@@ -288,6 +288,54 @@ class USDImportTest(AbstractUSDTest):
|
||||
check_mod("mesh6", 1, 2, 'SMOOTH_ALL', 'ALL')
|
||||
check_mod("mesh7", 1, 2, 'PRESERVE_BOUNDARIES', 'PRESERVE_CORNERS')
|
||||
|
||||
def test_import_mesh_subd_varying(self):
|
||||
"""Test importing meshes with subdivision crease values varying over time."""
|
||||
|
||||
testfile = str(self.testdir / "usd_mesh_subd_varying_test.usda")
|
||||
res = bpy.ops.wm.usd_import(filepath=testfile)
|
||||
self.assertEqual({'FINISHED'}, res, f"Unable to import USD file {testfile}")
|
||||
|
||||
stage = Usd.Stage.Open(testfile)
|
||||
|
||||
#
|
||||
# Validate Mesh data
|
||||
#
|
||||
blender_mesh1 = bpy.data.objects["mesh_edge_crease"]
|
||||
blender_mesh2 = bpy.data.objects["mesh_vert_crease"]
|
||||
usd_mesh1 = UsdGeom.Mesh(stage.GetPrimAtPath("/root/mesh_edge_crease/mesh_edge_crease"))
|
||||
usd_mesh2 = UsdGeom.Mesh(stage.GetPrimAtPath("/root/mesh_vert_crease/mesh_vert_crease"))
|
||||
|
||||
# A MeshSequenceCache modifier should be present on every imported object
|
||||
for blender_mesh in [blender_mesh1, blender_mesh2]:
|
||||
self.assertTrue(len(blender_mesh.modifiers) == 1 and blender_mesh.modifiers[0].type ==
|
||||
'MESH_SEQUENCE_CACHE', f"{blender_mesh.name} has incorrect modifiers")
|
||||
|
||||
# Conversion from USD to Blender convention
|
||||
def sharpness_to_crease(sharpness):
|
||||
return math.sqrt(sharpness * 0.1)
|
||||
|
||||
# Compare Blender and USD data against each other for every frame
|
||||
for frame in range(1, 25):
|
||||
bpy.context.scene.frame_set(frame)
|
||||
depsgraph = bpy.context.evaluated_depsgraph_get()
|
||||
blender_mesh1_eval = bpy.data.objects["mesh_edge_crease"].evaluated_get(depsgraph)
|
||||
blender_mesh2_eval = bpy.data.objects["mesh_vert_crease"].evaluated_get(depsgraph)
|
||||
|
||||
# Check crease values
|
||||
blender_crease_data = [round(d.value) for d in blender_mesh1_eval.data.attributes["crease_edge"].data]
|
||||
usd_crease_data = [round(sharpness_to_crease(d)) for d in usd_mesh1.GetCreaseSharpnessesAttr().Get(frame)]
|
||||
self.assertEqual(
|
||||
blender_crease_data,
|
||||
usd_crease_data,
|
||||
f"Frame {frame}: {blender_mesh1_eval.name} crease values do not match")
|
||||
|
||||
blender_crease_data = [round(d.value) for d in blender_mesh2_eval.data.attributes["crease_vert"].data]
|
||||
usd_crease_data = [round(sharpness_to_crease(d)) for d in usd_mesh2.GetCornerSharpnessesAttr().Get(frame)]
|
||||
self.assertEqual(
|
||||
blender_crease_data,
|
||||
usd_crease_data,
|
||||
f"Frame {frame}: {blender_mesh2_eval.name} crease values do not match")
|
||||
|
||||
def test_import_camera_properties(self):
|
||||
"""Test importing camera to ensure properties set correctly."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user