UltraTex Qwen-Image 2.1 port
This is a port of UltraTex (MIT, Yibo Zhang) to the Qwen-Image 2.1 backbone, trained by Atlas 3D (orwelian84). The released UltraTex weights only cover FLUX.1-dev and FLUX.2-Klein, so this is, to our knowledge, the first Qwen-Image multi-view texture LoRA.
Code: github.com/Atlas3DSS/UltraTex (fork of upstream with the Qwen-Image 2.1 and Krea 2 backbones on the default branch). The code/ folder here is a snapshot of the same files.
The method is UltraTex's. This release is the backbone port (code/) plus the trained weights (qwen21/) and samples.
Files
| Path |
Size |
Description |
qwen21/lora/dit_lora.safetensors |
608 MiB |
Multi-view texture LoRA, checkpoint-15000 |
qwen21/lora/train_args.json |
1.5 KiB |
Training arguments for the LoRA |
qwen21/decoder_step1200.safetensors |
988 MiB |
Foreground-aware RGBA decoder, step 1200 |
qwen21/decoder_train_log.jsonl |
89 KiB |
Decoder training log |
qwen21/text_cond.safetensors |
64 KiB |
Cached empty-prompt text conditioning |
qwen21/text_cond.json |
122 B |
Metadata for the text conditioning cache |
code/ |
~0.2 MiB |
Qwen-Image 2.1 backbone and pipeline changes, scripts, tools, tests (apply on top of upstream UltraTex) |
code/README.md |
15 KiB |
UltraTex README as of this port |
samples/eval_grid_ckpt15000.webp |
495 KiB |
Evaluation grid, checkpoint-15000 |
samples/albedo_canvas_ckpt15000.webp |
651 KiB |
Albedo canvas output, checkpoint-15000 |
samples/fox_flux2_left_vs_qwen21_right.glb |
21 MiB |
Fox comparison: stock FLUX.2-Klein UltraTex (left) vs this LoRA (right) |
samples/qwen21_ckpt15000_side_by_side.glb |
101 MiB |
Side-by-side GLB, this LoRA at checkpoint-15000 |
samples/fox_adventurer_v2_skinned.glb |
12 MiB |
Skinned sample mesh |
samples/axolotl_suit_skinned.glb |
14 MiB |
Skinned sample mesh |
samples/robot_companion_skinned.glb |
12 MiB |
Skinned sample mesh |
Training
- LoRA rank 64, alpha 64
- 15,000 steps, 1024 px per view, batch 1
- lr 5e-5, constant; bf16; seed 42
- Sparse attention top-k 0.2
- Trained on G-buffer TexVerse (YiboZhang2001/G-buffer-TexVerse, gated)
- Foreground-aware RGBA decoder fine-tuned for 1,200 steps; foreground PSNR 38.65 dB
- Text conditioning is the cached empty prompt from Qwen3-VL-8B
Usage
- Clone Atlas3DSS/UltraTex (or apply
code/ on top of upstream UltraTex).
- Put
qwen21/ at checkpoints/qwen21/.
- Set the paths in
scripts/mv_env.sh to a ComfyUI checkout with Qwen-Image 2.1 support.
- Run multi-view inference:
BACKBONE=qwen21 LORA=checkpoints/qwen21/lora DECODER_CKPT=checkpoints/qwen21/decoder_step1200.safetensors bash scripts/inference_mv.sh
Or run one mesh end to end:
BACKEND=qwen21 bash scripts/skin_mesh.sh MESH.glb REF.png OUT_DIR
Base weights are not included: Qwen-Image 2.1 (bf16), its VAE, and Qwen3-VL-8B must be obtained separately.
Samples
The GLBs are TRELLIS meshes generated from Krea 2 concept art, textured with this LoRA. The fox comparison GLB has stock FLUX.2-Klein UltraTex on the left and this LoRA on the right.
Credits
Method: UltraTex, by Yibo Zhang and contributors (MIT), github.com/yiboz2001/UltraTex. Qwen-Image 2.1 port, training, and weights: Atlas 3D.