def get_from_bind_bone_pose(
         bone_name: str,
         bind_bone_pose: TransformNode) -> BoneTransformNode:
     result = BoneTransformNode()
     result.bone_name = bone_name
     result.bone_transform = bind_bone_pose.copy()
     return result
 def from_transform_node(bone_name: str,
                         transform_node: TransformNode,
                         is_keyframe: bool = False) -> 'BoneTransformNode':
     result = BoneTransformNode()
     result.bone_name = bone_name
     result.bone_transform = transform_node.copy()
     result.is_keyframe = is_keyframe
     return result
class BoneTransformNode:
    def __init__(self):
        self.bone_name = None  # type: str
        self.bone_transform = TransformNode()
        self.is_keyframe = False

    def copy(self) -> 'BoneTransformNode':
        result = BoneTransformNode()
        result.bone_name = self.bone_name
        result.bone_transform = self.bone_transform.copy()
        return result

    @staticmethod
    def from_transform_node(bone_name: str,
                            transform_node: TransformNode,
                            is_keyframe: bool = False) -> 'BoneTransformNode':
        result = BoneTransformNode()
        result.bone_name = bone_name
        result.bone_transform = transform_node.copy()
        result.is_keyframe = is_keyframe
        return result

    @staticmethod
    def from_matrix4x4(bone_name: str,
                       matrix: Matrix4x4,
                       is_keyframe: bool = False) -> 'BoneTransformNode':
        result = BoneTransformNode()
        result.bone_name = bone_name
        result.bone_transform = TransformNode.from_matrix4x4(matrix)
        result.is_keyframe = is_keyframe
        return result

    @classmethod
    def get_zero_transform_with_bone_name(
            cls, bone_name: str) -> 'BoneTransformNode':
        return cls.from_transform_node(bone_name=bone_name,
                                       transform_node=TransformNode())
 def animate_bone(self, name: str, local_transform: TransformNode, keyframe_number: int) -> 'BlenderArmatureAnimator':
     self._add_keyframe_if_does_not_exist(keyframe_number)
     self.bones_keyframes[keyframe_number][name] = local_transform.copy()
     return self
Пример #5
0
 def with_bone(self, name: str, transform: TransformNode) -> 'BlenderArmatureBuilder':
     self.bones_edit_mode_transforms.append((name, transform.copy()))
     return self