FLOAT Get Identity Reference (Ad)
The half-step between encode and sample
- r_s_lambda_latent
- float_pipe
- r_s_latent (Wr→s)
- float_pipe
Small node, easy to underestimate, and its absence is the most common reason an Advanced FLOAT workflow won't connect. FLOAT Get Identity Reference (Ad) takes the r_s_lambda_latent that FLOAT Encode Image to Latents produced and turns it into r_s_latent - the motion-space identity reference that the sampler is actually conditioned on.
Here's the thing that trips everyone up: the encoder gives you two different "reference" things and they are not interchangeable. r_s_lambda_latent is the pose the person is in in the photo - specific, frozen, useless for animating. The FLOAT architecture runs that through the decoder's direction module to get r_s, the identity vector that says "when this person talks, the motion should look like them," and that's the one the flow-matching sampler needs to make motion that's plausible for this face. This node is that transformation, in explicit form.
The wiring
Inputs: r_s_lambda_latent (from FLOAT Encode Image to Latents) and float_pipe (which carries the decoder's direction module). Outputs: r_s_latent (Wr→s) and a float_pipe passthrough.
So the canonical Advanced chain is:
- FLOAT Encode Image to Latents →
r_s_lambda_latent→ FLOAT Get Identity Reference →r_s_latent r_s_latent→ FLOAT Sample Motion Sequence rd (alongsidewa_latent,we_latent)
In the Very Advanced graph, FLOAT Get Identity Reference VA does the exact same job but with the synthesis model passed in as an explicit input instead of buried in the pipe.
What to actually do with it
In practice you just wire it and forget it - it's plumbing, not a dial. The one thing worth knowing is that you only need one identity reference per video, not one per frame. Generate the appearance and r_s once, then vary audio, emotion, and seed downstream and you're sampling variations of the same person without re-encoding the image every time. That's the workflow trick this node exists to enable, and it's also the main reason to prefer the Advanced line over the one-button FLOAT Process node.
Install is the pack's standard story - ComfyUI Manager search "ComfyUI-FLOAT_Optimized", or git clone https://github.com/set-soft/ComfyUI-FLOAT_Optimized into custom_nodes plus pip install -r requirements.txt, restart, and let the unified 2.4 GiB model download to models/float on first run. If the sampler complains about a missing or mismatched latent, nine times out of ten you fed it r_s_lambda_latent instead of r_s_latent - this node is the missing link, and it's a two-wire job.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| r_s_lambda_latent | TORCH_TENSOR | — | |
| float_pipe | FLOAT_PIPE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| r_s_latent (Wr→s) | TORCH_TENSOR | — |
| float_pipe | FLOAT_PIPE | — |