LTX-Video 2.3 22B — IC-LoRA: CrossView Warp v2
Give it a video and a camera offset — azimuth, elevation, distance — and it generates the same scene from that new viewpoint.
It is an IC-LoRA for LTX-Video. It reads two reference videos: a depth-warp of your clip, which carries the geometry, and the clip itself, which carries the identity. The warp comes from the CrossViewWarp ComfyUI node.
The offset doesn't have to be one fixed pose. The node's 3D orbit picker takes keyframes and interpolates a camera pose per frame, so you can drive a whole camera move, not just a new static viewpoint.
What changed since v0.9
v0.9 was a proof of concept. This version shares almost nothing with it but the idea:
| v0.9 | v2 | |
|---|---|---|
| Training data | 548 pairs from SynCamVideo + Syn4D | 719 scenes I rendered myself in Blender |
| Depth | Depth Anything V2, scale-fitted to known geometry | MoGe-2, native metric — no fit |
| LoRA targets | attention only | attention + feed-forward |
| Warp resolution | downscale 2 | downscale 1 (full resolution) |
Examples
- Prompt
- Crossview.
- Prompt
- Crossview.
- Prompt
- Crossview.
- Prompt
- Crossview.
- Prompt
- Crossview.
Usage (ComfyUI)
There is a ready-made graph — ltx2.3-ic-lora-crossview-warp-v2.json — which is the workflow the gallery clips were generated with. Load that and you only need to point it at your own video and set the camera. The steps below are what it wires up, in case you are building your own.
- Install the ComfyUI-CrossViewWarp node.
- Depth comes from MoGe, which is a core ComfyUI node.
- Load
LTX2.3-22B_IC-LoRA-CrossView-Warp_v2_6000.safetensorsas the IC-LoRA. - Wire your clip to both an IC-LoRA reference guide and the CrossViewWarp
node. The node's
warpoutput goes to the other guide. Setlatent_downscale_factor = 1on both. - The prompt is one word:
crossview. - Set the camera on the CrossView Warp node
- If the effect of the LoRA is weak, increase the LoRA strength to 1.2-1.3.
Angle range
How far you can push the camera, and how much I'd trust each range:
| Azimuth | Elevation | Why | |
|---|---|---|---|
| Reliable | up to ±45° | −20° to +30° | evenly represented in training, and the range I swept properly |
| Usable | ±45° to ±90° | +30° to +40° | in the data but not systematically tested |
| Weakest | — | below −20° | 22 of 719 scenes. Looking up at a subject is the direction the data starves |
Training
Trained on RunPod cloud GPUs — NVIDIA RTX PRO 6000 Blackwell, 96 GB.
| Base model | LTX-Video 2.3 (22B) |
| Framework | ltx-trainer (Lightricks), unmodified |
| Strategy | IC-LoRA, flexible, dual reference conditioning |
| Released checkpoint | step 6,000 |
| LoRA rank / alpha | 32 / 32 |
| Target modules | attn1, attn2 (to_k/q/v/out.0) and ff.net.0.proj, ff.net.2 |
| Trainable parameters | 163,577,856 |
| Optimizer | AdamW 2.5e-4, cosine_with_restarts, eta_min 2.5e-5, T_0 1500 |
| Schedule | 6,000 optimizer steps × grad-accum 4 = 24,000 samples = 33.4 epochs |
| Batch | 1, gradient checkpointing |
| Precision | bf16 |
| Resolution | 768×768 × 81 frames, single bucket |
| References | depth-warp + source, both downscale_factor 1, order [warp, source] |
| Measured | 46.85 s/step, ~86 h, 65.4 of 95.6 GB peak |
Dataset
719 scenes, rendered in Blender 4.2 . I rendered 978, 772 passed the quality gates, and 719 survived a cap of 130 scenes per azimuth band.
Each sample is a source view, a target view from a second camera, and a depth-warp of the source into the target's pose as the geometric conditioning. The warps use MoGe-2 ViT-L metric depth.
Limitations
- It steers the viewpoint, it doesn't reproject it. It treats the warp as a suggestion and regenerates the frame, so even parts that were perfectly visible in your clip come back redrawn rather than copied. You often get less rotation than you asked for, and at large angles most of what you see is invented rather than recovered from your footage.
- Distance barely moves in the training data. A big pull-back is outside anything the model saw, and it will under-deliver. This is the one place a prompt earns its keep: describe the clothing and background the wider frame should reveal.
- Looking up from below is the weak axis. 3.1% of the training scenes.
pivot_zhas to be found per clip
License
The LoRA weights in this repository are released under the Apache License 2.0.
They were trained on 719 scenes I rendered myself. Those renders contain third-party assets — CC-BY 3D models, CC0 HDRIs and textures, and CMU motion capture. Every one is listed in ATTRIBUTION.md.
Using this LoRA requires the LTX-Video base model, governed by Lightricks' own terms — review those separately. Building the conditioning requires MoGe-2.
Support
Everything here is open, and the GPUs behind it are rented. If this was useful, please consider supporting my work:
Model tree for Cseti/LTX2.3-22B_IC-LoRA-CrossView-Warp_v2
Base model
Lightricks/LTX-2.3