Nodes/ComfyUI-RefCap/H3 RefCap Replay View Set
ComfyUI Node

H3 RefCap Replay View Set

Give H3 the angles the shot actually needs

By AEmotionStudio·Created about 16 hours ago·Updated about 16 hours ago· 1
H3 RefCap Replay View Set
  • clip
  • conditioning
  • label_guide
◄prompt—►
◄viewset▾►
◄select▾►
◄target_yaws0►
◄count0►
◄indices►
◄orbitfalse►
◄more_clips►
◄audios►

What makes it different from plain Replay

H3 RefCap Replay replays everything a RefCap holds. H3 RefCap Replay View Set replays a subset you choose per shot - because a view set can hold 24 views and a render can only take nine, and because the right nine depend on what you're shooting.

Set select = nearest, tell it the angles your shot shows (target_yaws), and it walks the view set picking the view closest to each angle. That's the billboard trick from TURNtable Viewer, done before encoding instead of at render time - which is the only place it can happen, since H3 has no camera input and can't pick a reference by viewing angle. Each block's RoPE is time/height/width only; the model attends to everything you give it on every step.

Clips and audio ride along: orbit adds clip 1 as a video reference, more_clips takes 2,3, audios takes standalone audio numbers or all. Everything is encoded with the stored pixels and clip frames exactly as MiniMax H3 Reference to Video would encode the originals, and the stored latents are attached as minimax_refs. The author's parity check found rows, tags and every image, video and audio latent bit-identical to native - and pixel-identical renders with identical audio samples.

Inputs

  • clip, prompt - H3 text encoder, and the prompt. Write <Picture 1>, <Video 1>, <Audio 1> into it; the labels are positional and the view set has already decided what's in slot 1.
  • viewset - the file, from models/refcaps/.
  • select - nearest (views closest to the shot's angles), all, or indices.
  • target_yaws - with nearest, the angles the shot shows, comma-separated degrees. 0 is front. A medium shot of someone turned three-quarters right is roughly -45; a two-shot with one person at each edge wants two values.
  • count - how many views; 0 means one per target yaw. This is your token dial.
  • indices - with indices, 0-based view numbers.
  • orbit - adds clip 1 as a video reference.
  • more_clips, audios (optional) - which other clips and which audio references.

Outputs: conditioning and label_guide. The guide maps every label to a view number, its yaw and its file label: <Picture 1> = view 9, yaw -46.2 (elf_ranger_0042.png). Read it before you write the prompt - with 24 views, "view 9" tells you nothing and "yaw −46.2, three-quarter left" tells you everything. It also appends the total reference token count, which is your render cost.

Latent still comes from Empty MiniMax H3 AV Latent.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/AEmotionStudio/ComfyUI-RefCap.git

Or ComfyUI Manager → ComfyUI-RefCap. No pip installs; it needs nothing beyond ComfyUI plus the H3 model stack (int8 ref2va DiT, Qwen3-VL-32B encoder, video VAE, audio VAE for audio references). Templates H3 RefCap 5 - View set and H3 RefCap 6 - Clips and audio show both paths wired.

Getting nearest right

The picker is simple and slightly dumb in a way you should know about: each target yaw in turn takes its nearest unused view, round after round, until count views are chosen.

So target_yaws = "0" with count = 0 gives you one view - the closest thing to front-on. Set count = 3 and you get front plus its two nearest neighbours, which is usually better: a single reference image gives the model one perspective and it will deflate the character onto that.

With two characters in the prompt, you can't express "this yaw is for her, that yaw is for him" here - the view set is one subject by definition. That's the H3 RefCap Select → Replay Pack chain's job.

The errors you'll meet

"has no yaws (a version-1 RefCap): use select=all or indices" - you pointed it at a plain photo RefCap. Version-1 files have no angles, so nearest can't rank anything. Either use all or go through a real view set.

"N views selected; MiniMaxH3ReferenceToVideo takes at most 9" - count or indices went over the native cap. Cut it down; the reference node's limit applies per render, across all your references.

"no clip 3" / "no audio 2" - you asked for a clip or audio the file doesn't have. The error names the count, so it's a fast fix.

Wrong angles, wrong result. nearest uses the yaws in the file, and those came from however the set was built. If you built it with an empty yaws field on Build View Set, you got TURNtable spacing - view i at i × 360/N - which is only correct if your sequence really is an even turntable starting at the front. A Blender turntable with a different offset needs frame_offset_degrees at build time. Garbage yaws produce confident nonsense here.

Do clips beat stills?

Mostly no, for identity. The author's comparison found no real gain from several clips over stills at matched reference tokens, which is worth knowing before you build elaborate clip libraries. Where clips earn their keep is motion, camera moves and locations - a turntable clip read as <Video 1> is a continuous sweep of angles, which is H3's native billboard. Audio is close to free on the text side (about 80 tokens per second) and is the one channel that reliably transfers character voice.

Categoryadvanced/refcap

Inputs (10)

NameTypeDefaultDescription
clipCLIP—
promptSTRING—
viewsetCOMBO0 options:
selectCOMBOnearest: the views closest to the shot's angles
target_yawsSTRING0select=nearest: the angles the shot shows, in degrees, comma-separated
countINT00–9select=nearest: how many views; 0 = one per target yaw
indicesSTRINGselect=indices: 0-based view numbers, comma-separated
orbitBOOLEANfalseadd clip 1 (the orbit) as a video reference
more_clipsoptSTRINGother clip numbers to add, comma-separated (2,3)
audiosoptSTRINGstandalone audio numbers to add (1,2,3), or 'all'

Outputs (2)

NameTypeDescription
conditioningCONDITIONING—
label_guideSTRING—