Changeset View
Changeset View
Standalone View
Standalone View
tests/python/modifiers.py
| Show First 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | generate_modifiers = [ | ||||
| ModifierSpec('multires', 'MULTIRES', {}), | ModifierSpec('multires', 'MULTIRES', {}), | ||||
| # remesh can also generate an empty mesh. Skip. | # remesh can also generate an empty mesh. Skip. | ||||
| # ModifierSpec('remesh', 'REMESH', {}), | # ModifierSpec('remesh', 'REMESH', {}), | ||||
| # ModifierSpec('screw', 'SCREW', {}), # screw can make the test very slow. Skipping for now. | # ModifierSpec('screw', 'SCREW', {}), # screw can make the test very slow. Skipping for now. | ||||
| # ModifierSpec('skin', 'SKIN', {}), # skin is not reproducible . | # ModifierSpec('skin', 'SKIN', {}), # skin is not reproducible . | ||||
| ModifierSpec('solidify', 'SOLIDIFY', {}), | ModifierSpec('solidify', 'SOLIDIFY', {}), | ||||
| ModifierSpec('subsurf', 'SUBSURF', {}), | ModifierSpec('subsurf', 'SUBSURF', {}), | ||||
| ModifierSpec('triangulate', 'TRIANGULATE', {}), | ModifierSpec('triangulate', 'TRIANGULATE', {}), | ||||
| ModifierSpec('wireframe', 'WIREFRAME', {}) | ModifierSpec('wireframe', 'WIREFRAME', {}) | ||||
| ] | ] | ||||
| if randomize: | if randomize: | ||||
| shuffle(generate_modifiers) | shuffle(generate_modifiers) | ||||
| return generate_modifiers | return generate_modifiers | ||||
| def main(): | def main(): | ||||
| mask_first_list = get_generate_modifiers_list("testCubeMaskFirst", randomize=True) | mask_first_list = get_generate_modifiers_list("testCubeMaskFirst", randomize=True) | ||||
| mask_vertex_group = "testCubeMaskFirst" + "_mask" | mask_vertex_group = "testCubeMaskFirst" + "_mask" | ||||
| mask_first_list.insert(0, ModifierSpec('mask', 'MASK', {'vertex_group': mask_vertex_group})) | mask_first_list.insert(0, ModifierSpec('mask', 'MASK', {'vertex_group': mask_vertex_group})) | ||||
| tests = [ | tests = [ | ||||
| ############################### | ############################### | ||||
| # List of 'Generate' modifiers on a cube | # List of 'Generate' modifiers on a cube | ||||
| ############################### | ############################### | ||||
| # 0 | # 0 | ||||
| # ["testCube", "expectedCube", get_generate_modifiers_list("testCube")], | # ["testCube", "expectedCube", get_generate_modifiers_list("testCube")], | ||||
| ["testCubeRandom", "expectedCubeRandom", get_generate_modifiers_list("testCubeRandom", randomize=True)], | ["CubeRandom", "testCubeRandom", "expectedCubeRandom", | ||||
| ["testCubeMaskFirst", "expectedCubeMaskFirst", mask_first_list], | get_generate_modifiers_list("testCubeRandom", randomize=True)], | ||||
| ["CubeMaskFirst", "testCubeMaskFirst", "expectedCubeMaskFirst", mask_first_list], | |||||
| ["testCollapseDecimate", "expectedCollapseDecimate", | ["CollapseDecimate", "testCollapseDecimate", "expectedCollapseDecimate", | ||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2}), | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2}), | ||||
| ModifierSpec('decimate', 'DECIMATE', {'decimate_type': 'COLLAPSE', 'ratio': 0.25, 'use_collapse_triangulate': True})]], | ModifierSpec('decimate', 'DECIMATE', | ||||
| ["testPlanarDecimate", "expectedPlanarDecimate", | {'decimate_type': 'COLLAPSE', 'ratio': 0.25, 'use_collapse_triangulate': True})]], | ||||
| ["PlanarDecimate", "testPlanarDecimate", "expectedPlanarDecimate", | |||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2}), | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2}), | ||||
| ModifierSpec('decimate', 'DECIMATE', {'decimate_type': 'DISSOLVE', 'angle_limit': math.radians(30)})]], | ModifierSpec('decimate', 'DECIMATE', {'decimate_type': 'DISSOLVE', 'angle_limit': math.radians(30)})]], | ||||
| ["testUnsubdivideDecimate", "expectedUnsubdivideDecimate", | ["UnsubdivideDecimate", "testUnsubdivideDecimate", "expectedUnsubdivideDecimate", | ||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2}), | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2}), | ||||
| ModifierSpec('decimate', 'DECIMATE', {'decimate_type': 'UNSUBDIV', 'iterations': 2})]], | ModifierSpec('decimate', 'DECIMATE', {'decimate_type': 'UNSUBDIV', 'iterations': 2})]], | ||||
| # 5 | # 5 | ||||
| ["testRadialBisectMirror", "expectedRadialBisectMirror", | ["RadialBisectMirror", "testRadialBisectMirror", "expectedRadialBisectMirror", | ||||
| [ModifierSpec('mirror1', 'MIRROR', {'use_bisect_axis': (True, False, False)}), | [ModifierSpec('mirror1', 'MIRROR', {'use_bisect_axis': (True, False, False)}), | ||||
| ModifierSpec('mirror2', 'MIRROR', {'use_bisect_axis': (True, False, False), 'mirror_object': bpy.data.objects["testRadialBisectMirrorHelper"]}), | ModifierSpec('mirror2', 'MIRROR', {'use_bisect_axis': (True, False, False), | ||||
| ModifierSpec('mirror3', 'MIRROR', {'use_axis': (False, True, False), 'use_bisect_axis': (False, True, False), 'use_bisect_flip_axis': (False, True, False), 'mirror_object': bpy.data.objects["testRadialBisectMirrorHelper"]})]], | 'mirror_object': bpy.data.objects["testRadialBisectMirrorHelper"]}), | ||||
| ["regressT58411Mirror", "expectedT58411Mirror", | ModifierSpec('mirror3', 'MIRROR', {'use_axis': (False, True, False), 'use_bisect_axis': (False, True, False), | ||||
| 'use_bisect_flip_axis': (False, True, False), | |||||
| 'mirror_object': bpy.data.objects["testRadialBisectMirrorHelper"]})]], | |||||
| ["T58411Mirror", "regressT58411Mirror", "expectedT58411Mirror", | |||||
| [ModifierSpec('mirror', 'MIRROR', {}), | [ModifierSpec('mirror', 'MIRROR', {}), | ||||
| ModifierSpec('bevel', 'BEVEL', {'segments': 2, 'limit_method': 'WEIGHT'}), | ModifierSpec('bevel', 'BEVEL', {'segments': 2, 'limit_method': 'WEIGHT'}), | ||||
| ModifierSpec('subd', 'SUBSURF', {'levels': 1})]], | ModifierSpec('subd', 'SUBSURF', {'levels': 1})]], | ||||
| ["testBasicScrew", "expectedBasicScrew", | ["BasicScrew", "testBasicScrew", "expectedBasicScrew", | ||||
| [ModifierSpec('mirror', 'MIRROR', {'mirror_object': bpy.data.objects["testBasicScrewHelper"]}), | [ModifierSpec('mirror', 'MIRROR', {'mirror_object': bpy.data.objects["testBasicScrewHelper"]}), | ||||
| ModifierSpec("screw", 'SCREW', {'angle': math.radians(400), 'steps': 20, 'iterations': 2, 'screw_offset': 2, 'use_normal_calculate': True})]], | ModifierSpec("screw", 'SCREW', {'angle': math.radians(400), 'steps': 20, 'iterations': 2, 'screw_offset': 2, | ||||
| ["testObjectScrew", "expectedObjectScrew", | 'use_normal_calculate': True})]], | ||||
| ["ObjectScrew", "testObjectScrew", "expectedObjectScrew", | |||||
| [ModifierSpec('mirror', 'MIRROR', {'mirror_object': bpy.data.objects["testObjectScrewHelper2"]}), | [ModifierSpec('mirror', 'MIRROR', {'mirror_object': bpy.data.objects["testObjectScrewHelper2"]}), | ||||
| ModifierSpec("screw", 'SCREW', {"angle": math.radians(600), 'steps': 32, 'iterations': 1, 'use_object_screw_offset': True, 'use_normal_calculate': True, 'object': bpy.data.objects["testObjectScrewHelper1"]})]], | ModifierSpec("screw", 'SCREW', | ||||
| {"angle": math.radians(600), 'steps': 32, 'iterations': 1, 'use_object_screw_offset': True, | |||||
| 'use_normal_calculate': True, 'object': bpy.data.objects["testObjectScrewHelper1"]})]], | |||||
| # 9 | # 9 | ||||
| ["testMergedScrewWeld", "expectedMergedScrewWeld", | ["MergedScrewWeld", "testMergedScrewWeld", "expectedMergedScrewWeld", | ||||
| [ModifierSpec("screw", 'SCREW', {'angle': math.radians(360), 'steps': 12, 'iterations': 1, 'screw_offset': 1, 'use_normal_calculate': True, 'use_merge_vertices': True}), | [ModifierSpec("screw", 'SCREW', {'angle': math.radians(360), 'steps': 12, 'iterations': 1, 'screw_offset': 1, | ||||
| 'use_normal_calculate': True, 'use_merge_vertices': True}), | |||||
| ModifierSpec("weld", 'WELD', {"merge_threshold": 0.001})]], | ModifierSpec("weld", 'WELD', {"merge_threshold": 0.001})]], | ||||
| ["regressT72380Weld", "expectedT72380Weld", | ["T72380Weld", "regressT72380Weld", "expectedT72380Weld", | ||||
| [ModifierSpec('vedit', 'VERTEX_WEIGHT_EDIT', {'vertex_group': 'Group', 'use_remove': True, 'remove_threshold': 1}), | [ModifierSpec('vedit', 'VERTEX_WEIGHT_EDIT', | ||||
| {'vertex_group': 'Group', 'use_remove': True, 'remove_threshold': 1}), | |||||
| ModifierSpec("weld", 'WELD', {"merge_threshold": 0.2, "vertex_group": "Group"})]], | ModifierSpec("weld", 'WELD', {"merge_threshold": 0.2, "vertex_group": "Group"})]], | ||||
| ["regressT72792Weld", "expectedT72792Weld", | ["T72792Weld", "regressT72792Weld", "expectedT72792Weld", | ||||
| [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIXED_COUNT', 'count': 2}), | [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIXED_COUNT', 'count': 2}), | ||||
| ModifierSpec("weld", 'WELD', {"merge_threshold": 0.1, "vertex_group": "Group"})]], | ModifierSpec("weld", 'WELD', {"merge_threshold": 0.1, "vertex_group": "Group"})]], | ||||
| ############################################ | ############################################ | ||||
| # One 'Generate' modifier on primitive meshes | # One 'Generate' modifier on primitive meshes | ||||
| ############################################# | ############################################# | ||||
| # 12 | # 12 | ||||
| ["testCubeArray", "expectedCubeArray", [ModifierSpec('array', 'ARRAY', {})]], | ["CubeArray", "testCubeArray", "expectedCubeArray", | ||||
| ["testCapArray", "expectedCapArray", | [ModifierSpec('array', 'ARRAY', {})]], | ||||
| [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIT_LENGTH', 'fit_length': 2.0, 'start_cap': bpy.data.objects["testCapStart"], 'end_cap': bpy.data.objects["testCapEnd"]})]], | ["CapArray", "testCapArray", "expectedCapArray", | ||||
| ["testCurveArray", "expectedCurveArray", | [ModifierSpec('array', 'ARRAY', | ||||
| [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIT_CURVE', 'curve': bpy.data.objects["testCurveArrayHelper"], 'use_relative_offset': False, 'use_constant_offset': True, 'constant_offset_displace': (0.5, 0, 0)})]], | {'fit_type': 'FIT_LENGTH', 'fit_length': 2.0, 'start_cap': bpy.data.objects["testCapStart"], | ||||
| ["testRadialArray", "expectedRadialArray", | 'end_cap': bpy.data.objects["testCapEnd"]})]], | ||||
| [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIXED_COUNT', 'count': 3, 'use_merge_vertices': True, 'use_merge_vertices_cap': True, 'use_relative_offset': False, 'use_object_offset': True, 'offset_object': bpy.data.objects["testRadialArrayHelper"]})]], | ["CurveArray", "testCurveArray", "expectedCurveArray", | ||||
| [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIT_CURVE', 'curve': bpy.data.objects["testCurveArrayHelper"], | |||||
| 'use_relative_offset': False, 'use_constant_offset': True, | |||||
| 'constant_offset_displace': (0.5, 0, 0)})]], | |||||
| ["RadialArray", "testRadialArray", "expectedRadialArray", | |||||
| [ModifierSpec('array', 'ARRAY', {'fit_type': 'FIXED_COUNT', 'count': 3, 'use_merge_vertices': True, | |||||
| 'use_merge_vertices_cap': True, 'use_relative_offset': False, | |||||
| 'use_object_offset': True, | |||||
| 'offset_object': bpy.data.objects["testRadialArrayHelper"]})]], | |||||
| ["testCylinderBuild", "expectedCylinderBuild", [ModifierSpec('build', 'BUILD', {'frame_start': 0, 'frame_duration': 1})]], | ["CylinderBuild", "testCylinderBuild", "expectedCylinderBuild", | ||||
| [ModifierSpec('build', 'BUILD', {'frame_start': 0, 'frame_duration': 1})]], | |||||
| # 17 | # 17 | ||||
| ["testConeDecimate", "expectedConeDecimate", [ModifierSpec('decimate', 'DECIMATE', {'ratio': 0.5})]], | ["ConeDecimate", "testConeDecimate", "expectedConeDecimate", | ||||
| ["testCubeEdgeSplit", "expectedCubeEdgeSplit", [ModifierSpec('edge split', 'EDGE_SPLIT', {})]], | [ModifierSpec('decimate', 'DECIMATE', {'ratio': 0.5})]], | ||||
| ["CubeEdgeSplit", "testCubeEdgeSplit", "expectedCubeEdgeSplit", | |||||
| ["testSphereMirror", "expectedSphereMirror", [ModifierSpec('mirror', 'MIRROR', {})]], | [ModifierSpec('edge split', 'EDGE_SPLIT', {})]], | ||||
| ["testLocalMirror", "expectedLocalMirror", | |||||
| ["SphereMirror", "testSphereMirror", "expectedSphereMirror", | |||||
| [ModifierSpec('mirror', 'MIRROR', {})]], | |||||
| ["LocalMirror", "testLocalMirror", "expectedLocalMirror", | |||||
| [ModifierSpec('mirror', 'MIRROR', {'use_clip': True})]], | [ModifierSpec('mirror', 'MIRROR', {'use_clip': True})]], | ||||
| ["testObjectOffsetMirror", "expectedObjectOffsetMirror", | ["ObjectOffsetMirror", "testObjectOffsetMirror", "expectedObjectOffsetMirror", | ||||
| [ModifierSpec('mirror', 'MIRROR', {'mirror_object': bpy.data.objects["testObjectOffsetMirrorHelper"]})]], | [ModifierSpec('mirror', 'MIRROR', {'mirror_object': bpy.data.objects["testObjectOffsetMirrorHelper"]})]], | ||||
| ["testCylinderMask", "expectedCylinderMask", [ModifierSpec('mask', 'MASK', {'vertex_group': "mask_vertex_group"})]], | ["CylinderMask", "testCylinderMask", "expectedCylinderMask", | ||||
| ["testConeMultiRes", "expectedConeMultiRes", [ModifierSpec('multires', 'MULTIRES', {})]], | [ModifierSpec('mask', 'MASK', {'vertex_group': "mask_vertex_group"})]], | ||||
| ["ConeMultiRes", "testConeMultiRes", "expectedConeMultiRes", | |||||
| [ModifierSpec('multires', 'MULTIRES', {})]], | |||||
| # 24 | # 24 | ||||
| ["testCubeScrew", "expectedCubeScrew", [ModifierSpec('screw', 'SCREW', {})]], | ["CubeScrew", "testCubeScrew", "expectedCubeScrew", | ||||
| [ModifierSpec('screw', 'SCREW', {})]], | |||||
| ["testCubeSolidify", "expectedCubeSolidify", [ModifierSpec('solidify', 'SOLIDIFY', {})]], | ["CubeSolidify", "testCubeSolidify", "expectedCubeSolidify", | ||||
| ["testComplexSolidify", "expectedComplexSolidify", | [ModifierSpec('solidify', 'SOLIDIFY', {})]], | ||||
| [ModifierSpec('solidify', 'SOLIDIFY', {'solidify_mode': 'NON_MANIFOLD', 'thickness': 0.05, 'offset': 0, 'nonmanifold_thickness_mode': 'CONSTRAINTS'})]], | ["ComplexSolidify", "testComplexSolidify", "expectedComplexSolidify", | ||||
| ["regressT63063Solidify", "expectedT63063Solidify", | [ModifierSpec('solidify', 'SOLIDIFY', {'solidify_mode': 'NON_MANIFOLD', 'thickness': 0.05, 'offset': 0, | ||||
| 'nonmanifold_thickness_mode': 'CONSTRAINTS'})]], | |||||
| ["T63063Solidify", "regressT63063Solidify", "expectedT63063Solidify", | |||||
| [ModifierSpec('solid', 'SOLIDIFY', {'thickness': 0.1, 'offset': 0.7})]], | [ModifierSpec('solid', 'SOLIDIFY', {'thickness': 0.1, 'offset': 0.7})]], | ||||
| ["regressT61979Solidify", "expectedT61979Solidify", | ["T61979Solidify", "regressT61979Solidify", "expectedT61979Solidify", | ||||
| [ModifierSpec('solid', 'SOLIDIFY', {'thickness': -0.25, 'use_even_offset': True, 'use_quality_normals': True})]], | [ModifierSpec('solid', 'SOLIDIFY', | ||||
| {'thickness': -0.25, 'use_even_offset': True, 'use_quality_normals': True})]], | |||||
| ["testMonkeySubsurf", "expectedMonkeySubsurf", [ModifierSpec('subsurf', 'SUBSURF', {})]], | |||||
| ["testCatmullClarkSubdivisionSurface", "expectedCatmullClarkSubdivisionSurface", | ["MonkeySubsurf", "testMonkeySubsurf", "expectedMonkeySubsurf", | ||||
| [ModifierSpec('subsurf', 'SUBSURF', {})]], | |||||
| ["CatmullClarkSubdivisionSurface", "testCatmullClarkSubdivisionSurface", | |||||
| "expectedCatmullClarkSubdivisionSurface", | |||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2})]], | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2})]], | ||||
| ["testSimpleSubdivisionSurface", "expectedSimpleSubdivisionSurface", | ["SimpleSubdivisionSurface", "testSimpleSubdivisionSurface", "expectedSimpleSubdivisionSurface", | ||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2, 'subdivision_type': 'SIMPLE'})]], | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2, 'subdivision_type': 'SIMPLE'})]], | ||||
| ["testCrease2dSubdivisionSurface", "expectedCrease2dSubdivisionSurface", | ["Crease2dSubdivisionSurface", "testCrease2dSubdivisionSurface", "expectedCrease2dSubdivisionSurface", | ||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2})]], | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2})]], | ||||
| ["testCrease3dSubdivisionSurface", "expectedCrease3dSubdivisionSurface", | ["Crease3dSubdivisionSurface", "testCrease3dSubdivisionSurface", "expectedCrease3dSubdivisionSurface", | ||||
| [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2})]], | [ModifierSpec("subdivision", 'SUBSURF', {"levels": 2})]], | ||||
| # 34 | # 34 | ||||
| ["testSphereTriangulate", "expectedSphereTriangulate", [ModifierSpec('triangulate', 'TRIANGULATE', {})]], | ["SphereTriangulate", "testSphereTriangulate", "expectedSphereTriangulate", | ||||
| ["testMonkeyWireframe", "expectedMonkeyWireframe", [ModifierSpec('wireframe', 'WIREFRAME', {})]], | [ModifierSpec('triangulate', 'TRIANGULATE', {})]], | ||||
| #ModifierSpec('skin', 'SKIN', {}), # skin is not reproducible . | ["MonkeyWireframe", "testMonkeyWireframe", "expectedMonkeyWireframe", | ||||
| [ModifierSpec('wireframe', 'WIREFRAME', {})]], | |||||
| # Duplicate the object, test object and expected object have same world coordinates. | |||||
| ["Skin", "testObjPlaneSkin", "expObjPlaneSkin", | |||||
| [ModifierSpec('skin', 'SKIN', {})]], | |||||
| ["testMergedWeld", "expectedMergedWeld", | ["MergedWeld", "testMergedWeld", "expectedMergedWeld", | ||||
| [ModifierSpec("weld", 'WELD', {"merge_threshold": 0.021})]], | [ModifierSpec("weld", 'WELD', {"merge_threshold": 0.021})]], | ||||
| ["testMergedAllWeld", "expectedMergedAllWeld", | ["MergedAllWeld", "testMergedAllWeld", "expectedMergedAllWeld", | ||||
| [ModifierSpec("weld", 'WELD', {"merge_threshold": 1.1})]], | [ModifierSpec("weld", 'WELD', {"merge_threshold": 1.1})]], | ||||
| ["testMergedNoneWeld", "expectedMergedNoneWeld", | ["MergedNoneWeld", "testMergedNoneWeld", "expectedMergedNoneWeld", | ||||
| [ModifierSpec("weld", 'WELD', {"merge_threshold": 0.019})]], | [ModifierSpec("weld", 'WELD', {"merge_threshold": 0.019})]], | ||||
| ############################################# | ############################################# | ||||
| # One 'Deform' modifier on primitive meshes | # One 'Deform' modifier on primitive meshes | ||||
| ############################################# | ############################################# | ||||
| # 39 | # 39 | ||||
| ["testMonkeyArmature", "expectedMonkeyArmature", | ["MonkeyArmature", "testMonkeyArmature", "expectedMonkeyArmature", | ||||
| [ModifierSpec('armature', 'ARMATURE', {'object': bpy.data.objects['testArmature'], 'use_vertex_groups': True})]], | [ModifierSpec('armature', 'ARMATURE', | ||||
| ["testTorusCast", "expectedTorusCast", [ModifierSpec('cast', 'CAST', {'factor': 2.64})]], | {'object': bpy.data.objects['testArmature'], 'use_vertex_groups': True})]], | ||||
| ["testCubeCurve", "expectedCubeCurve", | ["TorusCast", "testTorusCast", "expectedTorusCast", | ||||
| [ModifierSpec('cast', 'CAST', {'factor': 2.64})]], | |||||
| ["CubeCurve", "testCubeCurve", "expectedCubeCurve", | |||||
| [ModifierSpec('curve', 'CURVE', {'object': bpy.data.objects['testBezierCurve']})]], | [ModifierSpec('curve', 'CURVE', {'object': bpy.data.objects['testBezierCurve']})]], | ||||
| ["testMonkeyDisplace", "expectedMonkeyDisplace", [ModifierSpec('displace', "DISPLACE", {})]], | ["MonkeyDisplace", "testMonkeyDisplace", "expectedMonkeyDisplace", | ||||
| [ModifierSpec('displace', "DISPLACE", {})]], | |||||
| # Hook modifier requires moving the hook object to get a mesh change, so can't test it with the current framework | # Hook modifier requires moving the hook object to get a mesh change | ||||
| # ["testMonkeyHook", "expectedMonkeyHook", | # so can't test it with the current framework | ||||
| # ["MonkeyHook", "testMonkeyHook", "expectedMonkeyHook", | |||||
| # [ModifierSpec('hook', 'HOOK', {'object': bpy.data.objects["EmptyHook"], 'vertex_group': "HookVertexGroup"})]], | # [ModifierSpec('hook', 'HOOK', {'object': bpy.data.objects["EmptyHook"], 'vertex_group': "HookVertexGroup"})]], | ||||
| # 43 | # 43 | ||||
| #ModifierSpec('laplacian_deform', 'LAPLACIANDEFORM', {}) Laplacian requires a more complex mesh | # ModifierSpec('laplacian_deform', 'LAPLACIANDEFORM', {}) Laplacian requires a more complex mesh | ||||
| ["testCubeLattice", "expectedCubeLattice", | ["CubeLattice", "testCubeLattice", "expectedCubeLattice", | ||||
| [ModifierSpec('lattice', 'LATTICE', {'object': bpy.data.objects["testLattice"]})]], | [ModifierSpec('lattice', 'LATTICE', {'object': bpy.data.objects["testLattice"]})]], | ||||
| # ModifierSpec('laplacian_deform', 'LAPLACIANDEFORM', {}) Laplacian requires a more complex mesh | ["PlaneShrinkWrap", "testPlaneShrinkWrap", "expectedPlaneShrinkWrap", | ||||
| # Mesh Deform Modifier requires user input, so skip. | |||||
| # mesh_test = MeshTest("testMonkeyDeform", "expectedMonkeyDeform",[ | |||||
| # ModifierSpec('mesh_deform', 'MESH_DEFORM', {'object': bpy.data.objects["testDeformStructure"]}), | |||||
| # OperatorSpec('meshdeform_bind',{'modifier':'MeshDeform'},'FACE',{i for in range(500)}) | |||||
| # ] ,True) | |||||
| ["testPlaneShrinkWrap", "expectedPlaneShrinkWrap", | |||||
| [ModifierSpec('shrinkwrap', 'SHRINKWRAP', {'target': bpy.data.objects["testCubeWrap"], 'offset': 0.5})]], | [ModifierSpec('shrinkwrap', 'SHRINKWRAP', {'target': bpy.data.objects["testCubeWrap"], 'offset': 0.5})]], | ||||
| ["testCylinderSimpleDeform", "expectedCylinderSimpleDeform", | ["CylinderSimpleDeform", "testCylinderSimpleDeform", "expectedCylinderSimpleDeform", | ||||
| [ModifierSpec('simple_deform', 'SIMPLE_DEFORM', {'angle': math.radians(180), 'deform_axis': 'Z'})]], | [ModifierSpec('simple_deform', 'SIMPLE_DEFORM', {'angle': math.radians(180), 'deform_axis': 'Z'})]], | ||||
| ["testPlaneSmooth", "expectedPlaneSmooth", | ["PlaneSmooth", "testPlaneSmooth", "expectedPlaneSmooth", | ||||
| [ModifierSpec('smooth', 'SMOOTH', {'iterations': 11})]], | [ModifierSpec('smooth', 'SMOOTH', {'iterations': 11})]], | ||||
| # Smooth corrective requires a complex mesh. | # Smooth corrective requires a complex mesh. | ||||
| ["testBalloonLaplacianSmooth", "expectedBalloonLaplacianSmooth", | ["BalloonLaplacianSmooth", "testBalloonLaplacianSmooth", "expectedBalloonLaplacianSmooth", | ||||
| [ModifierSpec('laplaciansmooth', 'LAPLACIANSMOOTH', {'lambda_factor': 12, 'lambda_border': 12})]], | [ModifierSpec('laplaciansmooth', 'LAPLACIANSMOOTH', {'lambda_factor': 12, 'lambda_border': 12})]], | ||||
| # Surface Deform and Warp requires user input, so skip. | # Gets updated often | ||||
| ["WavePlane", "testObjPlaneWave", "expObjPlaneWave", | |||||
| [ModifierSpec('wave', 'WAVE', {})]], | |||||
| ############################################# | |||||
| # CURVES Generate Modifiers | |||||
| ############################################# | |||||
| # Caution: Make sure test object has no modifier in "added" state, the test may fail. | |||||
| ["BezCurveArray", "testObjBezierCurveArray", "expObjBezierCurveArray", | |||||
| [ModifierSpec('array', 'ARRAY', {})]], | |||||
| ["CurveBevel", "testObjBezierCurveBevel", "expObjBezierCurveBevel", | |||||
| [ModifierSpec('bevel', 'BEVEL', {})]], | |||||
| ["CurveBuild", "testObjBezierCurveBuild", "expObjBezierCurveBuild", | |||||
| [ModifierSpec('build', 'BUILD', {'frame_start': 0, 'frame_duration': 1})]], | |||||
| ["CurveDecimate", "testObjBezierCurveDecimate", "expObjBezierCurveDecimate", | |||||
| [ModifierSpec('decimate', 'DECIMATE', {'ratio':0.5})]], | |||||
| ["CurveEdgeSplit", "testObjBezierCurveEdgeSplit", "expObjBezierCurveEdgeSplit", | |||||
| [ModifierSpec('edgeSplit', 'EDGE_SPLIT', {})]], | |||||
| ["CurveMirror", "testObjBezierCurveMirror", "expObjBezierCurveMirror", | |||||
| [ModifierSpec('mirror', 'MIRROR', {'use_axis': (True, True, False)})]], | |||||
| ["CurveScrew", "testObjBezierCurveScrew", "expObjBezierCurveScrew", | |||||
| [ModifierSpec('screw', 'SCREW', {})]], | |||||
| ["CurveSolidify", "testObjBezierCurveSolidify", "expObjBezierCurveSolidify", | |||||
| [ModifierSpec('solidify', 'SOLIDIFY', {'thickness':1})]], | |||||
| ["CurveSubSurf", "testObjBezierCurveSubSurf", "expObjBezierCurveSubSurf", | |||||
| [ModifierSpec('subSurf', 'SUBSURF', {})]], | |||||
| ["CurveTriangulate", "testObjBezierCurveTriangulate", "expObjBezierCurveTriangulate", | |||||
| [ModifierSpec('triangulate', 'TRIANGULATE', {})]], | |||||
| # Test 60 | |||||
| # Caution Weld: if the distance is increased beyond a limit, the object disappears | |||||
| ["CurveWeld", "testObjBezierCurveWeld", "expObjBezierCurveWeld", | |||||
| [ModifierSpec('weld', 'WELD', {})]], | |||||
| ["CurveWeld2", "testObjBezierCurveWeld2", "expObjBezierCurveWeld2", | |||||
| [ModifierSpec('weld', 'WELD', {})]], | |||||
| ############################################# | |||||
| # Curves Deform Modifiers | |||||
| ############################################# | |||||
| # Test 62 | |||||
| ["CurveCast", "testObjBezierCurveCast", "expObjBezierCurveCast", | |||||
| [ModifierSpec('Cast', 'CAST', {'cast_type': 'CYLINDER', 'factor': 10})]], | |||||
| ["CurveShrinkWrap", "testObjBezierCurveShrinkWrap", "expObjBezierCurveShrinkWrap", | |||||
| [ModifierSpec('ShrinkWrap', 'SHRINKWRAP', {'target': bpy.data.objects['testShrinkWrapHelperSuzanne']})]], | |||||
| ["CurveSimpleDeform", "testObjBezierCurveSimpleDeform", "expObjBezierCurveSimpleDeform", | |||||
| [ModifierSpec('simple_deform', 'SIMPLE_DEFORM', {'angle': math.radians(90)})]], | |||||
| ["CurveSmooth", "testObjBezierCurveSmooth", "expObjBezierCurveSmooth", | |||||
| [ModifierSpec('smooth', 'SMOOTH', {'factor': 10})]], | |||||
| ["CurveWave", "testObjBezierCurveWave", "expObjBezierCurveWave", | |||||
| [ModifierSpec('curve_wave', 'WAVE', {'time_offset': -1.5})]], | |||||
| ["CurveCurve", "testObjBezierCurveCurve", "expObjBezierCurveCurve", | |||||
| [ModifierSpec('curve_Curve', 'CURVE', {'object': bpy.data.objects['NurbsCurve']})]], | |||||
| # Wave - requires complex mesh, so skip. | |||||
| ] | ] | ||||
| modifiers_test = ModifierTest(tests) | modifiers_test = ModifierTest(tests) | ||||
| command = list(sys.argv) | command = list(sys.argv) | ||||
| for i, cmd in enumerate(command): | for i, cmd in enumerate(command): | ||||
| if cmd == "--run-all-tests": | if cmd == "--run-all-tests": | ||||
| modifiers_test.apply_modifiers = True | modifiers_test.apply_modifiers = True | ||||
| modifiers_test.run_all_tests() | modifiers_test.run_all_tests() | ||||
| break | break | ||||
| elif cmd == "--run-test": | elif cmd == "--run-test": | ||||
| modifiers_test.apply_modifiers = False | modifiers_test.apply_modifiers = False | ||||
| index = int(command[i + 1]) | name = str(command[i + 1]) | ||||
| modifiers_test.run_test(index) | modifiers_test.run_test(name) | ||||
| break | break | ||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| main() | main() | ||||