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>2009-12-05 23:45:51 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-12-05 23:45:51 +0300
commit651336d5dfdea5faaebb26e5e153efd65676631a (patch)
treef172bbbbf960ca875fac3a5eae734f86f7315fa4 /release/scripts
parentbca53f09060e8686fe824f0353881ef0671997f8 (diff)
fixes for automatic tests and some errors in last commit
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/modules/bpy/__init__.py21
-rw-r--r--release/scripts/modules/graphviz_export.py15
-rw-r--r--release/scripts/modules/rigify/__init__.py3
-rw-r--r--release/scripts/modules/rigify/arm.py5
-rw-r--r--release/scripts/modules/rigify/finger.py2
-rw-r--r--release/scripts/modules/rigify/leg.py15
-rw-r--r--release/scripts/modules/rigify/spine.py24
7 files changed, 57 insertions, 28 deletions
diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py
index 0df11659336..72ef4ae3bd8 100644
--- a/release/scripts/modules/bpy/__init__.py
+++ b/release/scripts/modules/bpy/__init__.py
@@ -31,17 +31,28 @@ from bpy import ops as _ops_module
# fake operator module
ops = _ops_module.ops_fake_module
+import sys
+DEBUG = ("-d" in sys.argv)
+
def load_scripts(reload_scripts=False):
import os
- import sys
import traceback
+ import time
+
+
+ t_main = time.time()
def test_import(module_name):
try:
- return __import__(module_name)
+ t = time.time()
+ ret= __import__(module_name)
+ if DEBUG:
+ print("time %s %.4f" % (module_name, time.time() - t))
+ return ret
except:
traceback.print_exc()
return None
+
for base_path in utils.script_paths():
for path_subdir in ("ui", "op", "io"):
@@ -62,6 +73,9 @@ def load_scripts(reload_scripts=False):
print("Reloading:", mod)
reload(mod)
+ if DEBUG:
+ print("Time %.4f" % (time.time() - t_main))
+
def _main():
# a bit nasty but this prevents help() and input() from locking blender
@@ -70,7 +84,8 @@ def _main():
import sys
sys.stdin = None
- if "-d" in sys.argv and False: # Enable this to measure startup speed
+ # if "-d" in sys.argv: # Enable this to measure startup speed
+ if 0:
import cProfile
cProfile.run('import bpy; bpy.load_scripts()', 'blender.prof')
diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py
index 5d0ff4fe824..5227237c51b 100644
--- a/release/scripts/modules/graphviz_export.py
+++ b/release/scripts/modules/graphviz_export.py
@@ -47,7 +47,8 @@ def compat_str(text, line_length=0):
text = text.replace('"', '\\"')
return "* " + text
-def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True):
+def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=False):
+ CONSTRAINTS = DRIVERS = True
file = open(path, "w")
fw = file.write
@@ -76,7 +77,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True):
label.append("%s = %s" % (key, value))
- opts = ["shape=box", "regular=1", "style=filled", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))]
+ opts = ["shape=box", "regular=1", "style=filled", "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))]
if bone.name.startswith('ORG'):
opts.append("fillcolor=yellow")
@@ -123,8 +124,9 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True):
if subtarget:
# TODO, not internal links
opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"', 'labelfontsize=4']
- label = "%s\n%s" % (constraint.type, constraint.name)
- opts.append('label="%s"' % compat_str(label))
+ if XTRA_INFO:
+ label = "%s\n%s" % (constraint.type, constraint.name)
+ opts.append('label="%s"' % compat_str(label))
fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts)))
# Drivers
@@ -157,8 +159,9 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True):
opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=4"] # ,
display_source = rna_path.replace("pose.bones", "")
display_target = rna_path_target.replace("pose.bones", "")
- label = "%s\\n%s" % (display_source, display_target)
- opts.append('label="%s"' % compat_str(label))
+ if XTRA_INFO:
+ label = "%s\\n%s" % (display_source, display_target)
+ opts.append('label="%s"' % compat_str(label))
fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts)))
fw(footer)
diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py
index f6397fa94dc..94f509a40e9 100644
--- a/release/scripts/modules/rigify/__init__.py
+++ b/release/scripts/modules/rigify/__init__.py
@@ -164,7 +164,7 @@ def get_bone_data(obj, bone_name):
def copy_bone_simple(arm, from_bone, name, parent=False):
ebone = arm.edit_bones[from_bone]
ebone_new = arm.edit_bones.new(name)
-
+
if parent:
ebone_new.connected = ebone.connected
ebone_new.parent = ebone.parent
@@ -429,6 +429,7 @@ def generate_rig(context, obj_orig, prefix="ORG-"):
bone_typeinfo = bone_typeinfos.setdefault(bone_name, [])
+
type_func = getattr(submod, func_name)
bone_typeinfo.append((submod_name, type_func))
diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py
index af2d08307dd..56b607fbd41 100644
--- a/release/scripts/modules/rigify/arm.py
+++ b/release/scripts/modules/rigify/arm.py
@@ -338,10 +338,7 @@ def main(obj, definitions, base_names):
bpy.ops.object.mode_set(mode='EDIT')
# remove the shoulder and re-parent
-
-
-
- chain_init()
+
chain_ik()
chain_switch()
chain_shoulder()
diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py
index c839f20e71f..44262e22bf6 100644
--- a/release/scripts/modules/rigify/finger.py
+++ b/release/scripts/modules/rigify/finger.py
@@ -98,7 +98,7 @@ def main(obj, bone_definition, base_names):
# first make a new bone at the location of the finger
#control_ebone = arm.edit_bones.new(base_name)
- control_ebone = copy_bone_simple(arm, base_name, base_name)
+ control_ebone = copy_bone_simple(arm, bone_definition[0], base_name)
control_bone_name = control_ebone.name # we dont know if we get the name requested
control_ebone.connected = orig_ebone.connected
diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py
index 589e295101c..1228e2ed78a 100644
--- a/release/scripts/modules/rigify/leg.py
+++ b/release/scripts/modules/rigify/leg.py
@@ -17,7 +17,7 @@
# ##### END GPL LICENSE BLOCK #####
import bpy
-from rigify import bone_class_instance, copy_bone_simple, copy_bone_simple_list, add_pole_target_bone, add_stretch_to
+from rigify import bone_class_instance, copy_bone_simple, copy_bone_simple_list, add_pole_target_bone, add_stretch_to, blend_bone_list
from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get
METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel"
@@ -249,7 +249,9 @@ def ik(obj, bone_definition, base_names):
else:
con.minimum_x = -180.0 # XXX -deg
con.maximum_x = 0.0
-
+
+ bpy.ops.object.mode_set(mode='EDIT')
+
return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None
@@ -323,5 +325,14 @@ def fk(obj, bone_definition, base_names):
mod.coefficients[0] = 1.0
mod.coefficients[1] = -1.0
+ bpy.ops.object.mode_set(mode='EDIT')
+
# dont blend the hips or heel
return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None
+
+def main(obj, bone_definition, base_names):
+ bones_ik = ik(obj, bone_definition, base_names)
+ bones_fk = fk(obj, bone_definition, base_names)
+
+ bpy.ops.object.mode_set(mode='OBJECT')
+ blend_bone_list(obj, bone_definition, bones_ik, bones_fk)
diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py
index 4fa8d363934..20ba48bfef9 100644
--- a/release/scripts/modules/rigify/spine.py
+++ b/release/scripts/modules/rigify/spine.py
@@ -123,10 +123,12 @@ def main(obj, bone_definition, base_names):
mt.ribcage = bone_definition[1]
mt.update()
- spine_chain_orig = bone_definition[2:]
+ spine_chain_orig = tuple(bone_definition[2:])
spine_chain = [arm.edit_bones[child_name] for child_name in spine_chain_orig]
- spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1) # probably 'ORG-spine.01' -> 'spine'
+ spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1)[0] # probably 'ORG-spine.01' -> 'spine'
spine_chain_len = len(spine_chain_orig)
+ print(spine_chain_orig)
+ print(spine_chain_len)
'''
children = mt.ribcage_e.children
@@ -180,10 +182,6 @@ def main(obj, bone_definition, base_names):
ex.ribcage_e.translate(Vector(0.0, -ex.ribcage_e.length / 2.0, 0.0))
ex.ribcage_e.parent = mt.ribcage_e
- # rename!
- for child in spine_chain:
- child.name = "ORG-" + child.name
-
spine_chain = [child.name for child in spine_chain]
# We have 3 spine chains
@@ -198,11 +196,11 @@ def main(obj, bone_definition, base_names):
del spine_chain_attrs
for i, child_name in enumerate(spine_chain):
- child_name_orig = spine_chain_orig[i]
+ child_name_orig = base_names[spine_chain_orig[i]]
attr = mt_chain.attr_names[i] # eg. spine_04
- setattr(mt_chain, attr, spine_chain[i]) # use the new name
+ setattr(mt_chain, attr, spine_chain_orig[i]) # the original bone
ebone = copy_bone_simple(arm, child_name, child_name_orig) # use the original name
setattr(ex_chain, attr, ebone.name)
@@ -210,7 +208,7 @@ def main(obj, bone_definition, base_names):
ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig)
setattr(rv_chain, attr, ebone.name)
ebone.connected = False
-
+
mt_chain.update()
ex_chain.update()
rv_chain.update()
@@ -284,7 +282,7 @@ def main(obj, bone_definition, base_names):
con.target = obj
con.subtarget = ex.pelvis
con.owner_space = 'LOCAL'
- con.target_space = 'LOCAL'
+ con.target_space = 'LOCAL'
# df.ribcage_p / DEF-wgt_rib_cage
con = df.ribcage_p.constraints.new('COPY_ROTATION')
@@ -332,10 +330,14 @@ def main(obj, bone_definition, base_names):
con = ex.pelvis_p.constraints.new('COPY_LOCATION')
con.target = obj
con.subtarget = mt_chain.spine_01
+ con.owner_space = 'WORLD'
+ con.target_space = 'WORLD'
con = ex.pelvis_p.constraints.new('COPY_ROTATION')
con.target = obj
con.subtarget = mt_chain.spine_01
+ con.owner_space = 'WORLD'
+ con.target_space = 'WORLD'
# ex.ribcage_p / MCH-wgt_rib_cage
con = ex.ribcage_p.constraints.new('COPY_LOCATION')
@@ -424,7 +426,7 @@ def main(obj, bone_definition, base_names):
# original bone drivers
# note: the first bone has a lot more constraints, but also this simple one is first.
- for i in attr, enumerate(mt_chain.attr_names):
+ for i, attr in enumerate(mt_chain.attr_names):
spine_p = getattr(mt_chain, attr + "_p")
con = spine_p.constraints.new('COPY_ROTATION')