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.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)]
elif ROT_MODE == 'XYZ':
elif ROT_MODE != 'QUATERNION':
for pose_bone in pose_bones:
pose_bone.rotation_mode = 'XYZ'
pose_bone.rotation_mode = ROT_MODE
else:
# Quats default
pass
@@ -524,7 +524,7 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM
if ROT_MODE == 'QUATERNION':
pose_bone.rotation_quaternion = bone_rotation_matrix.to_quat()
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
prev_euler[i] = euler
@@ -567,17 +567,17 @@ class BvhImporter(bpy.types.Operator):
loop = BoolProperty(name="Loop", description="Loop the animation playback", default=False)
rotate_mode = EnumProperty(items=(
('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"),
# ('XZY', "Euler (XZY)", "Convert rotations to euler XZY"),
# ('YXZ', "Euler (YXZ)", "Convert rotations to euler YXZ"),
# ('YZX', "Euler (YZX)", "Convert rotations to euler YZX"),
# ('ZXY', "Euler (ZXY)", "Convert rotations to euler ZXY"),
# ('ZYX', "Euler (ZYX)", "Convert rotations to euler ZYX")),
('XZY', "Euler (XZY)", "Convert rotations to euler XZY"),
('YXZ', "Euler (YXZ)", "Convert rotations to euler YXZ"),
('YZX', "Euler (YZX)", "Convert rotations to euler YZX"),
('ZXY', "Euler (ZXY)", "Convert rotations to euler ZXY"),
('ZYX', "Euler (ZYX)", "Convert rotations to euler ZYX"),
),
name="Rotation",
description="Rotation conversion.",
default='QUATERNION')
default='NATIVE')
def execute(self, context):
# print("Selected: " + context.active_object.name)