π§ LTX Face Identity Reinforcer
The node that un-broke the LoRA
- model
- vae
- reference_image
- target_latent
- reference_image_2
- model
The LTX-Best-Face-ID LoRA by Alissonerdx is the community's best identity-preservation LoRA for LTX - but it shipped T2V-only. The reason is genuinely subtle: the LoRA injects a reference latent at frame 0's RoPE grid, and in i2v workflows that same grid position is already occupied by the conditioning start image. Two things fighting for the same coordinates means the reference gets diluted or the i2v conditioning gets stomped. LTXFaceIdentityReinforcer is TenStrip's fix: it reimplements the full Best-Face-ID mechanism with a per-rotary-dimension phase rotation that separates reference tokens from target tokens positionally, so the LoRA finally works alongside i2v frame-0 conditioning.
It's one node that composes six mechanisms internally - VAE encoding of the reference, YuNet face detection with auto-crop, reference-to-reference alignment, overlap-coordinate token injection, the RoPE phase rotation, and spatial mask gating - so the user sees a single drop-in that replaces the whole LikenessAnchor identity pattern.
Wiring it
Load Model β Load LTX-Best-Face-ID LoRA β LTXFaceIdentityReinforcer β Sampler
β
VAE, reference_image, target_latent
(reference_image_2 optional)
Required inputs: model, vae, reference_image, and target_latent (the same latent going to your sampler - the reference is resized to match it in pixel space before encoding). Output is a single patched MODEL.
The dials that matter
identity_strength(1.0) - scales the reference latent magnitude. 1.0 is the Best-Face-ID default; this is your first lever up or down.auto_face_crop(True) +crop_zoom_factor(2.0) - when a face is detected, the reference is cropped around it at 2Γ the face bbox before encoding. This is the single biggest quality lever: a wide or full-body reference gives the VAE almost no face detail to work with, and the crop fixes that. Turn it off only if your reference is already a tight face crop.face_padding(0.15) - how much hair/neck context to keep around the box.spatial_gating(mask_soft) - confines identity influence to the face region with a cosine falloff.offgives you raw Best-Face-ID behavior (uniform influence).source_id(2) andphase_scale(1.0) - the RoPE phase-rotation parameters the LoRA was trained with. Leave them. These are what disambiguate reference from target.reference_image_2- optional second reference (usessource_id=3) for multi-shot identity.
The two real-world caveats
First: this node only works if the Best-Face-ID LoRA is loaded on the model path before it. Without the LoRA you still get reference injection, but the identity signal the LoRA was trained to read isn't there. Second, the community experience with TenStrip's face workflows is that small faces in wide shots are where identity falls apart - if the subject is 3 meters from camera, even this node can't conjure detail that isn't in the reference. Crop the source closer, or use a second reference with a clean face read. That "box effect" around the face people report is usually a face-detection/padding tuning problem, not a reason to abandon the node.
There's also a full-scene mode hiding here: set auto_face_crop=False and spatial_gating=off, and the whole reference image gets encoded as a general scene anchor - a genuinely good i2v stabilizer for lighting and composition, not just faces.
Install is the pack-wide clone (10S_Nodes into custom_nodes, restart, or ComfyUI Manager β "10S-Comfy-nodes"). The LoRA itself is a separate HuggingFace download (Alissonerdx/LTX-Best-Face-ID), and the pack needs the LTX2 model family to hook into - nothing else in the pack installs automatically.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| vae | VAE | β | |
| reference_image | IMAGE | β | |
| target_latent | LATENT | β | |
| identity_strengthopt | FLOAT | 1.000β2 | Scales reference latent magnitude. 1.0 = Best-Face-ID default. |
| face_paddingopt | FLOAT | 0.150β0.5 | Face bbox expansion β captures hair/neck context. |
| auto_face_cropopt | BOOLEAN | true | When a face is detected, auto-crop the reference image around the face at zoom_factor extent and match target aspect ratio. Dramatically improves identity transfer for wide/full-body references by giving the VAE much more face detail to encode. Turn off if reference is already tightly cropped. |
| crop_zoom_factoropt | FLOAT | 2.01.2β4 | How much context around the face to include. 2.0 = crop is 2x the face bbox (shoulders + hair). 1.5 = very tight (face + hair only). 3.0 = wide (upper body). Ignored if auto_face_crop off. |
| spatial_gatingopt | COMBO | mask_soft | Constrain identity influence to face region. mask_soft = cosine falloff (recommended). mask_hard = binary. off = uniform (raw Best-Face-ID). |
| placement_modeopt | COMBO | i2v_safe | i2v_safe / t2v_overlap = pure overlap layout (Best-Face-ID's 'what we use' default). Reference reuses target's coord grid, disambiguated by clean/noisy state and sequence position. prefix = additive offset (legacy). |
| source_idopt | FLOAT | 20β8 | RoPE source tag applied via v2 phase rotation. Best-Face-ID LoRA expects 2.0. source_id=0 disables rotation (falls back to overlap-only v1 behavior). |
| phase_scaleopt | FLOAT | 1.00β2 | Phase rotation magnitude multiplier. Best-Face-ID LoRA expects 1.0. Lower values reduce reference/target separation strength. |
| reference_image_2opt | IMAGE | Optional secondary reference (multi-subject). Uses source_id=3. | |
| debugopt | BOOLEAN | false | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |