Generated reference · ComfyUI workflow · Video & motion

AnimateDiff with ControlNet

Generate controlled animated videos using AnimateDiff with ControlNet for precise structural and motion guidance

Video & motion22nodesGPU A6000out video~300sv1.0.0

On this page
22Graph nodes
21Node classes
23Inputs
10Models

Tags: videoanimationanimatediffcontrolnetmotion-controlposedepth

Inputs (23)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

control_modeenumdefault depth
Type of ControlNet guidance
options: depthopenposecannylineartsoftedgescribblenormal_mapsemantic_seg
control_sequenceimage_sequence
Optional sequence of control images (poses, depth maps, etc.)
control_strengthfloatdefault 0.75min 0.3max 1.0
Strength of ControlNet guidance
animation_typeenumdefault character_motion
Type of animation being created
options: character_motioncamera_movementscene_dynamicsabstract_flowmeditation_sequenceyoga_posesdance_movement
motion_styleenumdefault smooth_natural
Style of motion
options: smooth_naturalcinematicenergeticslow_motioncontemplativerhythmicfluid
motion_intensityenumdefault moderate
Intensity of motion
options: minimalsubtlemoderatedynamicintense
temporal_consistencyenumdefault high
Level of temporal consistency between frames
options: lowmediumhighvery_high
visual_styleenumdefault artistic
Visual style of the output
options: realisticartisticpainterlyanimestylizedetherealmystical
subject_descriptionstringdefault spiritual figure, flowing robes, serene expression
Description of the animated subject
environment_descriptionstringdefault mystical background, soft lighting, peaceful atmosphere
Description of the environment/background
color_paletteenumdefault warm_spiritual
Color palette for the video
options: naturalwarm_spiritualcool_serenevibrantmuted_elegantgolden_hourcosmic
add_effectsenumdefault none
Additional visual effects
options: nonelight_particlesenergy_auraflowing_fabricparticle_trailambient_glowsacred_symbols
frame_countintegerdefault 48min 30max 128
Total number of frames
fpsintegerdefault 8max 24
Frames per second (AnimateDiff motion is trained near 8fps; use interpolation downstream for higher rates)
resolutionenumdefault 720p
Output resolution
options: 480p720p1080p
loop_modeenumdefault none
Loop mode for the video
options: noneforwardpingpongseamless
seedintegerdefault -1
Random seed
stepsintegerdefault 25
Sampling steps
cfg_scalefloatdefault 7.5
CFG scale for prompt adherence
frame_upscalebooleandefault false
Per-frame 2x enhancement before encoding (RealESRGAN 4x then 0.5 resample); compute-heavy, off by default
checkpointenumdefault dreamshaper_8
SD1.5 checkpoint: DreamShaper 8 finetune (default, baked VAE) or base 1.5
options: dreamshaper_8sd15_base
motion_adapterbooleandefault true
AnimateDiff v3 domain-adapter LoRA (cleans motion-training artifacts)
smooth_motionbooleandefault false
RIFE 4.9 frame interpolation (2x): doubles effective fps before encoding

ComfyUI node graph (22)#

The executable ComfyUI prompt graph: 22 nodes across 21 distinct node classes, wired by 24 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: CheckpointLoaderSimple"] n1["2: ControlNetLoader"] n2["3: IsisLoadImageList"] n3["4: {{control_mode_configs[control_mode].preprocessor}}"] n4["5: CLIPTextEncode"] n5["6: CLIPTextEncode"] n6["7: ControlNetApply"] n7["8: EmptyLatentImage"] n8["9: ADE_StandardUniformContextOptions"] n9["10: ADE_MultivalDynamic"] n10["11: ADE_AnimateDiffLoaderGen1"] n11["12: KSampler"] n12["13: VAEDecode"] n13["14: TemporalConsistencyProcessor"] n14["15: LoopProcessor"] n15["16: VHS_VideoCombine"] n16["17: SaveImage"] n17["fups_loader: UpscaleModelLoader"] n18["fups_apply: ImageUpscaleWithModel"] n19["fups_scale: ImageScaleBy"] n20["ad_adapter: LoraLoaderModelOnly"] n21["rife: RIFE VFI"] n2 -->|image| n3 n0 -->|clip| n4 n0 -->|clip| n5 n4 -->|conditioning| n6 n1 -->|control_net| n6 n3 -->|image| n6 n20 -->|model| n10 n8 -->|context_options| n10 n9 -->|scale_multival| n10 n10 -->|model| n11 n6 -->|positive| n11 n5 -->|negative| n11 n7 -->|latent_image| n11 n11 -->|samples| n12 n0 -->|vae| n12 n12 -->|images| n13 n13 -->|images| n14 n19 -->|images| n15 n3 -->|images| n16 n17 -->|upscale_model| n18 n21 -->|image| n18 n18 -->|image| n19 n0 -->|model| n20 n14 -->|frames| n21 classDef custom fill:#12b886,stroke:#0b6b4f,color:#04110c; class n2,n8,n9,n10,n13,n14,n15,n21 custom;
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (22)#

1CheckpointLoaderSimplecore
ckpt_name = {{checkpoint_files[checkpoint]}} tmpl
outputs: MODELCLIPVAE
2ControlNetLoadercore
control_net_name = {{control_mode_configs[control_mode].model}}.safetensors tmpl
outputs: CONTROL_NET
3IsisLoadImageListcustom pack
filenames = {{control_sequence}} tmplframe_count = {{frame_count}} tmpl
outputs: IMAGE
4{{control_mode_configs[control_mode].preprocessor}}core
image = ◂ node 3 · out[0]resolution = {{resolution_map[resolution].width}} tmpl
outputs: IMAGE
5CLIPTextEncodecore
text = {{constructed_prompt}} tmplclip = ◂ node 1 · out[1]
outputs: CONDITIONING
6CLIPTextEncodecore
text = ugly, blurry, low quality, distorted, deformed, mutated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed, missing limbs, out of frame, poorly drawn, jittery, flickering, inconsistentclip = ◂ node 1 · out[1]
outputs: CONDITIONING
7ControlNetApplycore
conditioning = ◂ node 5 · out[0]control_net = ◂ node 2 · out[0]image = ◂ node 4 · out[0]strength = {{control_strength}} tmpl
outputs: CONDITIONING
8EmptyLatentImagecore
width = {{resolution_map[resolution].width}} tmplheight = {{resolution_map[resolution].height}} tmplbatch_size = {{frame_count}} tmpl
outputs: LATENT
9ADE_StandardUniformContextOptionscustom pack
context_length = 16context_stride = 1context_overlap = 4fuse_method = pyramiduse_on_equal_length = falsestart_percent = 0.0guarantee_steps = 1
outputs: CONTEXT_OPTIONS
10ADE_MultivalDynamiccustom pack
float_val = {{motion_intensity_configs[motion_intensity].motion_scale}} tmpl
outputs: MULTIVAL
11ADE_AnimateDiffLoaderGen1custom pack
model = ◂ node ad_adapter · out[0]model_name = v3_sd15_mm.ckptbeta_schedule = autoselectcontext_options = ◂ node 9 · out[0]scale_multival = ◂ node 10 · out[0]
outputs: MODEL
12KSamplercore
model = ◂ node 11 · out[0]positive = ◂ node 7 · out[0]negative = ◂ node 6 · out[0]latent_image = ◂ node 8 · out[0]seed = {{seed}} tmplsteps = {{steps}} tmplcfg = {{cfg_scale}} tmplsampler_name = dpmpp_2mscheduler = karrasdenoise = 1.0
outputs: LATENT
13VAEDecodecore
samples = ◂ node 12 · out[0]vae = ◂ node 1 · out[2]
outputs: IMAGE
14TemporalConsistencyProcessorcustom pack
images = ◂ node 13 · out[0]consistency_strength = {{temporal_consistency_configs[temporal_consistency].strength}} tmplblend_frames = {{temporal_consistency_configs[temporal_consistency].blend_frames}} tmpl
outputs: IMAGE
15LoopProcessorcustom pack
images = ◂ node 14 · out[0]loop_mode = {{loop_mode}} tmplblend_frames = 8
outputs: IMAGE
16VHS_VideoCombinecustom pack
images = ◂ node fups_scale · out[0]frame_rate = {{int(fps) * 2 if smooth_motion else int(fps)}} tmplloop_count = 0filename_prefix = animatediff_controlnetformat = video/h264-mp4save_output = true
outputs: VHS_FILENAMES
17SaveImagecore
images = ◂ node 4 · out[0]filename_prefix = control_sequence_preview
fups_loaderUpscaleModelLoadercore
model_name = RealESRGAN_x4plus.pth
outputs: UPSCALE_MODEL
fups_applyImageUpscaleWithModelcore
upscale_model = ◂ node fups_loader · out[0]image = ◂ node rife · out[0]
outputs: IMAGE
fups_scaleImageScaleBycore
image = ◂ node fups_apply · out[0]upscale_method = lanczosscale_by = 0.5
outputs: IMAGE
ad_adapterLoraLoaderModelOnlycore
model = ◂ node 1 · out[0]lora_name = v3_sd15_adapter.ckptstrength_model = 0.7
outputs: MODEL
rifeRIFE VFIcustom pack
ckpt_name = rife49.pthframes = ◂ node 15 · out[0]clear_cache_after_n_frames = 10multiplier = 2fast_mode = trueensemble = truescale_factor = 1.0dtype = float32torch_compile = falsebatch_size = 1
outputs: IMAGE

Prompt construction#

template
animated video, {animation_prompt}, {motion_prompt}, {style_prompt}, {color_prompt}, {subject}, {environment}{effects_clause}, high quality animation, smooth motion, professional video

Variables (7)#

animation_prompt
{{animation_type_prompts[animation_type]}} tmpl
motion_prompt
{{motion_style_prompts[motion_style]}} tmpl
style_prompt
{{style_prompts[visual_style]}} tmpl
color_prompt
{{color_prompts[color_palette]}} tmpl
subject
{{subject_description}} tmpl
environment
{{environment_description}} tmpl
effects_clause
{{effects_prompts[add_effects]}} tmpl

Parameter banks (11)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

control_mode_configs (8)#

depth
{"model": "control_v11f1p_sd15_depth_fp16", "preprocessor": "MiDaS-DepthMapPreprocessor", "description": "Depth-based structural guidance"}
openpose
{"model": "control_v11p_sd15_openpose_fp16", "preprocessor": "OpenposePreprocessor", "description": "Pose-based character guidance"}
canny
{"model": "control_v11p_sd15_canny_fp16", "preprocessor": "CannyEdgePreprocessor", "description": "Edge-based structural guidance"}
lineart
{"model": "control_v11p_sd15_lineart_fp16", "preprocessor": "LineArtPreprocessor", "description": "Line art based guidance"}
softedge
{"model": "control_v11p_sd15_softedge_fp16", "preprocessor": "CannyEdgePreprocessor", "description": "Soft edge guidance"}
scribble
{"model": "control_v11p_sd15_scribble_fp16", "preprocessor": "CannyEdgePreprocessor", "description": "Scribble-based loose guidance"}
normal_map
{"model": "control_v11p_sd15_normalbae_fp16", "preprocessor": "CannyEdgePreprocessor", "description": "Normal map based 3D guidance"}
semantic_seg
{"model": "control_v11p_sd15_seg_fp16", "preprocessor": "CannyEdgePreprocessor", "description": "Semantic segmentation guidance"}

animation_type_prompts (7)#

character_motion
animated character, figure in motion, body movement, living pose sequence
camera_movement
camera movement animation, panning shot, zoom effect, cinematic motion
scene_dynamics
dynamic scene, moving elements, environmental animation, active atmosphere
abstract_flow
abstract flowing animation, shape morphing, fluid transformation, visual flow
meditation_sequence
meditation sequence, contemplative movement, peaceful transitions, mindful animation
yoga_poses
yoga pose sequence, asana transitions, body awareness movement, flowing practice
dance_movement
dance movement animation, rhythmic motion, expressive body movement, fluid choreography

motion_style_prompts (7)#

smooth_natural
smooth natural motion, organic movement, lifelike animation, realistic dynamics
cinematic
cinematic motion, film-quality movement, professional animation, movie-like dynamics
energetic
energetic motion, dynamic movement, vibrant animation, lively dynamics
slow_motion
slow motion, time-stretched movement, deliberate animation, contemplative pace
contemplative
contemplative motion, thoughtful movement, meditative animation, peaceful pace
rhythmic
rhythmic motion, pulse-like movement, beat-synchronized animation, musical dynamics
fluid
fluid motion, liquid-like movement, graceful animation, flowing dynamics

style_prompts (7)#

realistic
realistic style, photorealistic, lifelike, detailed rendering
artistic
artistic style, creative interpretation, aesthetic quality, expressive rendering
painterly
painterly style, brush stroke texture, artistic rendering, painted look
anime
anime style, Japanese animation aesthetic, stylized characters, vibrant colors
stylized
stylized rendering, artistic interpretation, unique visual style, creative look
ethereal
ethereal style, dreamlike quality, spiritual aesthetic, otherworldly rendering
mystical
mystical style, magical atmosphere, enchanted aesthetic, supernatural quality

color_prompts (7)#

natural
natural color palette, realistic tones, organic colors
warm_spiritual
warm spiritual palette, golden amber tones, enlightened colors
cool_serene
cool serene palette, blue teal tones, peaceful colors
vibrant
vibrant color palette, saturated tones, energetic colors
muted_elegant
muted elegant palette, sophisticated tones, refined colors
golden_hour
golden hour palette, sunset tones, warm amber colors
cosmic
cosmic color palette, space colors, nebula tones, stellar hues

effects_prompts (7)#

none
light_particles
, with floating light particles, ambient sparkles, magical motes
energy_aura
, with energy aura, glowing outline, spiritual emanation
flowing_fabric
, with flowing fabric, billowing cloth, dynamic drapery
particle_trail
, with particle trails, motion traces, energy paths
ambient_glow
, with ambient glow, soft luminosity, gentle radiance
sacred_symbols
, with floating sacred symbols, spiritual iconography, mystical signs

motion_intensity_configs (5)#

minimal
{"motion_scale": 0.4, "context_overlap": 6}
subtle
{"motion_scale": 0.6, "context_overlap": 5}
moderate
{"motion_scale": 0.8, "context_overlap": 4}
dynamic
{"motion_scale": 1.0, "context_overlap": 3}
intense
{"motion_scale": 1.3, "context_overlap": 2}

temporal_consistency_configs (4)#

low
{"strength": 0.4, "blend_frames": 2}
medium
{"strength": 0.6, "blend_frames": 4}
high
{"strength": 0.8, "blend_frames": 6}
very_high
{"strength": 0.95, "blend_frames": 8}

resolution_map (3)#

480p
{"width": 512, "height": 288}
720p
{"width": 768, "height": 432}
1080p
{"width": 960, "height": 544}

preset_configurations (5)#

meditation_guide
{"control_mode": "openpose", "animation_type": "meditation_sequence", "motion_style": "contemplative", "motion_intensity": "subtle", "visual_style": "ethereal", "color_palette": "warm_spiritual", "add_effects": "ambient_glow", "description": "Guided meditation with pose sequences"}
yoga_practice
{"control_mode": "openpose", "animation_type": "yoga_poses", "motion_style": "smooth_natural", "motion_intensity": "moderate", "visual_style": "artistic", "color_palette": "natural", "description": "Yoga pose transition sequence"}
spiritual_dance
{"control_mode": "openpose", "animation_type": "dance_movement", "motion_style": "fluid", "motion_intensity": "dynamic", "visual_style": "mystical", "color_palette": "cosmic", "add_effects": "energy_aura", "description": "Mystical dance animation"}
depth_animation
{"control_mode": "depth", "animation_type": "scene_dynamics", "motion_style": "cinematic", "motion_intensity": "moderate", "visual_style": "realistic", "color_palette": "natural", "description": "Depth-guided scene animation"}
abstract_transformation
{"control_mode": "canny", "animation_type": "abstract_flow", "motion_style": "fluid", "motion_intensity": "dynamic", "visual_style": "stylized", "color_palette": "vibrant", "add_effects": "particle_trail", "description": "Abstract edge-guided transformation"}

usage_notes (2)#

control_sequence_creation
For pose sequences: Use OpenPose to extract poses from reference videoFor depth sequences: Use MiDaS or ZoeDepth on reference framesFor edge sequences: Use Canny or LineArt on reference frames
best_practices
Match control sequence frame count to desired output frame countUse higher control_strength for more precise followingLower motion_intensity if result is too chaoticIncrease temporal_consistency if flickering occurs

Models & dependencies#

Custom node packs (12)#

The non-core ComfyUI node classes this graph requires; the RunPod worker image the workflow runs on must bake or install a pack that provides every one of them.

ADE_AnimateDiffLoaderGen1ADE_MultivalDynamicADE_StandardUniformContextOptionsCannyEdgePreprocessorIsisLoadImageListLineArtPreprocessorLoopProcessorMiDaS-DepthMapPreprocessorOpenposePreprocessorRIFE VFITemporalConsistencyProcessorVHS_VideoCombine

Checkpoint aliases (2)#

dreamshaper_8
DreamShaper_8_pruned.safetensors
sd15_base
v1-5-pruned-emaonly.safetensors

Models required (10)#

DreamShaper_8_pruned.safetensors
RealESRGAN_x4plus.pth
control_v11f1p_sd15_depth_fp16.safetensors
control_v11p_sd15_canny_fp16.safetensors
control_v11p_sd15_lineart_fp16.safetensors
control_v11p_sd15_openpose_fp16.safetensors
rife49.pth
v1-5-pruned-emaonly.safetensors
v3_sd15_adapter.ckpt
v3_sd15_mm.ckpt

Output contract#

What a successful run of this workflow returns.

type
video
format
mp4
codec
h264
audio
false
render_passes
{'pass': 'beauty', 'format': 'mp4', 'required': True, 'description': 'Final beauty output for editorial ingest'}{'pass': 'depth', 'format': 'exr', 'required': True, 'description': 'Depth pass for compositing and relighting'}{'pass': 'mask', 'format': 'png', 'required': False, 'description': 'Object/subject mask pass for selective grading'}{'pass': 'normals', 'format': 'exr', 'required': False, 'description': 'Surface normal pass for advanced post-effects'}
editorial_package
{"edl": {"artifact_id": "edl", "path_template": "editorial/{{job_id}}/timeline.edl", "format": "edl", "fps": 24, "drop_frame": false, "timeline_start_timecode": "01:00:00:00"}, "shot_manifest": {"artifact_id": "shot_manifest", "path_template": "editorial/{{job_id}}/shot-manifest.json", "format": "json", "manifest_version": "1.0.0", "include_render_pass_references": true}, "timecode_map": {"artifact_id": "timecode_map", "path_template": "editorial/{{job_id}}/timecode-map.csv", "format": "csv", "include_source_frame_ranges": true}}
description
ControlNet-guided animated video

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
film-previs-blocking-reel
outputPackageProfile
video-master-profile
controlModalities
camera-lockcamera-path-guidecolor-script-lockcontrolnet-cannycontrolnet-depthcontrolnet-lineartcontrolnet-normalcontrolnet-posecontrolnet-scribblecontrolnet-segmentationcontrolnet-softedgedepth-constraintidentity-adapteridentity-lockkeyframe-anchor-locklatent-reuse +14 more
consistencyDimensions
identitymotionlightingcolor-scriptenvironment
notes
Auto-mapped from video defaults