Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-01-16 20:16:55 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-01-16 20:16:55 +0400
commitae9582836e047b1da87f8178e34ad63ed0b9824e (patch)
tree911793598d6354cca71ae41cba131d2cd3ce7d0a /source/tests
parente1dd245a1ed65aa4dea22eac8a356b37182924dd (diff)
update to modifier testing script
added presets for hook/decimate/build/mask
Diffstat (limited to 'source/tests')
-rw-r--r--source/tests/bl_mesh_modifiers.py152
1 files changed, 124 insertions, 28 deletions
diff --git a/source/tests/bl_mesh_modifiers.py b/source/tests/bl_mesh_modifiers.py
index af6aaae819c..6a4e46a1832 100644
--- a/source/tests/bl_mesh_modifiers.py
+++ b/source/tests/bl_mesh_modifiers.py
@@ -25,7 +25,12 @@
# Later, we may have a way to check the results are valid.
-# ./blender.bin --factory-startup --python bl_mesh_modifiers.py
+# ./blender.bin --factory-startup --python source/tests/bl_mesh_modifiers.py
+#
+
+import math
+
+USE_QUICK_RENDER = False
# -----------------------------------------------------------------------------
@@ -45,6 +50,7 @@ def render_gl(context, filepath, shade):
render = scene.render
render.filepath = filepath
render.image_settings.file_format = 'PNG'
+ render.image_settings.color_mode = 'RGB'
render.use_file_extension = True
render.use_antialiasing = False
@@ -60,8 +66,8 @@ def render_gl(context, filepath, shade):
# stop to inspect!
- # if filepath == "test_cube_shell_solidify_subsurf_ob_textured":
- # assert(0)
+ #~ if filepath == "test_cube_like_subsurf_single_wp_wire":
+ #~ assert(0)
def render_gl_all_modes(context, obj, filepath=""):
@@ -79,8 +85,12 @@ def render_gl_all_modes(context, obj, filepath=""):
scene.tool_settings.mesh_select_mode = False, True, False
# render
- render_gl(context, filepath + "_ob_wire", shade='WIREFRAME')
render_gl(context, filepath + "_ob_solid", shade='SOLID')
+
+ if USE_QUICK_RENDER:
+ return
+
+ render_gl(context, filepath + "_ob_wire", shade='WIREFRAME')
render_gl(context, filepath + "_ob_textured", shade='TEXTURED')
# -------------------------------------------------------------------------
@@ -195,6 +205,11 @@ def defaults_object(obj):
face.use_smooth = True
+def defaults_modifier(mod):
+ mod.show_in_editmode = True
+ mod.show_on_cage = True
+
+
# -----------------------------------------------------------------------------
# models (utils)
@@ -268,34 +283,33 @@ def mesh_armature_add(obj, mode=0):
# -----------------------------------------------------------------------------
# modifiers
-def modifier_subsurf_add(obj, levels=2):
+def modifier_subsurf_add(scene, obj, levels=2):
mod = obj.modifiers.new(name=whoami(), type='SUBSURF')
- mod.show_in_editmode = True
+ defaults_modifier(mod)
mod.levels = levels
mod.render_levels = levels
return mod
-def modifier_armature_add(obj):
+def modifier_armature_add(scene, obj):
mod = obj.modifiers.new(name=whoami(), type='ARMATURE')
- mod.show_in_editmode = True
+ defaults_modifier(mod)
arm_data = bpy.data.armatures.new(whoami())
- arm_ob = bpy.data.objects.new(whoami(), arm_data)
+ obj_arm = bpy.data.objects.new(whoami(), arm_data)
- scene = bpy.context.scene
- scene.objects.link(arm_ob)
+ scene.objects.link(obj_arm)
- arm_ob.select = True
- scene.objects.active = arm_ob
+ obj_arm.select = True
+ scene.objects.active = obj_arm
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
# XXX, annoying, remove bone.
while arm_data.edit_bones:
- arm_ob.edit_bones.remove(arm_data.edit_bones[-1])
+ obj_arm.edit_bones.remove(arm_data.edit_bones[-1])
bone_a = arm_data.edit_bones.new("Bone.A")
bone_b = arm_data.edit_bones.new("Bone.B")
@@ -310,17 +324,17 @@ def modifier_armature_add(obj):
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
# 45d armature
- arm_ob.pose.bones["Bone.B"].rotation_quaternion = 1, -0.5, 0, 0
+ obj_arm.pose.bones["Bone.B"].rotation_quaternion = 1, -0.5, 0, 0
# set back to the original
scene.objects.active = obj
# display options
- arm_ob.show_x_ray = True
+ obj_arm.show_x_ray = True
arm_data.draw_type = 'STICK'
# apply to modifier
- mod.object = arm_ob
+ mod.object = obj_arm
mesh_vgroup_add(obj, name="Bone.A", axis=0, invert=True)
mesh_vgroup_add(obj, name="Bone.B", axis=0, invert=False)
@@ -328,22 +342,86 @@ def modifier_armature_add(obj):
return mod
-def modifier_mirror_add(obj):
+def modifier_mirror_add(scene, obj):
mod = obj.modifiers.new(name=whoami(), type='MIRROR')
- mod.show_in_editmode = True
+ defaults_modifier(mod)
return mod
-def modifier_solidify_add(obj, thickness=0.25):
+def modifier_solidify_add(scene, obj, thickness=0.25):
mod = obj.modifiers.new(name=whoami(), type='SOLIDIFY')
- mod.show_in_editmode = True
+ defaults_modifier(mod)
mod.thickness = thickness
return mod
+def modifier_hook_add(scene, obj, use_vgroup=True):
+ scene.objects.active = obj
+
+ # no nice way to add hooks from py api yet
+ # assume object mode, hook first face!
+ mesh = obj.data
+
+ if use_vgroup:
+ for v in mesh.vertices:
+ v.select = True
+ else:
+ for v in mesh.vertices:
+ v.select = False
+ for i in mesh.faces[0].vertices:
+ mesh.vertices[i].select = True
+
+ bpy.ops.object.mode_set(mode='EDIT', toggle=False)
+ bpy.ops.object.hook_add_newob()
+ bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
+
+ # mod = obj.modifiers.new(name=whoami(), type='HOOK')
+ mod = obj.modifiers[-1]
+ defaults_modifier(mod)
+
+ obj_hook = mod.object
+ obj_hook.rotation_euler = 0, math.radians(45), 0
+ obj_hook.show_x_ray = True
+
+ if use_vgroup:
+ mod.vertex_group = obj.vertex_groups[0].name
+
+ return mod
+
+
+def modifier_decimate_add(scene, obj):
+ mod = obj.modifiers.new(name=whoami(), type='DECIMATE')
+ defaults_modifier(mod)
+
+ mod.ratio = 1 / 3
+
+ return mod
+
+
+def modifier_build_add(scene, obj):
+ mod = obj.modifiers.new(name=whoami(), type='BUILD')
+ defaults_modifier(mod)
+
+ # ensure we display some faces
+ totface = len(obj.data.faces)
+ mod.frame_start = totface // 2
+ mod.frame_duration = totface
+
+ return mod
+
+
+def modifier_mask_add(scene, obj):
+ mod = obj.modifiers.new(name=whoami(), type='MASK')
+ defaults_modifier(mod)
+
+ mod.vertex_group = obj.vertex_groups[0].name
+
+ return mod
+
+
# -----------------------------------------------------------------------------
# models
@@ -578,6 +656,22 @@ global_tests.append(("mirror_single",
((modifier_mirror_add, dict()), ),
))
+global_tests.append(("hook_single",
+ ((modifier_hook_add, dict()), ),
+ ))
+
+global_tests.append(("decimate_single",
+ ((modifier_decimate_add, dict()), ),
+ ))
+
+global_tests.append(("build_single",
+ ((modifier_build_add, dict()), ),
+ ))
+
+global_tests.append(("mask_single",
+ ((modifier_mask_add, dict()), ),
+ ))
+
# combinations
global_tests.append(("mirror_subsurf",
@@ -591,7 +685,7 @@ global_tests.append(("solidify_subsurf",
))
-def apply_test(test, obj,
+def apply_test(test, scene, obj,
render_func=None,
render_args=None,
render_kwargs=None,
@@ -600,7 +694,7 @@ def apply_test(test, obj,
test_name, test_funcs = test
for cb, kwargs in test_funcs:
- cb(obj, **kwargs)
+ cb(scene, obj, **kwargs)
render_kwargs_copy = render_kwargs.copy()
@@ -612,14 +706,16 @@ def apply_test(test, obj,
# -----------------------------------------------------------------------------
# tests themselves!
+# having the 'test_' prefix automatically means these functions are called
+# for testing
def test_cube(context, test):
scene = context.scene
obj = make_cube_extra(scene)
- ctx_camera_setup(context, location=(4, 4, 4))
+ ctx_camera_setup(context, location=(3, 3, 3))
- apply_test(test, obj,
+ apply_test(test, scene, obj,
render_func=render_gl_all_modes,
render_args=(context, obj),
render_kwargs=dict(filepath=whoami()))
@@ -630,7 +726,7 @@ def test_cube_like(context, test):
obj = make_cube_like_extra(scene)
ctx_camera_setup(context, location=(5, 5, 5))
- apply_test(test, obj,
+ apply_test(test, scene, obj,
render_func=render_gl_all_modes,
render_args=(context, obj),
render_kwargs=dict(filepath=whoami()))
@@ -641,7 +737,7 @@ def test_cube_shell(context, test):
obj = make_cube_shell_extra(scene)
ctx_camera_setup(context, location=(4, 4, 4))
- apply_test(test, obj,
+ apply_test(test, scene, obj,
render_func=render_gl_all_modes,
render_args=(context, obj),
render_kwargs=dict(filepath=whoami()))
@@ -682,7 +778,6 @@ if __name__ == "__main__":
bpy.app.handlers.scene_update_post.remove(load_handler)
try:
main()
-
import sys
sys.exit(0)
except:
@@ -691,6 +786,7 @@ if __name__ == "__main__":
import sys
# sys.exit(1) # comment to debug
+
else:
load_handler.first = False