Nodes/IAMCCS-nodes/MiniMax H3 V2V Object Swap Conditioning (R22)
ComfyUI Node

MiniMax H3 V2V Object Swap Conditioning (R22)

The node that slices your source video and builds object-swap conditioning for MiniMax H3

By IAMCCS·Created 11 months ago·Updated 4 days ago· 113
MiniMax H3 V2V Object Swap Conditioning (R22)
  • model
  • clip
  • video_vae
  • audio_vae
  • cine_linx
  • model
  • positive
  • latent
  • source_preview
  • source_audio_segment
  • manifest_json
  • prompt
  • current_segment
  • total_segments
  • requested_frames
  • aligned_frames
  • trim_tail_frames
  • report
segment_index0
prompt_override

Video-to-video on MiniMax H3 means you're replacing something in an existing clip - a person, an object - while keeping the motion, timing and camera of the source. The hard part isn't the model, it's the conditioning: you have to slice the source video to the exact segment you're working on, resample it to H3's canvas, pull the matching audio, and build the REF2VA conditioning. IAMCCS_MiniMaxH3V2VConditioningR22 is the "R22" (round-two, refactored) node that does all of that deterministically from the Shotboard's plan.

How it works

The node is one big prepare step. It reads the shotplan from cine_linx, resolves the current segment_index, and pulls the source video/audio plus optional depth and pose guides from the CineInfo H3 V2V resources upstream. Then it does the arithmetic that always trips people up:

  • works out how many frames the segment requests,
  • aligns that to H3's frame constraints (align_h3_frames),
  • picks the source frame indices using the source-range policy from the Shotboard (timeline_segment, sequential_requested, or repeat_from_offset),
  • fits those frames to the canvas (canvas_pad, canvas_crop, native_adapt, or stretch),
  • slices the matching audio segment.

Depth and pose guides are only pulled when the shotplan's guide_mode asks for them (raw_pose / raw_depth / raw_depth_pose) - and it validates that guide frame counts match the source before slicing, because mismatched guide arrays are the classic silent-failure source in V2V.

Inputs and outputs

Required: model, clip, video_vae, audio_vae, cine_linx, and segment_index. Optional: prompt_override (a per-segment prompt that wins over the shotplan text).

Outputs are the full conditioning bundle:

  • model / positive / latent - feed the sampler.
  • source_preview (IMAGE) and source_audio_segment (AUDIO) - the exact slice it's working from.
  • manifest_json, prompt, current_segment, total_segments, requested_frames, aligned_frames, trim_tail_frames, report.

The requested_frames vs aligned_frames pair is the one to watch - it tells you how much of the segment is "real" request versus H3 alignment padding, and it's exactly what the delivery trim node uses later to cut back to the true length.

The traps

Two hard requirements you'll hit immediately. First, it requires IAMCCS_CineInfoH3V2V upstream in cine_linx - the resources block with the source media has to exist or it raises with a message that's effectively "V2V needs the CineInfo source node." Second, it insists the model family is ref2va; route anything else and it refuses. This is an opinionated node and the opinions are load-bearing - H3's object-swap path is a reference-to-video job under the hood, so mixing in a plain I2V model breaks the whole contract.

It's in the IAMCCS pack, so install once via ComfyUI Manager (search "IAMCCS") or git clone https://github.com/IAMCCS/IAMCCS-nodes.git into custom_nodes, then restart. This node itself adds no model downloads - the H3 model, VAEs and text encoder are loaded elsewhere in the graph.

CategoryIAMCCS/MiniMax H3/V2V R22

Inputs (7)

NameTypeDefaultDescription
modelMODEL
clipCLIP
video_vaeVAE
audio_vaeVAE
cine_linxIAMCCS_SUPERNODE_LINX
segment_indexINT00–1000000
prompt_overrideoptSTRING

Outputs (13)

NameTypeDescription
modelMODEL
positiveCONDITIONING
latentLATENT
source_previewIMAGE
source_audio_segmentAUDIO
manifest_jsonSTRING
promptSTRING
current_segmentINT
total_segmentsINT
requested_framesINT
aligned_framesINT
trim_tail_framesINT
reportSTRING