Skip to content

Create CameraCtrl Poses (Adv.) 🎭🅐🅓②

Documentation

  • Class name: ADE_CameraPoseAdvanced
  • Category: Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses
  • Output node: False

The ADE_CameraPoseAdvanced node is designed for creating advanced camera control poses for animations. It allows for the combination of multiple motion types and strengths to generate complex camera movements, enhancing the dynamic visual storytelling in animated sequences.

Input types

Required

  • motion_type1
    • Specifies the first type of camera motion to apply, influencing the overall camera movement and its visual impact on the animation.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • strength1
    • Specifies the strength multiplier for the first motion type, adjusting the intensity of the camera's movement.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • motion_type2
    • Defines the second type of camera motion, contributing to the complexity and depth of the camera's path.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • strength2
    • Defines the strength multiplier for the second motion type, modifying the impact of the camera's path.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • motion_type3
    • Indicates the third type of camera motion, adding another layer of movement to the camera's trajectory.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • strength3
    • Indicates the strength multiplier for the third motion type, altering the camera's movement intensity.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • motion_type4
    • Specifies the fourth type of camera motion, further enriching the camera's movement and its effect on the scene.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • strength4
    • Specifies the strength multiplier for the fourth motion type, affecting the depth of the camera's trajectory.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • motion_type5
    • Defines the fifth type of camera motion, enhancing the animation with additional movement nuances.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • strength5
    • Defines the strength multiplier for the fifth motion type, influencing the nuance of the camera's movement.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • motion_type6
    • Indicates the sixth type of camera motion, completing the set of movements for sophisticated camera control.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • strength6
    • Indicates the strength multiplier for the sixth motion type, fine-tuning the complexity of the camera's control.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • speed
    • Controls the speed of the camera movement, affecting how quickly or slowly the camera transitions between poses.
    • Comfy dtype: FLOAT
    • Python dtype: float
  • frame_length
    • Determines the number of frames over which the camera movement is applied, defining the duration of the motion.
    • Comfy dtype: INT
    • Python dtype: int

Optional

  • prev_poses
    • Optional. Previous camera poses that can be combined with the new motion for seamless transitions in animations.
    • Comfy dtype: CAMERACTRL_POSES
    • Python dtype: list[list[float]]

Output types

  • cameractrl_poses
    • Comfy dtype: CAMERACTRL_POSES
    • The resulting camera control poses, representing the combined effect of the specified motions and parameters on the camera's path through the animation.
    • Python dtype: list[list[float]]

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class CameraCtrlPoseAdvanced:
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "motion_type1": (CAM._LIST,),
                "strength1": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                "motion_type2": (CAM._LIST,),
                "strength2": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                "motion_type3": (CAM._LIST,),
                "strength3": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                "motion_type4": (CAM._LIST,),
                "strength4": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                "motion_type5": (CAM._LIST,),
                "strength5": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                "motion_type6": (CAM._LIST,),
                "strength6": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
                "speed": ("FLOAT", {"default": 1.0, "min": -100.0, "max": 100.0, "step": 0.01}),
                "frame_length": ("INT", {"default": 16}),
            },
            "optional": {
                "prev_poses": ("CAMERACTRL_POSES",),
            }
        }

    RETURN_TYPES = ("CAMERACTRL_POSES",)
    FUNCTION = "camera_pose_combo"
    CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses"

    def camera_pose_combo(self,
                          motion_type1: str, motion_type2: str, motion_type3: str,
                          motion_type4: str, motion_type5: str, motion_type6: str,
                          speed: float, frame_length: int,
                          prev_poses: list[list[float]]=None,
                          strength1=1.0, strength2=1.0, strength3=1.0, strength4=1.0, strength5=1.0, strength6=1.0):
        return CameraCtrlPoseCombo.camera_pose_combo(self,
                                                     motion_type1=motion_type1, motion_type2=motion_type2, motion_type3=motion_type3,
                                                     motion_type4=motion_type4, motion_type5=motion_type5, motion_type6=motion_type6,
                                                     speed=speed, frame_length=frame_length, prev_poses=prev_poses,
                                                     strength1=strength1, strength2=strength2, strength3=strength3,
                                                     strength4=strength4, strength5=strength5, strength6=strength6)