[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33976] branches/blender2.4/release/ scripts/bvh_export.py: pedantic pep8 correctness
Campbell Barton
ideasman42 at gmail.com
Sat Jan 1 07:31:36 CET 2011
Revision: 33976
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33976
Author: campbellbarton
Date: 2011-01-01 07:31:29 +0100 (Sat, 01 Jan 2011)
Log Message:
-----------
pedantic pep8 correctness
Modified Paths:
--------------
branches/blender2.4/release/scripts/bvh_export.py
Modified: branches/blender2.4/release/scripts/bvh_export.py
===================================================================
--- branches/blender2.4/release/scripts/bvh_export.py 2011-01-01 05:57:08 UTC (rev 33975)
+++ branches/blender2.4/release/scripts/bvh_export.py 2011-01-01 06:31:29 UTC (rev 33976)
@@ -16,7 +16,7 @@
"""
-# --------------------------------------------------------------------------
+# --------------------------------------------------------------------------
# BVH Export by Campbell Barton (AKA Ideasman), Andrea Rugliancich
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
@@ -40,69 +40,69 @@
import Blender
-from Blender import *
+from Blender import Scene, Mathutils, Window, sys
TranslationMatrix = Mathutils.TranslationMatrix
-Matrix= Blender.Mathutils.Matrix
-Vector= Blender.Mathutils.Vector
+Matrix = Blender.Mathutils.Matrix
+Vector = Blender.Mathutils.Vector
import BPyMessages
+def bvh_export(filepath, ob, pref_startframe, pref_endframe, pref_scale=1.0):
-def bvh_export(filepath, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_SCALE= 1.0):
-
Window.EditMode(0)
Blender.Window.WaitCursor(1)
+
+ file = open(filepath, 'w')
- file= open(filepath, 'w')
+ # bvh_nodes = {}
+ arm_data = ob.data
+ bones = arm_data.bones.values()
- # bvh_nodes= {}
- arm_data= ob.data
- bones= arm_data.bones.values()
-
# Build a dictionary of bone children.
# None is for parentless bones
- bone_children= {None:[]}
+ 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
+ parent = bone.parent
+ bone_name = bone.name
if parent:
- bone_children[parent.name].append( bone_name )
- else: # root node
- bone_children[None].append( bone_name )
+ 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.itervalues():
children_list.sort()
# build a (name:bone) mapping dict
- bone_dict= {}
- for bone in bones: bone_dict[bone.name] = bone
-
+ bone_dict = {}
+ for bone in bones:
+ bone_dict[bone.name] = bone
+
# bone name list in the order that the bones are written
- bones_serialized_names= []
+ bones_serialized_names = []
- bone_locs= {}
+ bone_locs = {}
file.write('HIERARCHY\n')
def write_bones_recursive(bone_name, indent):
- my_bone_children= bone_children[bone_name]
+ my_bone_children = bone_children[bone_name]
- indent_str= '\t'*indent # cache?
+ indent_str = '\t' * indent # cache?
- bone= bone_dict[bone_name]
- loc= bone.head['ARMATURESPACE']
+ bone = bone_dict[bone_name]
+ loc = bone.head['ARMATURESPACE']
bone_locs[bone_name] = loc
# make relative if we can
if bone.parent:
- loc= loc - bone_locs[bone.parent.name]
+ loc = loc - bone_locs[bone.parent.name]
if indent:
file.write('%sJOINT %s\n' % (indent_str, bone_name))
@@ -110,7 +110,7 @@
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\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)
@@ -122,14 +122,14 @@
# Write children
for child_bone in my_bone_children:
bones_serialized_names.append(child_bone)
- write_bones_recursive(child_bone, indent+1)
+ 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)
- loc= bone.tail['ARMATURESPACE'] - 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))
+ loc = bone.tail['ARMATURESPACE'] - 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)
@@ -137,9 +137,9 @@
if len(bone_children[None])==1:
- key= bone_children[None][0]
+ key = bone_children[None][0]
bones_serialized_names.append(key)
- indent= 0
+ indent = 0
write_bones_recursive(key, indent)
@@ -149,8 +149,8 @@
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
+ key = None
+ indent = 1
write_bones_recursive(key, indent)
@@ -160,11 +160,11 @@
# redefine bones as sorted by bones_serialized_names
# se we can write motion
- pose_dict= ob.getPose().bones
- #pose_bones= [(pose_dict[bone_name], bone_dict[bone_name].matrix['ARMATURESPACE'].copy().invert() ) for bone_name in bones_serialized_names]
+ pose_dict = ob.getPose().bones
+ #pose_bones = [(pose_dict[bone_name], bone_dict[bone_name].matrix['ARMATURESPACE'].copy().invert()) for bone_name in bones_serialized_names]
class decorated_bone(object):
- __slots__=(\
+ __slots__ = (\
'name',# bone name, used as key in many places
'parent',# decorated bone parent, set in a later loop
'rest_bone',# blender armature bone
@@ -177,27 +177,27 @@
'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.name = bone_name
+ self.rest_bone = bone_dict[bone_name]
+ self.pose_bone = pose_dict[bone_name]
- self.pose_mat= self.pose_bone.poseMatrix
+ self.pose_mat = self.pose_bone.poseMatrix
- mat= self.rest_bone.matrix
- self.rest_arm_mat= mat['ARMATURESPACE'].copy()
- self.rest_local_mat= mat['BONESPACE'].copy().resize4x4()
+ mat = self.rest_bone.matrix
+ self.rest_arm_mat = mat['ARMATURESPACE'].copy()
+ self.rest_local_mat = mat['BONESPACE'].copy().resize4x4()
# 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.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
+ self.parent = None
def update_posedata(self):
- self.pose_mat= self.pose_bone.poseMatrix
- self.pose_imat= self.pose_mat.copy().invert()
+ self.pose_mat = self.pose_bone.poseMatrix
+ self.pose_imat = self.pose_mat.copy().invert()
def __repr__(self):
if self.parent:
@@ -206,36 +206,26 @@
return '["%s" root bone]\n' % (self.name)
- bones_decorated= [ decorated_bone(bone_name) for bone_name in bones_serialized_names]
- '''
- for i, b in enumerate(bones_serialized_names):
- print i,
- print " " + b
- '''
+ bones_decorated = [decorated_bone(bone_name) for bone_name in bones_serialized_names]
+
# Assign parents
- bones_decorated_dict= {}
- for db in bones_decorated:
- bones_decorated_dict[db.name] = db
+ bones_decorated_dict = {}
+ for dbone in bones_decorated:
+ bones_decorated_dict[dbone.name] = dbone
- for db in bones_decorated:
- parent= db.rest_bone.parent
+ for dbone in bones_decorated:
+ parent = dbone.rest_bone.parent
if parent:
- db.parent = bones_decorated_dict[parent.name]
+ dbone.parent = bones_decorated_dict[parent.name]
del bones_decorated_dict
# finish assigning parents
- #print bones_decorated
- '''
- for i, b in enumerate(bones_serialized_names):
- print i,
- print " " + b + " " + bones_decorated[i].name
- #print len(bones), len(pose_bones)
- '''
+
file.write('MOTION\n')
- file.write('Frames: %d\n' % (PREF_ENDFRAME - PREF_STARTFRAME + 1))
+ file.write('Frames: %d\n' % (pref_endframe - pref_startframe + 1))
file.write('Frame Time: %.6f\n' % 0.03)
- triple= '%.6f %.6f %.6f '
- for frame in xrange(PREF_STARTFRAME, PREF_ENDFRAME+1):
+ triple = '%.6f %.6f %.6f '
+ for frame in xrange(pref_startframe, pref_endframe + 1):
Blender.Set('curframe', frame)
for dbone in bones_decorated:
dbone.update_posedata()
@@ -244,7 +234,7 @@
trans = TranslationMatrix(dbone.rest_bone.head['ARMATURESPACE'])
itrans = TranslationMatrix(-dbone.rest_bone.head['ARMATURESPACE'])
mat2 = dbone.rest_arm_imat * dbone.pose_mat * dbone.parent.pose_imat *dbone.parent.rest_arm_mat #FASTER
- mat2 = trans * mat2 * itrans
+ mat2 = trans * mat2 * itrans
myloc = mat2.translationPart() + (dbone.rest_bone.head['ARMATURESPACE'] - dbone.parent.rest_bone.head['ARMATURESPACE'])
rot = mat2.copy().transpose().toEuler()
else:
@@ -253,17 +243,17 @@
mat2 = dbone.rest_arm_imat * dbone.pose_mat
mat2 = trans * mat2 * itrans
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list