enable different rotation types for imported BVH's including 'Native', which uses the rotation order defined in the BVH
This commit is contained in:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user