引言
随着3D内容生成技术的快速发展,高保真、高效率、支持复杂拓扑的image-to-3D生成方案成为行业刚需。传统方法往往受限于等值面场的表达能力,在开放表面、非流形几何等复杂结构处理上存在短板,且生成效率和纹理还原度难以兼顾。微软团队推出的TRELLIS.2模型,凭借创新的结构设计和工程优化,解决了上述痛点,成为当前3D生成领域的标杆之作。
项目概况
TRELLIS.2是一款面向高保真image-to-3D生成的40亿参数大模型,核心依托名为O-Voxel的“无场”稀疏体素结构,实现任意3D资产的重构与生成,涵盖复杂拓扑、锐利特征及全PBR材质(基础色、粗糙度、金属度、不透明度)。
该项目已开放多项核心资源:包括论文、image-to-3D推理代码、4B预训练权重,以及Hugging Face Spaces在线demo;后续还计划在2025年12月前发布形状条件纹理生成推理代码和训练代码。从运行效率来看,该模型在NVIDIA H100 GPU上,512³分辨率的3D资产生成仅需约3秒,1024³约17秒,1536³约60秒,兼顾速度与精度。
核心创新与优势
1. 画质、分辨率与效率兼备
基于原生DiTs架构,结合16倍空间下采样的稀疏3D VAE,将3D资产编码至紧凑的潜在空间,在40亿参数规模下实现高分辨率带纹理资产的高效生成,不同分辨率的生成耗时均处于行业领先水平。
2. 突破拓扑表达限制
O-Voxel表示法打破了等值面场的局限,无需有损转换即可稳健处理开放表面(如衣物、树叶)、非流形几何、内部封闭结构等复杂拓扑。
3. 丰富的纹理建模能力
不仅支持基础色彩还原,还能建模基础色、粗糙度、金属度、不透明度等全维度表面属性,实现照片级真实感渲染和透明度支持。
4. 极简的处理流程
数据处理全程无需渲染和优化:单CPU下纹理网格转O-Voxel仅需不到10秒,CUDA加速下O-Voxel转回纹理网格仅需不到100毫秒。
技术原理与部署实操
部署环境要求
- 系统:仅在Linux环境下完成测试;
- 硬件:NVIDIA GPU(至少24GB显存,验证过A100/H100);
- 软件:CUDA Toolkit 12.4(推荐)、Conda、Python 3.8+。
安装步骤
- 克隆代码仓库:
git clone -b main https://github.com/microsoft/TRELLIS.2.git --recursive cd TRELLIS.2- 创建conda环境并安装依赖(默认创建名为trellis2的环境,基于PyTorch 2.6.0+CUDA 12.4):
. ./setup.sh --new-env --basic --flash-attn --nvdiffrast --nvdiffrec --cumesh --o-voxel --flexgemm注:若GPU不支持flash-attn(如V100),可手动安装xformers,并设置环境变量
ATTN_BACKEND=xformers;若需使用已有conda环境,移除--new-env参数即可。
核心推理代码(Image to 3D生成)
以下是基于预训练模型生成3D资产的极简示例:
importos os.environ['OPENCV_IO_ENABLE_OPENEXR']='1'os.environ["PYTORCH_CUDA_ALLOC_CONF"]="expandable_segments:True"# 节省GPU显存importcv2importimageiofromPILimportImageimporttorchfromtrellis2.pipelinesimportTrellis2ImageTo3DPipelinefromtrellis2.utilsimportrender_utilsfromtrellis2.renderersimportEnvMapimporto_voxel# 1. 配置环境贴图envmap=EnvMap(torch.tensor(cv2.cvtColor(cv2.imread('assets/hdri/forest.exr',cv2.IMREAD_UNCHANGED),cv2.COLOR_BGR2RGB),dtype=torch.float32,device='cuda'))# 2. 加载预训练流水线pipeline=Trellis2ImageTo3DPipeline.from_pretrained("microsoft/TRELLIS.2-4B")pipeline.cuda()# 3. 加载输入图像并执行生成image=Image.open("assets/example_image/T.png")mesh=pipeline.run(image)[0]mesh.simplify(16777216)# 适配nvdiffrast限制# 4. 渲染可视化视频video=render_utils.make_pbr_vis_frames(render_utils.render_video(mesh,envmap=envmap))imageio.mimsave("sample.mp4",video,fps=15)# 5. 导出GLB格式3D资产glb=o_voxel.postprocess.to_glb(vertices=mesh.vertices,faces=mesh.faces,attr_volume=mesh.attrs,coords=mesh.coords,attr_layout=mesh.layout,voxel_size=mesh.voxel_size,aabb=[[-0.5,-0.5,-0.5],[0.5,0.5,0.5]],decimation_target=1000000,texture_size=4096,remesh=True,remesh_band=1,remesh_project=0,verbose=True)glb.export("sample.glb",extension_webp=True)执行后将生成sample.mp4(3D资产PBR渲染视频)和sample.glb(PBR-ready格式3D资产),其中GLB文件默认关闭透明通道,需在3D软件中手动关联纹理Alpha通道至不透明度输入。
此外,项目还提供了简易Web Demo,运行python app.py即可启动,访问终端输出地址即可体验图像转3D功能。
该项目及相关内容已 AladdinEdu课题广场同步发布,欢迎前往了解更多技术实现与资源。
项目地址:AladdinEdu课题广场