[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33981] trunk/blender/release/scripts/op/ io_anim_bvh/export_bvh.py: pep8 cleanup
Campbell Barton
ideasman42 at gmail.com
Sat Jan 1 09:44:18 CET 2011
Revision: 33981
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33981
Author: campbellbarton
Date: 2011-01-01 09:44:17 +0100 (Sat, 01 Jan 2011)
Log Message:
-----------
pep8 cleanup
Modified Paths:
--------------
trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py
Modified: trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py
===================================================================
--- trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py 2011-01-01 08:35:38 UTC (rev 33980)
+++ trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py 2011-01-01 08:44:17 UTC (rev 33981)
@@ -29,20 +29,20 @@
# Window.EditMode(0)
- file = open(filepath, 'w')
-
+ file = open(filepath, "w")
+
# bvh_nodes = {}
arm_data = obj.data
bones = arm_data.bones.values()
-
+
# Build a dictionary of bone children.
# None is for parentless bones
bone_children = {None: []}
-
+
# initialize with blank lists
for bone in bones:
bone_children[bone.name] = []
-
+
for bone in bones:
parent = bone.parent
bone_name = bone.name
@@ -50,11 +50,11 @@
bone_children[parent.name].append(bone_name)
else: # root node
bone_children[None].append(bone_name)
-
+
# sort the children
for children_list in bone_children.values():
children_list.sort()
-
+
# build a (name:bone) mapping dict
bone_dict = {}
for bone in bones:
@@ -62,133 +62,125 @@
# bone name list in the order that the bones are written
bones_serialized_names = []
-
+
bone_locs = {}
-
- file.write('HIERARCHY\n')
-
+
+ file.write("HIERARCHY\n")
+
def write_bones_recursive(bone_name, indent):
my_bone_children = bone_children[bone_name]
-
- indent_str = '\t' * indent # cache?
-
+
+ indent_str = "\t" * indent
+
bone = bone_dict[bone_name]
loc = bone.head_local
bone_locs[bone_name] = loc
-
+
# make relative if we can
if bone.parent:
loc = loc - bone_locs[bone.parent.name]
-
+
if indent:
- file.write('%sJOINT %s\n' % (indent_str, bone_name))
+ file.write("%sJOINT %s\n" % (indent_str, bone_name))
else:
- file.write('%sROOT %s\n' % (indent_str, bone_name))
-
- file.write('%s{\n' % indent_str)
- file.write('%s\tOFFSET %.6f %.6f %.6f\n' % (indent_str, loc.x * pref_scale, loc.y * pref_scale, loc.z * pref_scale))
- file.write('%s\tCHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation\n' % indent_str)
-
-
+ file.write("%sROOT %s\n" % (indent_str, bone_name))
+
+ file.write("%s{\n" % indent_str)
+ file.write("%s\tOFFSET %.6f %.6f %.6f\n" % (indent_str, loc.x * pref_scale, loc.y * pref_scale, loc.z * pref_scale))
+ file.write("%s\tCHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation Zrotation\n" % indent_str)
+
if my_bone_children:
-
# store the location for the children
# to het their relative offset
-
- # Write children
+
+ # Write children
for child_bone in my_bone_children:
bones_serialized_names.append(child_bone)
write_bones_recursive(child_bone, indent + 1)
-
+
else:
# Write the bone end.
- file.write('%s\tEnd Site\n' % indent_str)
- file.write('%s\t{\n' % indent_str)
+ file.write("%s\tEnd Site\n" % indent_str)
+ file.write("%s\t{\n" % indent_str)
loc = bone.tail_local - bone_locs[bone_name]
- file.write('%s\t\tOFFSET %.6f %.6f %.6f\n' % (indent_str, loc.x * pref_scale, loc.y * pref_scale, loc.z * pref_scale))
- file.write('%s\t}\n' % indent_str)
-
- file.write('%s}\n' % indent_str)
-
-
-
- if len(bone_children[None])==1:
+ file.write("%s\t\tOFFSET %.6f %.6f %.6f\n" % (indent_str, loc.x * pref_scale, loc.y * pref_scale, loc.z * pref_scale))
+ file.write("%s\t}\n" % indent_str)
+
+ file.write("%s}\n" % indent_str)
+
+ if len(bone_children[None]) == 1:
key = bone_children[None][0]
bones_serialized_names.append(key)
indent = 0
-
+
write_bones_recursive(key, indent)
-
+
else:
# Write a dummy parent node
- file.write('ROOT %s\n' % key)
- file.write('{\n')
- file.write('\tOFFSET 0.0 0.0 0.0\n')
- file.write('\tCHANNELS 0\n') # Xposition Yposition Zposition Xrotation Yrotation Zrotation
+ file.write("ROOT %s\n" % key)
+ file.write("{\n")
+ file.write("\tOFFSET 0.0 0.0 0.0\n")
+ file.write("\tCHANNELS 0\n") # Xposition Yposition Zposition Xrotation Yrotation Zrotation
key = None
indent = 1
-
+
write_bones_recursive(key, indent)
-
- file.write('}\n')
-
-
+
+ file.write("}\n")
+
# redefine bones as sorted by bones_serialized_names
# se we can write motion
-
pose_dict = obj.pose.bones
#pose_bones = [(pose_dict[bone_name], bone_dict[bone_name].matrix_local.copy().invert()) for bone_name in bones_serialized_names]
-
+
class decorated_bone(object):
__slots__ = (\
- 'name',# bone name, used as key in many places
- 'parent',# decorated bone parent, set in a later loop
- 'rest_bone',# blender armature bone
- 'pose_bone',# blender pose bone
- 'pose_mat',# blender pose matrix
- 'rest_arm_mat',# blender rest matrix (armature space)
- 'rest_local_mat',# blender rest batrix (local space)
- 'pose_imat',# pose_mat inverted
- 'rest_arm_imat',# rest_arm_mat inverted
- 'rest_local_imat') # rest_local_mat inverted
-
+ "name", # bone name, used as key in many places
+ "parent", # decorated bone parent, set in a later loop
+ "rest_bone", # blender armature bone
+ "pose_bone", # blender pose bone
+ "pose_mat", # blender pose matrix
+ "rest_arm_mat", # blender rest matrix (armature space)
+ "rest_local_mat", # blender rest batrix (local space)
+ "pose_imat", # pose_mat inverted
+ "rest_arm_imat", # rest_arm_mat inverted
+ "rest_local_imat") # rest_local_mat inverted
+
def __init__(self, bone_name):
self.name = bone_name
self.rest_bone = bone_dict[bone_name]
self.pose_bone = pose_dict[bone_name]
-
-
+
self.pose_mat = self.pose_bone.matrix
-
+
mat = self.rest_bone.matrix
self.rest_arm_mat = self.rest_bone.matrix_local
self.rest_local_mat = self.rest_bone.matrix
-
+
# inverted mats
self.pose_imat = self.pose_mat.copy().invert()
self.rest_arm_imat = self.rest_arm_mat.copy().invert()
self.rest_local_imat = self.rest_local_mat.copy().invert()
-
+
self.parent = None
-
+
def update_posedata(self):
self.pose_mat = self.pose_bone.matrix
self.pose_imat = self.pose_mat.copy().invert()
-
+
def __repr__(self):
if self.parent:
- return '["%s" child on "%s"]\n' % (self.name, self.parent.name)
+ return "[\"%s\" child on \"%s\"]\n" % (self.name, self.parent.name)
else:
- return '["%s" root bone]\n' % (self.name)
-
-
+ return "[\"%s\" root bone]\n" % (self.name)
+
bones_decorated = [decorated_bone(bone_name) for bone_name in bones_serialized_names]
# Assign parents
bones_decorated_dict = {}
for dbone in bones_decorated:
bones_decorated_dict[dbone.name] = dbone
-
+
for dbone in bones_decorated:
parent = dbone.rest_bone.parent
if parent:
@@ -196,41 +188,41 @@
del bones_decorated_dict
# finish assigning parents
- file.write('MOTION\n')
- file.write('Frames: %d\n' % (pref_endframe - pref_startframe + 1))
- file.write('Frame Time: %.6f\n' % 0.03)
+ file.write("MOTION\n")
+ file.write("Frames: %d\n" % (pref_endframe - pref_startframe + 1))
+ file.write("Frame Time: %.6f\n" % 0.03)
scene = bpy.context.scene
- triple = '%.6f %.6f %.6f '
+ triple = "%.6f %.6f %.6f "
for frame in range(pref_startframe, pref_endframe + 1):
scene.frame_set(frame)
for dbone in bones_decorated:
dbone.update_posedata()
for dbone in bones_decorated:
if dbone.parent:
- trans = Matrix.Translation(dbone.rest_bone.head_local)
- itrans = Matrix.Translation(-dbone.rest_bone.head_local)
- mat2 = dbone.rest_arm_imat * dbone.pose_mat * dbone.parent.pose_imat *dbone.parent.rest_arm_mat #FASTER
+ trans = Matrix.Translation(dbone.rest_bone.head_local)
+ itrans = Matrix.Translation(-dbone.rest_bone.head_local)
+ mat2 = dbone.rest_arm_imat * dbone.pose_mat * dbone.parent.pose_imat * dbone.parent.rest_arm_mat
mat2 = trans * mat2 * itrans
myloc = mat2.translation_part() + (dbone.rest_bone.head_local - dbone.parent.rest_bone.head_local)
- rot = mat2.copy().transpose().to_euler()
+ rot = mat2.copy().transpose().to_euler()
else:
- trans = Matrix.Translation(dbone.rest_bone.head_local)
- itrans = Matrix.Translation(-dbone.rest_bone.head_local)
+ trans = Matrix.Translation(dbone.rest_bone.head_local)
+ itrans = Matrix.Translation(-dbone.rest_bone.head_local)
mat2 = dbone.rest_arm_imat * dbone.pose_mat
mat2 = trans * mat2 * itrans
myloc = mat2.translation_part() + dbone.rest_bone.head_local
rot = mat2.copy().transpose().to_euler()
file.write(triple % (myloc[0] * pref_scale, myloc[1] * pref_scale, myloc[2] * pref_scale))
- file.write(triple % (-rot[0], -rot[1], -rot[2])) #NEGATED
-
- file.write('\n')
+ file.write(triple % (-rot[0], -rot[1], -rot[2]))
+ file.write("\n")
+
numframes = pref_endframe - pref_startframe + 1
file.close()
-
+
print("BVH Exported: %s frames:%d\n" % (filepath, numframes))
bvh_export("/foo.bvh", bpy.context.object, 1, 190, 1.0)
@@ -240,18 +232,18 @@
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list