LTX-Video 2.3 22B — IC-LoRA: CrossView Prompt v0.9
A fine-tuned In-Context LoRA (IC-LoRA) adapter for LTX-Video 2.3 (22B) that acts as a virtual second camera: give it a reference video and a short camera-angle prompt, and it re-renders the same scene from the requested new viewpoint keeping the subject and content, changing where the camera stands.
v0.9 — proof-of-concept. Trained on synthetic multi-view data; it generalizes to real footage but has clear limits (see Limitations). Feedback welcome.
Example outputs
Each video shows the reference (top) and the generated new camera view (bottom) for the given prompt.
- Prompt
- crossview. new camera angle: to the right, lower, closer.
- Prompt
- crossview. new camera angle: to the right, lower, further.
- Prompt
- crossview. new camera angle: to the right, lower, closer.
- Prompt
- crossview. new camera angle: to the left, higher, further.
- Prompt
- crossview. new camera angle: to the left, higher, further.
- Prompt
- crossview. new camera angle: to the left, higher, further.
- Prompt
- crossview. new camera angle: to the left, higher, closer.
- Prompt
- crossview. new camera angle: to the left, higher, further.
Usage (ComfyUI)
I tested this LoRA only in ComfyUI, in a video-to-video (IC-LoRA) workflow. An example workflow is here: https://huggingface.co/datasets/Cseti/ComfyUI-Workflows/blob/main/ltx/2.3/ic-lora-crossview-v1-pilot/README.md
How it works:
- Load
LTX2.3-22B_IC-LoRA-CrossView-Prompt_v0.9_13700.safetensorsas the LoRA. - Provide a reference video — the scene you want to re-shoot from a new angle.
- Provide a camera-angle prompt (see the vocabulary below). No starting image is needed
Prompt vocabulary (important)
Unlike a free-text LoRA, this model was trained on a fixed, discrete camera
vocabulary. Every prompt must start with the trigger crossview. followed by
the template:
crossview. new camera angle: {azimuth}, {elevation}, {distance}.
| Axis | Allowed phrases |
|---|---|
| azimuth (orbit around the subject) | same angle · slightly to the left · slightly to the right · to the left · to the right · far to the left · far to the right |
| elevation (camera height) | lower · same height · higher |
| distance (to the subject) | closer · same distance · further |
- left / right = the new camera moves to that side around the subject.
- higher = the camera looks down from above; lower = looks up from below.
- closer / further = the camera's distance to the subject.
All 63 valid combinations are listed in
captions_all_63.txt. Use these exact phrases — the
model learned this vocabulary specifically, so synonyms ("45 degrees left",
"slightly leftward") work less reliably.
Example prompts:
crossview. new camera angle: to the right, lower, closer.
crossview. new camera angle: to the left, higher, further.
crossview. new camera angle: same angle, same height, closer.
Tips
- Angle size & chaining: the model works most reliably on small, single-step angle changes. For a larger viewpoint shift, chain several small steps — feed the generated view back in as the new reference and apply another small angle.
- Full prompt list: every prompt used to train this model is in
captions_all_63.txt— use these exact phrases. - Distilled model: the LoRA was trained on the full (non-distilled) LTX-2.3. On distilled few-step workflows its effect is weaker — try a LoRA strength of 1.2–1.5, and/or run it in the first (non-distilled) pass.
Training Details
This IC-LoRA was trained on RunPod cloud GPUs (NVIDIA RTX PRO 6000 Blackwell, 96 GB).
| Parameter | Value |
|---|---|
| Base model | LTX-Video 2.3 (22B) |
| Training framework | ltx-trainer (Lightricks) |
| Training strategy | IC-LoRA (flexible, reference conditioning) |
| Released checkpoint | step 13,700 (12k linear + 1.7k warm-start continuation) |
| LoRA rank / alpha | 16 / 16 |
| Target modules | attn1, attn2 (to_k/q/v/out) — attention only |
| Optimizer | AdamW — 2e-4 linear decay (main), 1e-4 constant (continuation) |
| Timestep sampling | uniform sigma [0.4, 1.0] |
| Mixed precision | bf16 |
| Batch size | 1 (gradient checkpointing enabled) |
| Conditioning | reference p=1.0 + first_frame p=0.2 |
| Training dataset | 294 pairs |
| Resolution | 768x768x81 @ 15fps |
Dataset
Trained on SynCamVideo (KlingTeam, Apache-2.0) — a synthetic multi-camera dataset rendered in Unreal Engine 5, with 10 static cameras per scene sampled on a hemisphere around the subject. 294 curated reference/target camera pairs, balanced across the caption vocabulary:
| Azimuth bin | Pairs |
|---|---|
| same angle | 42 |
| slightly to the left / right | 42 / 42 |
| to the left / right | 42 / 42 |
| far to the left / right | 42 / 42 |
Elevation and distance are mixed roughly evenly within each azimuth bin. Captions are camera-delta only (no scene description).
The exact curated pairs, captions and clips used to train this LoRA are released as a companion dataset: CrossView Prompt Dataset.
Limitations
- Viewpoint range: the training cameras span a frontal sector (~±60° azimuth max) — "view from behind" is out of range.
- Distilled model: weaker on distilled few-step models (see Tips).
License
This LoRA is shared under the Apache License 2.0. It was trained entirely on the SynCamVideo dataset, which is itself Apache-2.0 licensed, so the training data places no additional restrictions on this adapter and it can be released under the same permissive terms.
Note: using this LoRA requires the LTX-Video 2.3 base model, which is governed by its own license — please review Lightricks' terms for the base weights separately.
Support
Producing and sharing this kind of open-source work requires renting cloud GPUs, which gets expensive quickly. If you find it useful and would like me to keep contributing, your support is very much appreciated:
Model tree for Cseti/LTX2.3-22B_IC-LoRA-CrossView-Prompt
Base model
Lightricks/LTX-2.3