0.3 2010/03/05 use english name
0.4 2010/04/05 fix slerp
0.5 2010/04/16 add progress
-0.6 20100506 C extension.
+0.6 2010/05/06 C extension.
+0.7 2010/05/16 modify C extension interface.
'''
import Blender
import os
message="%s: %s" % (self.base, message)
if message.__class__ is unicode:
message=message.encode(INTERNAL_ENCODING)
- Blender.Window.DrawProgressBar(self.progress, message)
+ try:
+ # ?
+ Blender.Window.DrawProgressBar(self.progress, message)
+ except AttributeError, error:
+ #print error
+ #print type(self.progress), self.progress, type(message), message
+ pass
def finish(self):
self.progress=1.0
last_frame=0
for n in l.boneKeys:
keyFrames=l.getBoneKeyFrameList(n)
- boneName=englishmap.getEnglishBoneName(n.decode('cp932'))
+ boneName=englishmap.getEnglishBoneName(n).encode(INTERNAL_ENCODING)
try:
poseBone=pose.bones[boneName]
bone=armature.bones[boneName]
armRotate=bone.matrix['ARMATURESPACE'].rotationPart()
# quat
armRotateQuaternion=armRotate.toQuat()
- if armRotateQuaternion.w<0:
- armRotateQuaternion.w=-armRotateQuaternion.w
- armRotateQuaternion.x=-armRotateQuaternion.x
- armRotateQuaternion.y=-armRotateQuaternion.y
- armRotateQuaternion.z=-armRotateQuaternion.z
# inv
armRotateInv=Blender.Mathutils.Matrix(armRotate).transpose()
# quat
armRotateInvQuaternion=armRotateInv.toQuat()
- if armRotateInvQuaternion.w<0:
- armRotateInvQuaternion.w=-armRotateInvQuaternion.w
- armRotateInvQuaternion.x=-armRotateInvQuaternion.x
- armRotateInvQuaternion.y=-armRotateInvQuaternion.y
- armRotateInvQuaternion.z=-armRotateInvQuaternion.z
reverseFlag=False
lastQ=None
keyFrames=l.getMorphKeyFrameList(n)
if n=='base':
continue
- name=englishmap.getEnglishSkinName(n.decode('cp932'))
+ name=englishmap.getEnglishSkinName(n).encode(INTERNAL_ENCODING)
try:
curve=IPO_CURVE_get_or_create(ipo, name)
except NameError, msg:
__author__= ['ousttrue']
__url__ = ("")
-__version__= '20100515 0.1:'
+__version__= '20100515 0.2:'
__bpydoc__= '''\
vmd Importer
This script imports a vmd into Blender for editing.
+0.1 2010/05/15 first implement.
+0.2 2010/05/16 implement bone motion.
'''
import bpy
def multQuat(l, r):
- q=mathutils.Quaternion((0, 0, 0), l.w*r.w-(l.x*r.x+l.y*r.y+l.z*r.z))
+ q=mathutils.Quaternion()
+ q.w=l.w*r.w-(l.x*r.x+l.y*r.y+l.z*r.z)
q.x=l.w*r.x+r.w*l.x+l.y*r.z-l.z*r.y
q.y=l.w*r.y+r.w*l.y+l.z*r.x-l.x*r.z
q.z=l.w*r.z+r.w*l.z+l.x*r.y-l.y*r.x
def import_motion_key(l, o):
print('import_motion_key: %s' % o.name)
-
+
+
armature = o.data
pose = o.pose
not_in_map={}
keyFrames=l.getBoneKeyFrameList(n)
boneName=englishmap.getEnglishBoneName(n)
try:
- poseBone=pose.bones[boneName]
bone=armature.bones[boneName]
# rot
armRotate=bone.matrix_local.rotation_part()
# quat
armRotateQuaternion=armRotate.to_quat()
- if armRotateQuaternion.w<0:
- armRotateQuaternion.w=-armRotateQuaternion.w
- armRotateQuaternion.x=-armRotateQuaternion.x
- armRotateQuaternion.y=-armRotateQuaternion.y
- armRotateQuaternion.z=-armRotateQuaternion.z
+ #if armRotateQuaternion.w<0:
+ # armRotateQuaternion.w=-armRotateQuaternion.w
+ # armRotateQuaternion.x=-armRotateQuaternion.x
+ # armRotateQuaternion.y=-armRotateQuaternion.y
+ # armRotateQuaternion.z=-armRotateQuaternion.z
# inv
armRotateInv=mathutils.Matrix(armRotate).transpose()
# quat
armRotateInvQuaternion=armRotateInv.to_quat()
- if armRotateInvQuaternion.w<0:
- armRotateInvQuaternion.w=-armRotateInvQuaternion.w
- armRotateInvQuaternion.x=-armRotateInvQuaternion.x
- armRotateInvQuaternion.y=-armRotateInvQuaternion.y
- armRotateInvQuaternion.z=-armRotateInvQuaternion.z
+ #if armRotateInvQuaternion.w<0:
+ # armRotateInvQuaternion.w=-armRotateInvQuaternion.w
+ # armRotateInvQuaternion.x=-armRotateInvQuaternion.x
+ # armRotateInvQuaternion.y=-armRotateInvQuaternion.y
+ # armRotateInvQuaternion.z=-armRotateInvQuaternion.z
reverseFlag=False
lastQ=None
+ poseBone=pose.bones[boneName]
for i in range(len(keyFrames.list)):
key=keyFrames.getKey(i)
####################
# convert left-handed y-up to right-handed z-up
if reverseFlag:
# reverse quaternion for slerp
- q=mathutils.Quaternion((0, 0, 0), -key.q.w)
+ q=mathutils.Quaternion()
+ q.w=-key.q.w
q.x=key.q.x
q.y=key.q.z
q.z=key.q.y
else:
- q=mathutils.Quaternion((0, 0, 0), key.q.w)
+ q=mathutils.Quaternion()
+ q.w=key.q.w
q.x=-key.q.x
q.y=-key.q.z
q.z=-key.q.y
(float(key.pos.x), float(key.pos.z), float(key.pos.y)))
# insert
- poseBone.keyframe_insert('rotation_quaternion', -1, keyFrames.getFrame(i))
- poseBone.keyframe_insert('location', -1, keyFrames.getFrame(i))
- last_frame=max(last_frame, keyFrames.getFrame(i))
+ poseBone.keyframe_insert(
+ 'location', -1, keyFrames.getFrame(i))
+ poseBone.keyframe_insert(
+ 'rotation_quaternion', -1, keyFrames.getFrame(i))
+ last_frame=max(last_frame, keyFrames.getFrame(i))
counter+=1
except KeyError as msg: