DreamX-World is a general-purpose world model for interactive world simulation. It generates diverse, high-fidelity worlds that users can explore, control, and transform with event prompts.
DreamX-World-5B is the long-horizon autoregressive variant of DreamX-World. It is built on top of Wan2.2-TI2V-5B and generates videos from an input image, a text prompt, and keyboard-style camera action commands. Compared with the 5B-Cam variant, DreamX-World-5B uses chunk-wise causal autoregressive inference with KV caching, making long-horizon generation practical, including videos up to about 1 minute at 16 FPS.
The model is trained with a scalable data engine on Unreal Engine data, gameplay footage, and real-world videos, together with camera estimation and data filtering. DreamX-World follows a progressive training pipeline for action control, open-ended event response, reinforcement-learning-based action following, and efficient inference through forcing and distillation.
Clone the inference code and install dependencies:
git clone https://github.com/AMAP-ML/DreamX-World
cd DreamX-World
pip install -r requirements.txt
Key dependencies include:
torch==2.5.1torchvision==0.20.1diffusers>=0.30.1transformers>=4.46.2xfuser==0.4.1flash_attn==2.8.3triton==3.1.0DreamX-World-5B uses Wan2.2-TI2V-5B components for the text encoder, tokenizer, and VAE:
pip install "huggingface_hub[cli]"
huggingface-cli download Wan-AI/Wan2.2-TI2V-5B --local-dir ./Wan2.2-TI2V-5B
Download the DreamX-World-5B checkpoint from this repository and set BASE_CHECKPOINT_PATH to the .pt checkpoint path.
The inference script expects a JSON list. Each item contains an initial image, a text prompt, and camera actions:
[
{
"image_path": "./demo/your_image.png",
"caption": "Style: Photorealistic. A description of the scene and desired world behavior.",
"action_seq": ["w", "wj", "wl"],
"action_speed_list": [4, 6, 6]
}
]
In the current inference script, action_speed_list is used as the relative duration weight for each action segment. For example, [4, 6, 6] allocates the rollout across the three action segments in a 4:6:6 ratio.
DreamX-World-5B uses WASD for camera translation and IJKL for camera rotation:
| Action | Camera Control |
|---|---|
w | Push in |
s | Pull out |
a | Move left |
d | Move right |
i | Tilt up |
k | Tilt down |
j | Pan left |
l | Pan right |
Actions can be composed in one string:
wi: push in while tilting upwk: push in while tilting downwj: push in while panning leftwl: push in while panning rightdj: move right while panning leftUse the provided AR-forcing script:
BASE_CHECKPOINT_PATH=./DreamX-World-5B/baseline.pt \
MODEL_NAME=./Wan2.2-TI2V-5B \
DATA_PATH=configs/dreamx/eval.json \
OUTPUT_FOLDER=./outputs_ar \
bash inference_ar_forcing.sh
For custom generation length or direct control over all arguments, run the Python entry point:
python inference_ar_forcing.py \
--config_path configs/dreamx-ar/causal_camera_forcing_5b.yaml \
--model_name ./Wan2.2-TI2V-5B \
--transformer_path ./configs/dreamx-ar/ \
--base_checkpoint_path ./DreamX-World-5B/baseline.pt \
--data_path configs/dreamx/eval.json \
--output_folder ./outputs_ar \
--num_output_frames 123 \
--fps 16 \
--seed 42 \
--color_correction_strength 1.0 \
--chunk_relative
--num_output_frames is the number of latent frames. The generated pixel-frame count is:
pixel_frames = (num_output_frames - 1) * 4 + 1
Because the default causal block size is 3 latent frames, num_output_frames should be divisible by 3. Examples:
num_output_frames | Pixel frames | Duration at 16 FPS |
|---|---|---|
| 21 | 81 | ~5.1s |
| 63 | 249 | ~15.6s |
| 123 | 489 | ~30.6s |
| 243 | 969 | ~60.6s |
| Attribute | Value |
|---|---|
| Architecture | Causal Wan/Wan2.2-style Diffusion Transformer |
| Parameters | ~5B |
| Base Model | Wan2.2-TI2V-5B |
| Input | Initial image, text prompt, camera action sequence |
| Output | Camera-controlled video |
| Resolution | 704 x 1280 in the provided inference script |
| FPS | 16 |
| Long-horizon Length | Up to about 1 minute |
| Camera Control | PRoPE camera conditioning from generated camera trajectories |
| Action Interface | WASD translation + IJKL view rotation |
| Inference Mode | Chunk-wise causal autoregressive generation with KV cache |
| Causal Block Size | 3 latent frames per block by default |
| VAE | Wan2.2 VAE, temporal compression 4x, spatial compression 16x |
| Text Encoder | UMT5-XXL |
| Precision | BFloat16 |
Join our WeChat group for discussion:
This model is released under the MIT License.
If you find this model useful, please cite:
@article{dreamxworld2026,
title={DreamX-World: A General-Purpose Interactive World Model},
author={DreamX Team},
journal={arXiv preprint arXiv:2606.16993},
year={2026}
}
We thank the Wan Team for open-sourcing their code and models.
7 commits
DreamX-World is a general-purpose world model for interactive world simulation. It generates diverse, high-fidelity worlds that users can explore, control, and transform with event prompts.
DreamX-World-5B is the long-horizon autoregressive variant of DreamX-World. It is built on top of Wan2.2-TI2V-5B and generates videos from an input image, a text prompt, and keyboard-style camera action commands. Compared with the 5B-Cam variant, DreamX-World-5B uses chunk-wise causal autoregressive inference with KV caching, making long-horizon generation practical, including videos up to about 1 minute at 16 FPS.
The model is trained with a scalable data engine on Unreal Engine data, gameplay footage, and real-world videos, together with camera estimation and data filtering. DreamX-World follows a progressive training pipeline for action control, open-ended event response, reinforcement-learning-based action following, and efficient inference through forcing and distillation.
Clone the inference code and install dependencies:
git clone https://github.com/AMAP-ML/DreamX-World
cd DreamX-World
pip install -r requirements.txt
Key dependencies include:
torch==2.5.1torchvision==0.20.1diffusers>=0.30.1transformers>=4.46.2xfuser==0.4.1flash_attn==2.8.3triton==3.1.0DreamX-World-5B uses Wan2.2-TI2V-5B components for the text encoder, tokenizer, and VAE:
pip install "huggingface_hub[cli]"
huggingface-cli download Wan-AI/Wan2.2-TI2V-5B --local-dir ./Wan2.2-TI2V-5B
Download the DreamX-World-5B checkpoint from this repository and set BASE_CHECKPOINT_PATH to the .pt checkpoint path.
The inference script expects a JSON list. Each item contains an initial image, a text prompt, and camera actions:
[
{
"image_path": "./demo/your_image.png",
"caption": "Style: Photorealistic. A description of the scene and desired world behavior.",
"action_seq": ["w", "wj", "wl"],
"action_speed_list": [4, 6, 6]
}
]
In the current inference script, action_speed_list is used as the relative duration weight for each action segment. For example, [4, 6, 6] allocates the rollout across the three action segments in a 4:6:6 ratio.
DreamX-World-5B uses WASD for camera translation and IJKL for camera rotation:
| Action | Camera Control |
|---|---|
w | Push in |
s | Pull out |
a | Move left |
d | Move right |
i | Tilt up |
k | Tilt down |
j | Pan left |
l | Pan right |
Actions can be composed in one string:
wi: push in while tilting upwk: push in while tilting downwj: push in while panning leftwl: push in while panning rightdj: move right while panning leftUse the provided AR-forcing script:
BASE_CHECKPOINT_PATH=./DreamX-World-5B/baseline.pt \
MODEL_NAME=./Wan2.2-TI2V-5B \
DATA_PATH=configs/dreamx/eval.json \
OUTPUT_FOLDER=./outputs_ar \
bash inference_ar_forcing.sh
For custom generation length or direct control over all arguments, run the Python entry point:
python inference_ar_forcing.py \
--config_path configs/dreamx-ar/causal_camera_forcing_5b.yaml \
--model_name ./Wan2.2-TI2V-5B \
--transformer_path ./configs/dreamx-ar/ \
--base_checkpoint_path ./DreamX-World-5B/baseline.pt \
--data_path configs/dreamx/eval.json \
--output_folder ./outputs_ar \
--num_output_frames 123 \
--fps 16 \
--seed 42 \
--color_correction_strength 1.0 \
--chunk_relative
--num_output_frames is the number of latent frames. The generated pixel-frame count is:
pixel_frames = (num_output_frames - 1) * 4 + 1
Because the default causal block size is 3 latent frames, num_output_frames should be divisible by 3. Examples:
num_output_frames | Pixel frames | Duration at 16 FPS |
|---|---|---|
| 21 | 81 | ~5.1s |
| 63 | 249 | ~15.6s |
| 123 | 489 | ~30.6s |
| 243 | 969 | ~60.6s |
| Attribute | Value |
|---|---|
| Architecture | Causal Wan/Wan2.2-style Diffusion Transformer |
| Parameters | ~5B |
| Base Model | Wan2.2-TI2V-5B |
| Input | Initial image, text prompt, camera action sequence |
| Output | Camera-controlled video |
| Resolution | 704 x 1280 in the provided inference script |
| FPS | 16 |
| Long-horizon Length | Up to about 1 minute |
| Camera Control | PRoPE camera conditioning from generated camera trajectories |
| Action Interface | WASD translation + IJKL view rotation |
| Inference Mode | Chunk-wise causal autoregressive generation with KV cache |
| Causal Block Size | 3 latent frames per block by default |
| VAE | Wan2.2 VAE, temporal compression 4x, spatial compression 16x |
| Text Encoder | UMT5-XXL |
| Precision | BFloat16 |
Join our WeChat group for discussion:
This model is released under the MIT License.
If you find this model useful, please cite:
@article{dreamxworld2026,
title={DreamX-World: A General-Purpose Interactive World Model},
author={DreamX Team},
journal={arXiv preprint arXiv:2606.16993},
year={2026}
}
We thank the Wan Team for open-sourcing their code and models.
7 commits