如何用Hunyuan3D-2从单张图片生成带纹理的高清3D资产,免费且最快28秒完成
【免费下载链接】Hunyuan3D-2High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models.项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2
Hunyuan3D-2 是腾讯混元团队开源的大规模 3D 资产生成系统:给它一张图片,它先重建出无纹理的 3D 网格,再为其合成高分辨率 PBR 纹理(PBR 是一种模拟真实材质光照反应的纹理表达)。官方给出的参考数据是:标准模式全流程约 2 分 47 秒,换成 Turbo 蒸馏模型后压缩到 5 步采样,形状生成约 28 秒;只做形状生成约 6 GB 显存,形状+纹理全流程约 16 GB 显存。本文不按"先讲原理再动手"的常规顺序,而是让你先跑出一个 glb 文件,再回头解释它为什么能做到。
先跑起来:安装与最小生成示例
整个环境是纯 Python,官方支持 macOS、Windows、Linux。下面的命令完成克隆与依赖安装;如果你只做形状生成,可以跳过最后两行 C++ 扩展(那是纹理渲染器专用的):
git clone https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2 cd Hunyuan3D-2 pip install -r requirements.txt pip install -e . # 纹理流程需要两个本地 CUDA 扩展(仅纹理用户需要) cd hy3dgen/texgen/custom_rasterizer && python3 setup.py install && cd ../../.. cd hy3dgen/texgen/differentiable_renderer && python3 setup.py install装完后,最短的生成路径是加载 0.6B 的 Turbo 模型(模型权重名为tencent/Hunyuan3D-2mini,首次运行会自动下载),开启 FlashVDM 加速后 5 步采样即可出网格。FlashVDM 是一个步数蒸馏加速方案,把原本 50 步的扩散采样压到 5 步,代价是细节略有损失:
from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline pipeline = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained( 'tencent/Hunyuan3D-2mini', subfolder='hunyuan3d-dit-v2-mini-turbo', use_safetensors=False, device='cuda' ) pipeline.enable_flashvdm(topk_mode='merge') # 启用 5 步采样 mesh = pipeline( image='assets/demo.png', num_inference_steps=5, octree_resolution=380, output_type='trimesh' )[0] mesh.export('shape.glb') # 输出是 trimesh 对象,glb/obj 都能存仓库里对应的可运行脚本是 examples/faster_shape_gen_with_flashvdm_mini_turbo.py,直接python3执行即可看到单模型耗时。跑通之后,效果大概是这样:
能出结果了,下一个自然的问题是:它凭什么一张图就能定出完整的立体结构?
为什么快且稳:两阶段生成架构拆解
Hunyuan3D-2 把"图生 3D"拆成两个独立阶段,而不是一个大模型端到端出结果:
- 形状阶段(Hunyuan3D-DiT):基于流匹配的扩散 Transformer(Diffusion Transformer,用 Transformer 做扩散去噪),输入单张或多张 2D 图像,输出与图像在几何上对齐的裸网格。
- 纹理阶段(Hunyuan3D-Paint):接收上一步的网格和参考图,输出高分辨率纹理。README 中提到支持 4K 级纹理。
拆开的实际好处有两个:一是几何和纹理各自的难度被解耦,互不拖累;二是纹理阶段不挑输入——手工建模的网格同样能丢给 Hunyuan3D-Paint 上材质,这等于附赠了一个"给现成模型自动贴图"的能力。
速度上则靠两条路:Turbo 系列模型(如hunyuan3d-dit-v2-mini-turbo)是步数蒸馏版,5 步出形;hunyuan3d-dit-v2-*-fast系列是 guidance 蒸馏版,把 DiT 推理时间减半。显存方面,官方模型页标注形状生成约 6 GB、形状+纹理合计约 16 GB,1.1B 的完整模型跑在消费级显卡上是可行的;0.6B 的 mini 系列参数更小,显存压力更低。
架构清楚了,接下来看三类真实使用场景该怎么组合这些能力。
三个实战场景:多视图、纹理全流程与轻量部署
场景一:多视图形状生成,处理被遮挡的物体
单张图只能看到物体的一面,背面结构全靠模型"猜"。如果你的素材能拍出正面、左侧、背面三张同物照片(仓库自带样例如 assets/example_mv_images/),换用 1.1B 的多视图模型 Hunyuan3D-2mv,把三张图一起喂进去,遮挡面的几何一致性会明显更好。示例 examples/shape_gen_multiview.py 的写法:
from PIL import Image from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline images = { "front": Image.open("assets/example_mv_images/1/front.png"), "left": Image.open("assets/example_mv_images/1/left.png"), "back": Image.open("assets/example_mv_images/1/back.png"), } pipeline = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained( 'tencent/Hunyuan3D-2mv', subfolder='hunyuan3d-dit-v2-mv', variant='fp16' ) mesh = pipeline( image=images, num_inference_steps=30, octree_resolution=380, num_chunks=20000 )[0] mesh.export('mv.glb')多视图推理比单图重一些(1.1B 模型 + 三份图像条件),步数可以按需在 5(turbo 子文件夹)到 50 之间取舍。
场景二:单图出带纹理的完整资产
只出白模往往不够用,加一行纹理管线就是完整资产。形状和纹理是两个独立的 pipeline,先后调用即可(完整示例见 examples/textured_shape_gen.py):
from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline from hy3dgen.texgen import Hunyuan3DPaintPipeline model_path = 'tencent/Hunyuan3D-2' pipeline_shapegen = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained(model_path) pipeline_texgen = Hunyuan3DPaintPipeline.from_pretrained(model_path) mesh = pipeline_shapegen(image='assets/demo.png')[0] # 阶段一:几何 mesh = pipeline_texgen(mesh, image='assets/demo.png') # 阶段二:纹理 mesh.export('demo.glb')如果手里已经有手工建模的网格、只想要贴图,跳过阶段一直接调用Hunyuan3DPaintPipeline即可;多视图贴图可以进一步看 examples/fast_texture_gen_multiview.py。带纹理的完整流程效果:
场景三:不想写代码,用 Web 界面或 API
如果你要把 Hunyuan3D-2 接进自己的工作流,仓库自带三种入口:Gradio 网页端、HTTP API 服务器,以及依赖 API 服务器的 Blender 插件(blender_addon.py)。前两种各一条命令:
# Gradio 网页界面:mini + Turbo + 低显存模式 python3 gradio_app.py --model_path tencent/Hunyuan3D-2mini \ --subfolder hunyuan3d-dit-v2-mini-turbo \ --texgen_model_path tencent/Hunyuan3D-2 \ --low_vram_mode --enable_flashvdm # API 服务器:对 8080 端口 POST 一张 base64 图片,直接落盘 glb python3 api_server.py --host 0.0.0.0 --port 8080--low_vram_mode会做显存优化调度,小显存机器上跑网页端时建议常驻。批量生成或给其他软件(比如 Blender 插件、内部工具)供数时,API 服务器是更合适的形态。
参数调节与常见故障排查
生成调用里真正需要碰的参数不多,默认值来自 hy3dgen/shapegen/pipelines.py 的__call__签名:
| 参数 | 默认值 | 作用 | 调节建议 |
|---|---|---|---|
num_inference_steps | 50 | 扩散采样步数 | Turbo 模型 5 步;标准模型 30-50 步,步数越多细节越稳 |
octree_resolution | 384 | 八叉树表面重建分辨率 | 越高边缘细节越好,显存/耗时同步上升;380-420 是常用区间 |
num_chunks | 8000 | 网格重建的并行块数 | 显存紧张时调小(如 4000),余量充足时可加大 |
guidance_scale | 7.5 | 图像条件引导强度 | 一般不动;输出偏软时可适度上调 |
dual_guidance_scale | 10.5 | 双引导(CLIP/DINO 双特征)强度 | 一般不动 |
generator | None | 随机种子 | 用torch.manual_seed(12345)固定,保证结果可复现 |
⚠️ 几个高频问题的定位思路(原因 → 解法):
- CUDA OOM→ 先用 0.6B 的 mini 系列模型;或降低
octree_resolution、num_chunks;跑网页端时加--low_vram_mode。 - 边缘发虚、轮廓锯齿→
octree_resolution偏低,从 380 提到 420 左右,并适当增加采样步数。 - 多视图结果背面跳变→ 输入三张图的光照、背景不一致。用仓库自带的 hy3dgen/rembg.py 做背景移除,尽量统一拍摄条件。
- 网格像"白板"→ 只跑了形状阶段,补上
Hunyuan3DPaintPipeline纹理阶段即可。 - 同图两次结果不同→ 没有固定种子,传入
generator=torch.manual_seed(...)。
选哪个模型:一张对照表和后续索引
官方模型矩阵(大小与定位来自 README 的 Models Zoo):
| 模型子文件夹 | 参数 | 定位 |
|---|---|---|
hunyuan3d-dit-v2-mini | 0.6B | 轻量单图→形状 |
hunyuan3d-dit-v2-mini-turbo/-fast | 0.6B | 轻量加速(步数蒸馏 / guidance 蒸馏) |
hunyuan3d-dit-v2-0 | 1.1B | 完整单图→形状 |
hunyuan3d-dit-v2-0-turbo/-fast | 1.1B | 完整模型加速版 |
hunyuan3d-dit-v2-mv(含 turbo/fast) | 1.1B | 多视图→形状 |
hunyuan3d-paint-v2-0(含 turbo) | 1.3B | 纹理合成 |
选择逻辑可以压缩成三句话:快速迭代选 mini-turbo + 5 步;交付质量选 v2-0 全量模型 + 30 步以上并接 Paint;输入有遮挡就切到 mv 多视图系列。
想继续深入的话,仓库内几个入口各有分工:examples/ 下按"单图/多视图/纹理/Turbo"分好了十来个可运行脚本;hy3dgen/shapegen/ 是形状生成核心(DiT、VAE、调度器);hy3dgen/texgen/ 是纹理管线与可微渲染器;docs/source/started/ 下有按 Gradio、API、Blender 等入口拆分的文档;minimal_demo.py 则演示了含纹理增强的端到端调用。先把第一节的那个小脚本跑通,再顺着 examples 逐个替换参数,基本就覆盖了这套系统日常会用到的全部能力。
【免费下载链接】Hunyuan3D-2High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models.项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考