Hi3D v1.0 Refines Coarse Meshes to 1536³ Geometry
Hi3D v1.0, released October 23, 2026, refines a coarse mesh into high-resolution geometry with a three-pass sparse pipeline, conditioned on one reference image.
System overview from the project repository: image features condition sparse flow on coordinates taken from the coarse geometry, and each extracted mesh is revoxelized to seed the next pass.
A second stage instead of another generator
Image-to-3D pipelines in ComfyUI, including the TRELLIS.2 and Pixal3D nodes, end with one mesh produced in a single cascade. Whatever detail that cascade misses is gone: thin relief flattens, moldings and teeth smear, and the result is only as sharp as the shape stage was.
Hi3D v1.0 is built for the step after that. It does not generate a mesh from an image on its own; it assumes a coarse mesh already exists and concentrates capacity on making its geometry denser and more faithful, using the same reference image as a conditioning signal rather than as a reconstruction target. The coarse mesh can come from any generator, or from an artist.
The project is built on Sparc3D, and the Python package and public API keep the original names for compatibility: importing the refinement pipeline still looks like from sparc3d import Sparc3DPipeline.
The three-pass ladder
A pass samples a latent at every occupied voxel coordinate, decodes it into a signed-distance field, extracts a mesh, and then revoxelizes that mesh to provide the sparse support for the next pass. Asking for a higher resolution simply runs more passes on top of the previous mesh.
| Pass | Nominal structure grid | Voxel budget | Transformer | Extraction grid |
|---|---|---|---|---|
| 1 | 64³ | 80,000 | transformer_512 | 512³ |
| 2 | 128³ | 90,000 | transformer_1024 | 1024³ |
| 3 | 192³ | 110,000 | transformer_1024 | 1536³ |
A 512³ request runs the first pass, 1024³ runs two, and 1536³ runs all three. The project is explicit that these numbers describe sparse coordinate and extraction grids, not a dense 1536³ latent tensor or a guaranteed triangle count, so a 1536³ run does not mean a fixed 1536³ voxel volume.
Two transformers carry the work. Each has 24 blocks, a width of 2,112 channels across 22 attention heads, and roughly 1.8 billion parameters. Every block applies sparse self-attention over voxels, cross-attention to the image tokens, and an MLP, with rotary position embeddings and RMS normalization on self-attention queries and keys. Sampling uses 25 scheduler updates per pass by default, with a second-order sampler.
Image conditioning comes from two frozen encoders: DINOv2-large at 756×756, producing 2,917 image tokens of 1,024 channels, and CLIP ViT-L/14 at 224×224, producing a pooled embedding that is broadcast across those positions. The concatenated result is computed once and reused by every pass.
What changes on the surface
The clearest evidence in the release is the close-up comparison, where each method is asked to describe the same reference region: layered relief, architectural moldings, curved boundaries, scales and teeth, concentric grooves. Hi3D v1.0 is the rightmost column.
Reference regions are marked with red boxes and shown enlarged per row, as shaded geometry and as colored surface normals.
The wider test is four objects (a vehicle, an armored character, an armchair, a handbag) seen from the front, back and bottom, which is where a refinement stage either keeps a coherent silhouette or drifts away from the reference.
Shaded geometry and surface-normal renderings side by side. Hidden views illustrate plausible completion rather than exact reconstruction of unseen surfaces.
The report behind the release describes training on roughly two million curated 3D assets. Training code, the evaluation harness and the comparison meshes are not part of the release, so the published tables cannot be reproduced from the repository alone; the numbers above are the project's own.
What the refinement stage does not do
The scope statements in the model card are unusually direct, and they set expectations correctly:
- Geometry only. No textures, no materials, no vertex colors. Hi3D returns a
trimeshmesh, and the output is recentered and normalized to a unit maximum radius, so world coordinates and absolute scale are not preserved. - The coarse stage decides a lot. Severe structural errors in the input mesh can survive refinement, and geometry that the reference image never shows becomes a plausible completion, not a reconstruction.
- Resolution is a request, not a guarantee. A run that cannot reach the requested resolution raises an error instead of quietly returning a coarser mesh.
Availability
Hi3D v1.0 ships as a Python inference package with weights on Hugging Face: eight runtime files laid out at the repository root, with the two transformers loaded as separate components. The optional coarse stage is an adapter for Hunyuan3D-2 mini, and it is explicitly not a dependency: demo/refine_mesh.py and Sparc3DPipeline accept any triangle mesh directly. A hosted demo is online for trying the refinement without an install.
There is no ComfyUI integration yet. The repository contains no custom nodes, no workflow templates and no references to ComfyUI, so Hi3D currently runs outside ComfyUI through its own pipeline. In the Banodoco 3D channels, where the release was shared on October 27, the immediate question was whether native nodes follow; the model is used there as a refinement stage in front of the TRELLIS.2 and Pixal3D workflows people already run.
Comments
Sign in with GitHub to join the discussion.