readme
Browse files- .gitattributes +3 -0
- README.md +85 -3
- assets/logo.png +3 -0
- assets/step1x-3d-framework-overall.jpg +3 -0
- assets/step1x-3d-teaser.png +3 -0
- assets/stepfun_illusions_logo.jpeg +3 -0
.gitattributes
CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
37 |
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
38 |
+
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
@@ -2,7 +2,89 @@
|
|
2 |
license: apache-2.0
|
3 |
---
|
4 |
|
5 |
-
# Step1X-3D
|
6 |
|
7 |
-
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
license: apache-2.0
|
3 |
---
|
4 |
|
|
|
5 |
|
6 |
+
<h1 align="center"> Step1X-3D: Towards High-Fidelity and Controllable<br>Generation of Textured 3D Assets</h1>
|
7 |
+
|
8 |
+
<p align="center">
|
9 |
+
<img src="assets/stepfun_illusions_logo.jpeg" width="100%">
|
10 |
+
</p>
|
11 |
+
|
12 |
+
<div align="center">
|
13 |
+
<img width="" alt="demo" src="assets/step1x-3d-teaser.png">
|
14 |
+
</div>
|
15 |
+
|
16 |
+
<div align="left">
|
17 |
+
<p><b>Step1X-3D demonstrates the capability to generate 3D assets with high-fidelity geometry and versatile texture maps, while maintaining exceptional alignment between surface geometry and texture mapping. From left to right, we sequentially present: the base geometry (untextured), followed by cartoon-style, sketch-style, and photorealistic 3D asset generation results.</b></p>
|
18 |
+
</div>
|
19 |
+
|
20 |
+
|
21 |
+
## 🔥🔥🔥 Latest News!!
|
22 |
+
* May 13, 2025: 👋 Step1X-3D online demo is available on huggingface-enjoy yourself with generated 3D assets! [Huggingface web live](https://huggingface.co/spaces/stepfun-ai/Step1X-3D)
|
23 |
+
* May 13, 2025: 👋 We release the 800K uids of high quality 3D assets (excluding self-collected assets) obtained with our rigorous data curation pipeline for both training 3D geometry and synthesis. [Huggingface dataset](https://huggingface.co/datasets/stepfun-ai/Step1X-3D-obj-data/tree/main)
|
24 |
+
* May 13, 2025: 👋 We have also release the training code of both Step1X-3D geometry generation and texture synthesis.
|
25 |
+
* May 13, 2025: 👋 We have released the inference code and model weights of Step1X-3D geometry and Step1X-3D texture.
|
26 |
+
* May 13, 2025: 👋 We have released Step1X-3D [technical report]() as open source.
|
27 |
+
|
28 |
+
## Introduction
|
29 |
+
While generative artificial intelligence has advanced significantly across text, image, audio, and video domains, 3D generation remains comparatively underdeveloped due to fundamental challenges such as data scarcity, algorithmic limitations, and ecosystem fragmentation.
|
30 |
+
To this end, we present Step1X-3D, an open framework addressing these challenges through:
|
31 |
+
(1) a rigorous data curation pipeline processing >5M assets to create a 2M high-quality dataset with standardized geometric and textural properties;
|
32 |
+
(2) a two-stage 3D-native architecture combining a hybrid VAE-DiT geometry generator
|
33 |
+
with an SD-XL-based texture synthesis module; and (3) the full open-source release of models, training code, and adaptation modules. For geometry generation, the hybrid VAE-DiT component produces watertight TSDF representations by employing perceiver-based latent encoding with sharp edge sampling for detail preservation. The SD-XL-based texture synthesis module then ensures cross-view consistency through geometric conditioning and latent-space synchronization.
|
34 |
+
Benchmark results demonstrate state-of-the-art performance that exceeds existing open-source methods, while also achieving competitive quality with proprietary solutions.
|
35 |
+
Notebly, the framework uniquely bridges 2D and 3D generation paradigms by supporting direct transfer of 2D control techniques~(e.g., LoRA) to 3D synthesis.
|
36 |
+
By simultaneously advancing data quality, algorithmic fidelity, and reproducibility, Step1X-3D aims to establish new standards for open research in controllable 3D asset generation.
|
37 |
+
<img width="" alt="framework" src="assets/step1x-3d-framework-overall.jpg">
|
38 |
+
|
39 |
+
|
40 |
+
## Usage
|
41 |
+
|
42 |
+
```python
|
43 |
+
# Stage 1: 3D geometry generation
|
44 |
+
from step1x3d_geometry.models.pipelines.pipeline import Step1X3DGeometryPipeline
|
45 |
+
|
46 |
+
# define the pipeline
|
47 |
+
geometry_pipeline = Step1X3DGeometryPipeline.from_pretrained("stepfun-ai/Step1X-3D", subfolder='Step1X-3D-Geometry-1300m'
|
48 |
+
).to("cuda")
|
49 |
+
|
50 |
+
# input image
|
51 |
+
input_image_path = "examples/test.png"
|
52 |
+
|
53 |
+
# run pipeline and obtain the untextured mesh
|
54 |
+
generator = torch.Generator(device=geometry_pipeline.device).manual_seed(2025)
|
55 |
+
out = geometry_pipeline(input_image_path,guidance_scale=7.5, num_inference_steps=50)
|
56 |
+
|
57 |
+
# export untextured mesh as .glb format
|
58 |
+
out.mesh[0].export("untexture_mesh.glb")
|
59 |
+
|
60 |
+
|
61 |
+
# Stage 2: 3D texure synthsis
|
62 |
+
from step1x3d_texture.pipelines.step1x_3d_texture_synthesis_pipeline import (
|
63 |
+
Step1X3DTexturePipeline,
|
64 |
+
)
|
65 |
+
from step1x3d_geometry.models.pipelines.pipeline_utils import reduce_face, remove_degenerate_face
|
66 |
+
import trimesh
|
67 |
+
|
68 |
+
# load untextured mesh
|
69 |
+
untexture_mesh = trimesh.load("untexture_mesh.glb")
|
70 |
+
|
71 |
+
# define texture_pipeline
|
72 |
+
texture_pipeline = Step1X3DTexturePipeline.from_pretrained("stepfun-ai/Step1X-3D", subfolder="Step1X-3D-Texture")
|
73 |
+
|
74 |
+
# reduce face
|
75 |
+
untexture_mesh = remove_degenerate_face(untexture_mesh)
|
76 |
+
untexture_mesh = reduce_face(untexture_mesh)
|
77 |
+
|
78 |
+
# texture mapping
|
79 |
+
textured_mesh = texture_pipeline(input_image_path, untexture_mesh)
|
80 |
+
|
81 |
+
# export textured mesh as .glb format
|
82 |
+
textured_mesh.export("textured_mesh.glb")
|
83 |
+
```
|
84 |
+
|
85 |
+
## Citation
|
86 |
+
If you find our work helpful, please cite us
|
87 |
+
|
88 |
+
```
|
89 |
+
|
90 |
+
```
|
assets/logo.png
ADDED
![]() |
Git LFS Details
|
assets/step1x-3d-framework-overall.jpg
ADDED
![]() |
Git LFS Details
|
assets/step1x-3d-teaser.png
ADDED
![]() |
Git LFS Details
|
assets/stepfun_illusions_logo.jpeg
ADDED
![]() |
Git LFS Details
|