Added AnimateDiff+CameraCtrl Keyframe node to allow scheduling of cameractrl_multival in addition to the normal AD multivals, moved pose nodes into submenu in CameraCtrl
This commit is contained in:
@@ -6,7 +6,7 @@ from .nodes_gen1 import (AnimateDiffLoaderGen1, LegacyAnimateDiffLoaderWithConte
|
||||
from .nodes_gen2 import (UseEvolvedSamplingNode, ApplyAnimateDiffModelNode, ApplyAnimateDiffModelBasicNode, ADKeyframeNode,
|
||||
LoadAnimateDiffModelNode)
|
||||
from .nodes_animatelcmi2v import (ApplyAnimateLCMI2VModel, LoadAnimateLCMI2VModelNode, LoadAnimateDiffAndInjectI2VNode, UpscaleAndVaeEncode)
|
||||
from .nodes_cameractrl import (LoadAnimateDiffModelWithCameraCtrl, ApplyAnimateDiffWithCameraCtrl, LoadCameraPoses, CameraPoseBasic, CameraPoseJoin, CameraPoseCombine, CameraCtrlPose)
|
||||
from .nodes_cameractrl import (LoadAnimateDiffModelWithCameraCtrl, ApplyAnimateDiffWithCameraCtrl, CameraCtrlADKeyframeNode, LoadCameraPoses, CameraPoseBasic, CameraPoseJoin, CameraPoseCombine, CameraCtrlPose)
|
||||
from .nodes_multival import MultivalDynamicNode, MultivalScaledMaskNode
|
||||
from .nodes_sample import (FreeInitOptionsNode, NoiseLayerAddWeightedNode, SampleSettingsNode, NoiseLayerAddNode, NoiseLayerReplaceNode, IterationOptionsNode,
|
||||
CustomCFGNode, CustomCFGKeyframeNode)
|
||||
@@ -97,6 +97,7 @@ NODE_CLASS_MAPPINGS = {
|
||||
# CameraCtrl Nodes
|
||||
"ADE_ApplyAnimateDiffModelWithCameraCtrl": ApplyAnimateDiffWithCameraCtrl,
|
||||
"ADE_LoadAnimateDiffModelWithCameraCtrl": LoadAnimateDiffModelWithCameraCtrl,
|
||||
"ADE_CameraCtrlAnimateDiffKeyframe": CameraCtrlADKeyframeNode,
|
||||
"ADE_LoadCameraPoses": LoadCameraPoses,
|
||||
"ADE_CameraPoseBasic": CameraPoseBasic,
|
||||
"ADE_CameraPoseJoin": CameraPoseJoin,
|
||||
@@ -178,7 +179,8 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
# CameraCtrl Nodes
|
||||
"ADE_ApplyAnimateDiffModelWithCameraCtrl": "Apply AnimateDiff+CameraCtrl Model 🎭🅐🅓②",
|
||||
"ADE_LoadAnimateDiffModelWithCameraCtrl": "Load AnimateDiff+CameraCtrl Model 🎭🅐🅓②",
|
||||
"ADE_LoadCameraPoses": "Load CameraCtrl Poses 🎭🅐🅓②",
|
||||
"ADE_CameraCtrlAnimateDiffKeyframe": "AnimateDiff+CameraCtrl Keyframe 🎭🅐🅓",
|
||||
"ADE_LoadCameraPoses": "Load CameraCtrl Poses (File) 🎭🅐🅓②",
|
||||
"ADE_CameraPoseBasic": "CameraCtrl Basic Poses 🎭🅐🅓②",
|
||||
"ADE_CameraPoseJoin": "CameraCtrl Join Poses 🎭🅐🅓②",
|
||||
"ADE_CameraPoseCombine": "CameraCtrl Combine Poses 🎭🅐🅓②",
|
||||
|
||||
@@ -144,6 +144,40 @@ class LoadAnimateDiffModelWithCameraCtrl:
|
||||
return (loaded_motion_model,)
|
||||
|
||||
|
||||
class CameraCtrlADKeyframeNode:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"start_percent": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.001}, ),
|
||||
},
|
||||
"optional": {
|
||||
"prev_ad_keyframes": ("AD_KEYFRAMES", ),
|
||||
"scale_multival": ("MULTIVAL",),
|
||||
"effect_multival": ("MULTIVAL",),
|
||||
"cameractrl_multival": ("MULTIVAL",),
|
||||
"inherit_missing": ("BOOLEAN", {"default": True}, ),
|
||||
"guarantee_steps": ("INT", {"default": 1, "min": 0, "max": BIGMAX}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("AD_KEYFRAMES", )
|
||||
FUNCTION = "load_keyframe"
|
||||
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl"
|
||||
|
||||
def load_keyframe(self,
|
||||
start_percent: float, prev_ad_keyframes=None,
|
||||
scale_multival: Union[float, torch.Tensor]=None, effect_multival: Union[float, torch.Tensor]=None,
|
||||
cameractrl_multival: Union[float, torch.Tensor]=None,
|
||||
inherit_missing: bool=True, guarantee_steps: int=1):
|
||||
return ADKeyframeNode.load_keyframe(self,
|
||||
start_percent=start_percent, prev_ad_keyframes=prev_ad_keyframes,
|
||||
scale_multival=scale_multival, effect_multival=effect_multival, cameractrl_multival=cameractrl_multival,
|
||||
inherit_missing=inherit_missing, guarantee_steps=guarantee_steps
|
||||
)
|
||||
|
||||
|
||||
class LoadCameraPoses:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
@@ -157,7 +191,7 @@ class LoadCameraPoses:
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("CAMERACTRL_POSES",)
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses"
|
||||
FUNCTION = "load_camera_poses"
|
||||
|
||||
def load_camera_poses(self, pose_filename):
|
||||
@@ -171,41 +205,6 @@ class LoadCameraPoses:
|
||||
return (poses,)
|
||||
|
||||
|
||||
class CameraCtrlADKeyframeNode:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"start_percent": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.001}, ),
|
||||
},
|
||||
"optional": {
|
||||
"prev_ad_keyframes": ("AD_KEYFRAMES", ),
|
||||
"scale_multival": ("MULTIVAL",),
|
||||
"effect_multival": ("MULTIVAL",),
|
||||
"inherit_missing": ("BOOLEAN", {"default": True}, ),
|
||||
"guarantee_steps": ("INT", {"default": 1, "min": 0, "max": BIGMAX}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("AD_KEYFRAMES", )
|
||||
FUNCTION = "load_keyframe"
|
||||
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓"
|
||||
|
||||
def load_keyframe(self,
|
||||
start_percent: float, prev_ad_keyframes=None,
|
||||
scale_multival: Union[float, torch.Tensor]=None, effect_multival: Union[float, torch.Tensor]=None,
|
||||
cameractrl_multival: Union[float, torch.Tensor]=None,
|
||||
inherit_missing: bool=True, guarantee_steps: int=1):
|
||||
return (
|
||||
ADKeyframeNode.load_keyframe(
|
||||
start_percent=start_percent, prev_ad_keyframes=prev_ad_keyframes,
|
||||
scale_multival=scale_multival, effect_multival=effect_multival, cameractrl_multival=cameractrl_multival,
|
||||
inherit_missing=inherit_missing, guarantee_steps=guarantee_steps
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
class CameraPoseBasic:
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
@@ -219,7 +218,7 @@ class CameraPoseBasic:
|
||||
|
||||
RETURN_TYPES = ("CameraPose",)
|
||||
FUNCTION = "camera_pose_basic"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses"
|
||||
|
||||
def camera_pose_basic(self,camera_pose,speed,video_length):
|
||||
motion_list = [camera_pose]
|
||||
@@ -242,7 +241,7 @@ class CameraPoseJoin:
|
||||
|
||||
RETURN_TYPES = ("CameraPose",)
|
||||
FUNCTION = "camera_pose_join"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses"
|
||||
|
||||
def camera_pose_join(self,camera_pose1,camera_pose2):
|
||||
RT = combine_camera_motion(camera_pose1, camera_pose2)
|
||||
@@ -265,7 +264,7 @@ class CameraPoseCombine:
|
||||
|
||||
RETURN_TYPES = ("CameraPose",)
|
||||
FUNCTION = "camera_pose_combine"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses"
|
||||
|
||||
def camera_pose_combine(self,camera_pose1,camera_pose2,camera_pose3,camera_pose4,speed,video_length):
|
||||
angle = np.array(CAMERA[camera_pose1]["angle"]) + np.array(CAMERA[camera_pose2]["angle"]) + np.array(CAMERA[camera_pose3]["angle"]) + np.array(CAMERA[camera_pose4]["angle"])
|
||||
@@ -290,7 +289,7 @@ class CameraCtrlPose:
|
||||
RETURN_TYPES = ("CAMERACTRL_POSES","INT",)
|
||||
RETURN_NAMES = ("cameractrl_poses","video_length",)
|
||||
FUNCTION = "camera_ctrl_pose"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl"
|
||||
CATEGORY = "Animate Diff 🎭🅐🅓/② Gen2 nodes ②/CameraCtrl/poses"
|
||||
|
||||
def camera_ctrl_pose(self,camera_pose,fx,fy,cx,cy):
|
||||
camera_pose_list=camera_pose.tolist()
|
||||
|
||||
Reference in New Issue
Block a user