File size: 5,238 Bytes
5b9aaea 3264705 6dccb69 5b9aaea 3264705 eb84fad 3264705 4837e57 3264705 eb84fad 4837e57 eb84fad 3264705 6dccb69 3264705 6dccb69 3264705 eb84fad 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 3264705 6dccb69 4837e57 6dccb69 3264705 6dccb69 3264705 eb84fad 6dccb69 3264705 6dccb69 eb84fad 6dccb69 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | ---
license: mit
pipeline_tag: image-to-3d
tags:
- image-to-3d
- 3d-generation
- mesh-generation
- pbr
- pixal3d
---
# Pixal3D β image-to-3D with PBR materials (full precision)
High-fidelity image-to-mesh with material baked in. **β85β120 s** per asset on
an RTX 5090, returning β15β17 MB `.glb` files that already carry shading.
> **What this repo is:** the Pixal3D pipeline at full precision β the three
> 1.3B transformers as β5.5 GB bf16 safetensors under `ckpts/`. Weights only,
> not a retrain. A **GGUF build of the same weights** (β2.7 GB per
> transformer) lives in
> [`ChrisColeTech/Pixal3D-GGUF`](https://huggingface.co/ChrisColeTech/Pixal3D-GGUF).
---
## Samples
Single image in, textured mesh out. Source images were rendered with Z-Image
Turbo; the meshes are Blender Workbench renders of the raw `.glb` β no
cleanup, no retopology, no separate paint stage.
> **Note on these samples:** they were rendered from the **GGUF build** of
> these weights, not from the full-precision files in this repo. Timings and
> mesh sizes come from that run. The architecture and settings are identical;
> expect the full-precision path to differ only marginally, but the numbers
> below are not measured on it.
<table>
<tr><td><img src="https://huggingface.co/ChrisColeTech/Pixal3D/resolve/main/samples/src-robot.png" width="330" alt="source photograph of a retro robot toy"></td><td><img src="https://huggingface.co/ChrisColeTech/Pixal3D/resolve/main/samples/mesh-robot.png" width="330" alt="generated mesh with baked material"></td></tr>
<tr><td><sub>**source** β `a cute chunky retro robot toy standing upright, rounded metal body, simple friendly face, studio product photograph on a plain white background`</sub></td><td><sub>**mesh** β 17.1 MB `.glb`, generated in 119 s, seed 42</sub></td></tr>
<tr><td><img src="https://huggingface.co/ChrisColeTech/Pixal3D/resolve/main/samples/src-teapot.png" width="330" alt="source photograph of a porcelain teapot"></td><td><img src="https://huggingface.co/ChrisColeTech/Pixal3D/resolve/main/samples/mesh-teapot.png" width="330" alt="generated mesh with baked material"></td></tr>
<tr><td><sub>**source** β `an ornate ceramic teapot with a curved spout and handle, glazed blue and white porcelain, studio product photograph`</sub></td><td><sub>**mesh** β 15.5 MB `.glb`, generated in 85 s, seed 42</sub></td></tr>
</table>
### Turntable
Four views, 90Β° apart.


The chest display and dial, the ear knobs and the boot flare all survive, and
the surface reads as brushed metal β material is produced with the geometry
rather than in a later pass.
## Recommended settings
| Parameter | Production value | Meaning |
|---|---|---|
| `seed` | any | Deterministic per seed |
| input | one RGB(A) image | Centred subject, plain background |
| output | `.glb` | Mesh **with baked material** |
**Supported modes:** `img2mesh`, `txt2mesh`, and the `_textured` variants
### Notes and gotchas
- **β Meshes export rotated 180Β° relative to some other generators.** Pixal3D
puts the subject's front along the opposite axis from TripoSG/TRELLIS.2, so
a fixed camera that frames those correctly will render Pixal3D output from
behind. If you batch-render thumbnails, orbit the camera 180Β° (or check one
contact sheet per model before trusting a shared preset).
- **Material comes for free** β no separate paint stage needed, which is the
main reason to choose this over a geometry-only model.
- **Loads in a low-VRAM mode** by default, reporting β0 GiB resident after
load and streaming weights in as it runs. Generation still wants the card
largely to itself; sharing a GPU with another model-serving process
produces failures that look like crashes rather than clean OOM errors.
- **Sparse-conv backend** β logs `[SPARSE] Conv backend: flex_gemm;
Attention backend: flash_attn` on load and pulls a `valeoai/NAF` estimator
from `torch.hub` on first run, so a fresh machine needs network access.
---
## Files
| Path | Size | Role |
|---|---|---|
| `ckpts/slat_flow_img2shape_dit_1_3B_1024_bf16.safetensors` | 5.55 GB | shape DiT, 1024 latents |
| `ckpts/slat_flow_img2shape_dit_1_3B_512_bf16.safetensors` | 5.55 GB | shape DiT, 512 latents |
| `ckpts/slat_flow_imgshape2tex_dit_1_3B_1024_bf16.safetensors` | 5.55 GB | texture DiT |
| `ckpts/ss_flow_img_dit_1_3B_64_bf16.safetensors` | 5.36 GB | sparse-structure DiT |
| `ckpts/shape_dec_next_dc_f16c32_fp16.safetensors` | 948 MB | shape decoder |
| `ckpts/tex_dec_next_dc_f16c32_fp16.safetensors` | 948 MB | texture decoder |
| `ckpts/ss_dec_conv3d_16l8_fp16.safetensors` | 148 MB | sparse-structure decoder |
For roughly half the download and resident footprint, use the GGUF build:
[`ChrisColeTech/Pixal3D-GGUF`](https://huggingface.co/ChrisColeTech/Pixal3D-GGUF).
---
## Provenance
- **Upstream base model:** Pixal3D (TencentARC)
- **This build:** redistributed as-is at full precision. Weights are not retrained here.
- **License:** MIT, per upstream.
|