CraftsMan(项目名CraftsMan3D)是一个开源的单图生成3D资产生成框架,由香港中文大学等机构的研究团队推出。它的目标是把一张普通的RGB图片变成一个可以直接用于游戏、动画或电商展示的3D网格模型,包含几何形状和纹理贴图。相比传统的手工建模流程动辄数小时甚至数天的工作量,CraftsMan将这个过程压缩到几分钟,而且全程不需要任何3D扫描设备或多视角拍摄。这篇文章将从架构原理、生成流程、部署实操和方案对比四个角度,详细拆解这套系统。

一、核心架构:两阶段协同的生成思路
CraftsMan的整体设计遵循一个很朴素的工程哲学:几何和纹理分开解决,各自用最擅长的模型。很多早期方案试图用一个统一模型同时输出几何和纹理,结果往往是两头都不讨好——几何粗糙、纹理糊成一片。CraftsMan把它拆成了两个阶段。
第一阶段是粗几何生成。系统先用预训练的2D扩散模型(基于Stable Diffusion改造)根据输入图片生成物体的多个视角图像,通常是四个正交视角。这一步本质上是在2D空间里“脑补”出物体看不见的背面,借助大规模2D预训练先验,模型对常见物体类别的理解远好于直接从零训练的3D生成网络。生成的多视角图像随后被送入一个基于Latent Diffusion的3D重建网络,产出低分辨率的粗网格。
第二阶段是细节细化与纹理合成。粗网格虽然拓扑结构正确,但表面细节缺失,比如雕塑的褶皱、机械零件的倒角。CraftsMan的做法是渲染粗网格的法线贴图,用一个2D扩散模型在法线空间中增强细节,再通过可微渲染把增强后的法线信息反向传播回几何表面。纹理部分则由专职的Texture Synthesis模块完成,它在多视角一致性的约束下为网格烘焙出高分辨率纹理,避免了视角之间颜色跳变的问题。
二、生成流程详解:从输入图片到可用资产
理解了架构,再看具体流程就清晰了。完整链路可以概括为:图片输入、多视角生成、粗形状重建、几何细化、UV展开与纹理烘焙五步。
首先是输入图片的预处理。CraftsMan对输入图有一定要求:背景干净、物体居中、光照均匀的图片效果最好。虽然内置了rembg做背景去除,但如果原图背景杂乱,生成的几何质量会明显下降。实际使用中建议先用SAM等工具手动抠图,确认物体轮廓完整后再送入管线。
接下来是多视角生成环节,这一步决定了背面的合理程度。以一张正面照为例,模型需要推断出物体背面长什么样。对于常见类别(汽车、椅子、人物)表现不错,但对于奇特造型的物体,背面可能出现“平均化”的猜测。这也是所有单图生成3D方案的通病——信息量不足时只能靠先验补全。生成的多视角图会经过一致性校验,视角间偏差过大会被丢弃重采样。
粗形状重建使用3D Latent Diffusion在隐空间中完成去噪,输出的是带拓扑的网格而非点云,这一点很关键,因为点云还需要额外的重建步骤。细化阶段默认输出约15万面片的网格,可以在配置中调整。最后纹理烘焙环节会生成2048x2048的PBR贴图,直接兼容Blender、Unity、Unreal Engine等主流工具链。
三、部署实操:本地环境搭建与推理代码
CraftsMan完全开源,代码托管在GitHub上。本地部署推荐使用显存12GB以上的NVIDIA显卡,完整管线推理大约需要8GB显存。下面是环境搭建和基本推理的流程。
# 克隆仓库 git clone https://github.com/wyysf-98/CraftsMan.git cd CraftsMan # 创建conda环境 conda create -n craftsman python=3.10 conda activate craftsman # 安装依赖(建议预先配置好PyTorch 2.1 + CUDA 11.8) pip install -r requirements.txt pip install git+https://github.com/SuLvXiangXin/inline-hexplane.git
依赖安装中最容易踩坑的是PyTorch版本和可微渲染库的编译。nvdiffrast和PyMeshLab的版本必须与requirements.txt中指定的一致,否则细化阶段会报CUDA kernel错误。推理可以通过Gradio的Web界面完成,也可以写脚本批量处理。
import craftsman
from craftsman.utils.image import load_image
# 加载预训练模型
model = craftsman.from_pretrained("craftsman3d/craftsman-v1-5")
# 输入单张图片
image = load_image("chair.jpg")
# 生成几何与纹理
latents = model.sample(
image,
num_samples=1,
num_inference_steps=50,
guidance_scale=7.5
)
# 导出为带纹理的obj文件
latents.save("chair_output.obj")
脚本方式适合批量生成,比如给电商平台的商品库统一建模。Web界面则方便单件调试,可以实时调节视角数量、细化强度等参数。推理速度上,在RTX 3090上完整跑一张图大约需要2到3分钟,其中细化阶段占了一半时间。如果只是快速预览,可以关闭细化环节,粗形状十几秒就能出结果。
四、方案对比与选型建议
单图生成3D这个赛道目前竞争激烈,CraftsMan之外还有腾讯的Hunyuan3D、微软的TRELLIS、Tripo SR等方案。选型时需要结合自己的场景权衡。
| 方案 | 几何质量 | 纹理质量 | 显存需求 | 开源协议 |
|---|---|---|---|---|
| CraftsMan | 中上,细节细化出色 | 良好,多视角一致 | 约8GB | MIT友好 |
| TRELLIS | 优秀,结构化隐表示 | 优秀,支持PBR | 16GB以上 | 限制较多 |
| Hunyuan3D | 优秀 | 优秀,2.0支持PBR | 约10GB | 社区许可 |
| Tripo SR | 中等,速度快 | 较弱 | 6GB | MIT |
从实际体验看,CraftsMan的优势在于工程完整度和细化模块的独特设计——法线空间细化这个思路在处理雕塑、家具等表面细节丰富的物体时效果突出。劣势是几何整体精度相比TRELLIS这类后起之秀略有差距,复杂机械结构的拓扑容易出错。如果项目对纹理的PBR物理正确性要求高,Hunyuan3D 2.0更合适;如果追求极致速度做实时预览,Tripo SR仍是轻量首选。
另外一个值得关注的点是社区生态。CraftsMan的代码结构清晰,模块解耦做得好,很多后续研究基于它做二次开发,比如替换纹理模块为SDXL、接入ControlNet控制视角生成等。对于想做3D生成方向研究的团队来说,它的可改造性比“黑盒”式的大厂方案友好得多。
总的来说,CraftsMan证明了“2D先验 + 分阶段协同”这条技术路线在单图3D生成上的可行性。对个人创作者和小团队而言,它是进入3D AIGC领域一个成本可控、上限不错的起点;对工业化管线而言,把它作为快速白模生成的前端工具,再配合人工精修,也能显著提升资产生产效率。
CraftsMan3D单图生成3D模型AIGC 3D修改时间:2026-09-05 16:15:03