enable different rotation types for imported BVH's including 'Native', which uses the rotation order defined in the BVH

This commit is contained in:
Campbell Barton
2010-05-20 17:36:59 +00:00
parent f37518d902
commit e8ed1f1f55

View File

@@ -458,9 +458,9 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM
pose_bone = pose_bones[bone_name] pose_bone = pose_bones[bone_name]
pose_bone.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)] pose_bone.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)]
elif ROT_MODE == 'XYZ': elif ROT_MODE != 'QUATERNION':
for pose_bone in pose_bones: for pose_bone in pose_bones:
pose_bone.rotation_mode = 'XYZ' pose_bone.rotation_mode = ROT_MODE
else: else:
# Quats default # Quats default
pass pass
@@ -524,7 +524,7 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM
if ROT_MODE == 'QUATERNION': if ROT_MODE == 'QUATERNION':
pose_bone.rotation_quaternion = bone_rotation_matrix.to_quat() pose_bone.rotation_quaternion = bone_rotation_matrix.to_quat()
else: else:
euler = bone_rotation_matrix.to_euler('XYZ', prev_euler[i]) # pose_bone.rotation_mode # TODO, XYZ default for now euler = bone_rotation_matrix.to_euler(pose_bone.rotation_mode, prev_euler[i])
pose_bone.rotation_euler = euler pose_bone.rotation_euler = euler
prev_euler[i] = euler prev_euler[i] = euler
@@ -567,17 +567,17 @@ class BvhImporter(bpy.types.Operator):
loop = BoolProperty(name="Loop", description="Loop the animation playback", default=False) loop = BoolProperty(name="Loop", description="Loop the animation playback", default=False)
rotate_mode = EnumProperty(items=( rotate_mode = EnumProperty(items=(
('QUATERNION', "Quaternion", "Convert rotations to quaternions"), ('QUATERNION', "Quaternion", "Convert rotations to quaternions"),
# ('NATIVE', "Euler (Native)", "Use the rotation order defined in the BVH file"), ('NATIVE', "Euler (Native)", "Use the rotation order defined in the BVH file"),
('XYZ', "Euler (XYZ)", "Convert rotations to euler XYZ"), ('XYZ', "Euler (XYZ)", "Convert rotations to euler XYZ"),
# ('XZY', "Euler (XZY)", "Convert rotations to euler XZY"), ('XZY', "Euler (XZY)", "Convert rotations to euler XZY"),
# ('YXZ', "Euler (YXZ)", "Convert rotations to euler YXZ"), ('YXZ', "Euler (YXZ)", "Convert rotations to euler YXZ"),
# ('YZX', "Euler (YZX)", "Convert rotations to euler YZX"), ('YZX', "Euler (YZX)", "Convert rotations to euler YZX"),
# ('ZXY', "Euler (ZXY)", "Convert rotations to euler ZXY"), ('ZXY', "Euler (ZXY)", "Convert rotations to euler ZXY"),
# ('ZYX', "Euler (ZYX)", "Convert rotations to euler ZYX")), ('ZYX', "Euler (ZYX)", "Convert rotations to euler ZYX"),
), ),
name="Rotation", name="Rotation",
description="Rotation conversion.", description="Rotation conversion.",
default='QUATERNION') default='NATIVE')
def execute(self, context): def execute(self, context):
# print("Selected: " + context.active_object.name) # print("Selected: " + context.active_object.name)