Пример #1
0
    def make_armature(self, parent_node, armature):
        egg_group = EggGroup(armature.name)
        egg_group.set_dart_type(EggGroup.DT_structured)

        egg_joints = {}

        for bone_name, bone in armature.data.bones.items():
            bone_matrix = get_bone_matrix(bone, armature)

            egg_transform = EggTransform()
            egg_transform.add_matrix4(matrix_to_panda(bone_matrix))

            egg_joint = EggGroup(bone_name)
            egg_joint.set_group_type(EggGroup.GT_joint)
            egg_joint.add_matrix4(matrix_to_panda(bone_matrix))
            egg_joint.set_default_pose(egg_transform)

            if bone.parent:
                egg_joints[bone.parent.name].add_child(egg_joint)
            else:  # root bone
                egg_group.add_child(egg_joint)

            egg_joints[bone_name] = egg_joint

        self._setup_node(egg_group, armature)
        parent_node.add_child(egg_group)

        return egg_group