TRELLIS.2 深度解析:微软 4B 参数 3D 生成模型的革命性突破
📱 精美知识卡片
一、项目说明 / Project Description
1.1 什么是 TRELLIS.2?
TRELLIS.2 是微软研究院推出的开源 3D 生成模型,拥有 40 亿参数(4B),专门用于从单张图像生成高质量的 3D 资产。它是当前业界最先进的 图像转 3D(Image-to-3D) 生成模型之一,能够生成最高 1536³ 分辨率 的完整 PBR(物理基础渲染)纹理 3D 模型。
TRELLIS.2 的核心创新在于提出了 O-Voxel(Omni-Voxel)这一全新的"无场"稀疏体素表示方法,以及配套的 SC-VAE(Sparse Compression VAE)压缩编码方案。这两项技术共同解决了传统 3D 生成模型在处理复杂拓扑结构和丰富材质属性方面的长期痛点。
1.2 核心特性概览
| 特性 | 详情 |
|---|---|
| 参数规模 | 4B(40 亿参数) |
| 输入 | 单张图像 |
| 输出分辨率 | 512³ / 1024³ / 1536³ |
| 生成时间 (H100) | 3s(512³)/ 17s(1024³)/ 60s(1536³) |
| 材质支持 | Base Color, Roughness, Metallic, Opacity |
| 拓扑支持 | 任意拓扑,包括开曲面、非流形几何、内部封闭结构 |
| 许可证 | MIT License |
| 项目地址 | https://github.com/microsoft/TRELLIS.2 |
| 论文 | arXiv:2512.14692 |
| 模型下载 | Hugging Face: microsoft/TRELLIS.2-4B |
| 在线演示 | Hugging Face Spaces |
1.3 为什么 TRELLIS.2 重要?
在 TRELLIS.2 之前,3D 生成模型面临两大核心挑战:
- 拓扑限制:基于隐式场(Implicit Field / Iso-surface)的方法无法处理开曲面、非流形几何和内部结构等复杂拓扑
- 材质贫乏:大多数模型仅生成基础颜色纹理,无法建模 PBR 材质属性(粗糙度、金属度、透明度等)
TRELLIS.2 通过 O-Voxel 表示和稀疏压缩 VAE 同时解决了这两个问题,使得生成的 3D 资产在几何复杂度和材质丰富度上都达到了新的高度。
二、详细教程 / Detailed Tutorial
步骤 1:环境准备
TRELLIS.2 目前仅支持 Linux 系统,需要以下硬件和软件环境:
硬件要求:
- NVIDIA GPU,至少 24GB 显存(已验证于 A100 和 H100)
软件要求:
- CUDA Toolkit 12.4(推荐版本)
- Conda(推荐用于管理依赖)
- Python 3.8 或更高版本
步骤 2:安装依赖
# 克隆仓库(包含子模块)
git clone -b main https://github.com/microsoft/TRELLIS.2.git --recursive
cd TRELLIS.2
# 创建 conda 环境并安装所有依赖
. ./setup.sh --new-env --basic --flash-attn --nvdiffrast --nvdiffrec --cumesh --o-voxel --flexgemm
安装选项说明:
| 选项 | 说明 |
|---|---|
--new-env |
创建名为 trellis2 的新 conda 环境 |
--basic |
安装基础依赖 |
--flash-attn |
安装 Flash Attention 后端(推荐) |
--nvdiffrast |
安装 NVIDIA diff rasterizer(用于渲染) |
--nvdiffrec |
安装 split-sum 渲染器(用于 PBR 材质) |
--cumesh |
安装 CUDA 加速的网格工具 |
--o-voxel |
安装 O-Voxel 核心库 |
--flexgemm |
安装稀疏卷积实现 |
注意事项:
- 如果 GPU 不支持 Flash Attention(如 V100),可安装
xformers并设置ATTN_BACKEND=xformers - 如果系统中有多个 CUDA Toolkit 版本,需提前设置
CUDA_HOME - 安装过程可能耗时较长,请耐心等待
步骤 3:下载预训练模型
从 Hugging Face 下载预训练的 TRELLIS.2-4B 模型:
# 模型链接:https://huggingface.co/microsoft/TRELLIS.2-4B
# 使用 huggingface-cli 下载
huggingface-cli download microsoft/TRELLIS.2-4B --local-dir ./checkpoints
步骤 4:运行图像转 3D 生成
最小示例代码
import os
os.environ['OPENCV_IO_ENABLE_OPENEXR'] = '1'
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True" # 节省 GPU 内存
import cv2
import imageio
from PIL import Image
import torch
from trellis2.pipelines import Trellis2ImageTo3DPipeline
from trellis2.utils import render_utils
from trellis2.renderers import EnvMap
import o_voxel
# 1. 设置环境贴图(用于 PBR 渲染)
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 格式
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:带有 PBR 材质和环境光照的 3D 资产可视化视频sample.glb:PBR 就绪的 3D 资产 GLB 格式文件
⚠️ 透明度注意事项:.glb 文件默认以 OPAQUE 模式导出。虽然 alpha 通道已保存在纹理贴图中,但默认不激活。如需启用透明度,需在 3D 软件中手动将纹理的 alpha 通道连接到材质的透明度/不透明度输入。
步骤 5:运行 Web 演示
python app.py
运行后在终端显示的地址访问 Web 界面,上传图片即可生成 3D 资产。
步骤 6:PBR 纹理生成
TRELLIS.2 还支持为已有 3D 形状生成 PBR 纹理:
# 运行纹理生成演示
python app_texturing.py
详细用法参考 example_texturing.py。
步骤 7:训练自定义模型
TRELLIS.2 提供了完整的训练代码,支持从头训练或在自定义数据集上微调。
数据准备
训练前,需将原始 3D 资产转换为 O-Voxel 表示,包括网格转换、紧凑结构化潜变量生成和元数据准备。详细指南参考 data_toolkit/README.md。
训练 SC-VAE(形状编码器)
python train.py \
--config configs/scvae/shape_vae_next_dc_f16c32_fp16.json \
--output_dir results/shape_vae_next_dc_f16c32_fp16 \
--data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "mesh_dump": "datasets/ObjaverseXL_sketchfab/mesh_dumps", "dual_grid": "datasets/ObjaverseXL_sketchfab/dual_grid_256", "asset_stats": "datasets/ObjaverseXL_sketchfab/asset_stats"}}'
训练 Flow Model(生成模型)
# 形状流模型
python train.py \
--config configs/gen/slat_flow_img2shape_dit_1_3B_512_bf16.json \
--output_dir results/slat_flow_img2shape_dit_1_3B_512_bf16 \
--data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_512", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'
# 纹理流模型
python train.py \
--config configs/gen/slat_flow_imgshape2tex_dit_1_3B_512_bf16.json \
--output_dir results/slat_flow_imgshape2tex_dit_1_3B_512_bf16 \
--data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_512", "pbr_latent": "datasets/ObjaverseXL_sketchfab/pbr_latents/tex_enc_next_dc_f16c32_fp16_512", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'
训练参数说明
| 参数 | 说明 |
|---|---|
--config |
实验配置文件路径 |
--output_dir |
训练输出目录 |
--load_dir |
检查点加载目录(默认同 output_dir) |
--ckpt |
恢复训练的检查点步数 |
--data_dir |
数据集路径(JSON 字符串格式) |
--auto_retry |
失败后自动重试次数 |
--tryrun |
干运行,不实际训练 |
--profile |
启用训练性能分析 |
--num_nodes |
分布式训练节点数 |
--node_rank |
当前节点排名 |
--num_gpus |
每节点 GPU 数(默认全部) |
三、核心创新与技术深度分析 / Core Innovations
3.1 O-Voxel:全向体素表示
O-Voxel 是 TRELLIS.2 最核心的创新,它是一种"无场"(field-free)的稀疏体素结构,能够同时编码精确的几何信息和复杂的材质外观。
O-Voxel 的两大组成部分:
GEO(几何部分)
- 使用 灵活双网格(Flexible Dual Grids) 表示法
- 能够处理任意拓扑结构,包括:
- ✅ 开曲面(如衣物、树叶)
- ✅ 非流形几何
- ✅ 内部封闭结构
- 保留了锐利边缘的精确表达
MAT(材质部分)
- 支持完整的 PBR 属性:
- Base Color(基础颜色)
- Roughness(粗糙度)
- Metallic(金属度)
- Opacity(不透明度/透明度)
- 实现了物理真实渲染和光影重照明
3.2 SC-VAE:稀疏压缩 VAE
SC-VAE(Sparse Compression VAE)采用稀疏残差自编码方案,直接压缩体素数据:
- 16× 空间下采样:将高分辨率体素压缩到紧凑潜变量空间
- ~9.6K 潜变量 Token:对于 1024³ 分辨率的资产,仅需约 9600 个潜变量 Token
- 可忽略的感知退化:压缩后的重建质量几乎无损失
- 高效的大规模生成建模:紧凑的潜空间使得训练 4B 参数的生成模型成为可能
3.3 三阶段生成流水线
TRELLIS.2 的生成流水线分为三个阶段:
阶段一:形状生成(Image → Shape Latent)
- 从输入图像生成形状的结构化潜变量
- 使用图像条件化的 DiT(Diffusion Transformer)模型
阶段二:形状到纹理(Shape Latent → Texture Latent)
- 基于形状潜变量生成材质的结构化潜变量
- 确保纹理与几何形状的一致性
阶段三:潜变量解码(Latent → O-Voxel → Mesh)
- 将结构化潜变量解码为 O-Voxel 表示
- 通过 O-Voxel 库转换为可渲染的纹理网格
3.4 性能数据
| 分辨率 | 总时间 | 形状生成 | 材质生成 |
|---|---|---|---|
| 512³ | ~3s | 2s | 1s |
| 1024³ | ~17s | 10s | 7s |
| 1536³ | ~60s | 35s | 25s |
测试环境:NVIDIA H100 GPU
四、归纳总结的观点 / Key Viewpoints and Conclusions
观点一:O-Voxel 是 3D 表示的范式转变
传统 3D 生成模型依赖隐式场(Implicit Field)和等值面(Iso-surface)提取几何,这种方法天然存在拓扑限制。O-Voxel 作为"无场"稀疏体素表示,从根本上打破了这一限制。它不是对现有方法的增量改进,而是一种全新的 3D 数据表示范式——直接以体素为单位编码几何和材质,而非通过场函数间接表示。
核心结论:O-Voxel 证明了稀疏体素表示可以在保持高压缩率的同时,处理任意拓扑和丰富材质,这是 3D 生成领域的一次重要范式转移。
观点二:紧凑性与保真度可以兼得
TRELLIS.2 的 SC-VAE 实现了 16× 的空间压缩率,将 1024³ 的体素数据压缩到仅 ~9.6K 潜变量 Token,但重建质量的感知退化几乎可忽略。这在 3D 生成领域是一个重要的平衡点——过去的高压缩率通常以显著的质量损失为代价。
核心结论:通过精心设计的稀疏残差自编码方案,可以在不牺牲感知质量的前提下实现高压缩率,这为大规模 3D 生成模型的训练和部署开辟了新的可能性。
观点三:原生 3D VAE 优于 2D 投影方法
TRELLIS.2 采用的是从原生 3D 数据学习的 VAE,而非将 3D 资产投影到 2D 视图再进行生成。原生 3D VAE 的优势在于:
- 直接学习 3D 空间中的结构信息
- 避免了 2D 投影带来的信息损失
- 更好地处理多视角一致性
- 支持真正的 3D 操作(如旋转、缩放)
核心结论:原生 3D 表示学习是实现高质量 3D 生成的正确方向,TRELLIS.2 的实验结果验证了这一设计理念。
观点四:DiT 架构在 3D 生成中表现优异
TRELLIS.2 使用 vanilla DiT(Diffusion Transformer)作为生成架构,而非更复杂的定制化设计。4B 参数的 DiT 模型在 3D 生成任务上展现了出色的性能,这表明:
- DiT 的通用性足以支撑 3D 生成任务
- 不需要针对 3D 数据专门设计复杂的架构
- 规模化的 Transformer 架构在 3D 领域同样有效
核心结论:DiT 架构的简洁性和可扩展性使其成为 3D 生成模型的理想选择,TRELLIS.2 的成功进一步验证了这一趋势。
观点五:PBR 材质生成是 3D 生成的关键缺失环节
在 TRELLIS.2 之前,大多数 3D 生成模型仅输出基础颜色纹理,缺乏 PBR 材质属性。TRELLIS.2 同时建模 Base Color、Roughness、Metallic 和 Opacity,使得生成的资产可以在任意光照条件下实现物理真实渲染。
核心结论:PBR 材质生成是 3D 生成从"概念验证"走向"生产可用"的关键一步,TRELLIS.2 在这一维度上做出了开创性的贡献。
观点六:高效的处理流程降低了使用门槛
TRELLIS.2 的数据处理流程完全渲染无关且优化无关:
- Textured Mesh → O-Voxel:< 10s(单 CPU)
- O-Voxel → Textured Mesh:< 100ms(CUDA)
这种极简的处理流程意味着用户无需复杂的预处理或后处理步骤,即可完成 3D 资产的生成和使用。
核心结论:极简的处理流程是技术落地的重要因素,TRELLIS.2 在设计时就充分考虑了实际使用的便捷性。
观点七:开源策略推动了 3D 生成技术的民主化
TRELLIS.2 采用 MIT 许可证发布,模型权重在 Hugging Face 上公开可用。这种开源策略:
- 降低了 3D 生成技术的入门门槛
- 促进了学术界和工业界的广泛采用
- 为后续研究和改进提供了坚实的基础
核心结论:微软的开源策略表明,3D 生成技术正在从封闭的研究项目走向开放的生态系统,这将加速整个领域的发展。
五、设计哲学 / Design Philosophy
5.1 "原生 3D" 优先的设计理念
TRELLIS.2 的设计哲学核心是 "原生 3D"(Native 3D)——从数据表示到模型架构,一切都以原生 3D 思维为导向,而非将 3D 问题降维到 2D 再求解。
这一理念体现在三个层面:
- 数据层:使用 O-Voxel 作为原生 3D 表示,而非隐式场或 2D 投影
- 模型层:设计 Sparse Compression VAE 直接处理 3D 体素数据
- 生成层:使用 Flow Matching 在 3D 潜空间中进行生成
5.2 紧凑即美(Compactness as Elegance)
TRELLIS.2 的设计哲学强调 紧凑性(Compactness)是一种美学追求:
- 16× 空间压缩不是妥协,而是设计目标
- 紧凑的潜空间使得大规模生成模型训练成为可能
- 高效的推理使得实时或近实时的 3D 生成成为现实
这种"紧凑即美"的理念认为,好的表示应该在保持信息完整性的同时尽可能紧凑,正如好的数据压缩应该在保持质量的同时尽可能减小体积。
5.3 稀疏性即效率(Sparsity as Efficiency)
O-Voxel 的"稀疏"(Sparse)特性是 TRELLIS.2 效率的核心来源:
- 不是所有体素都需要存储和计算
- 稀疏结构天然适合 GPU 上的并行处理
- FlexGEMM(基于 Triton 的稀疏卷积实现)进一步加速了稀疏计算
设计哲学认为,稀疏性不是权宜之计,而是 3D 数据的内在属性——大多数空间是空的(没有几何或材质),因此应该用稀疏表示来高效地编码和处理。
5.4 端到端优化(End-to-End Optimization)
TRELLIS.2 采用了端到端的优化策略:
- 从 O-Voxel 表示到 SC-VAE 编码到 Flow Matching 生成,所有组件都是联合优化的
- 没有独立的预处理或后处理步骤引入信息损失
- 整个流水线是一个统一的优化目标
这种端到端的设计哲学避免了传统流水线中各组件独立优化导致的全局次优问题。
5.5 实用主义导向(Pragmatism-Driven)
TRELLIS.2 的设计体现了强烈的实用主义导向:
- 渲染无关的数据处理:不依赖特定的渲染管线
- 优化无关的后处理:无需复杂的网格优化步骤
- 即时转换:双向转换在秒级完成
- MIT 许可证:完全开放,无使用限制
这种实用主义意味着 TRELLIS.2 不仅是一个研究原型,更是一个可以实际投入生产使用的工具。
5.6 模块化与可扩展性
TRELLIS.2 的架构设计充分考虑了模块化:
- O-Voxel 库:独立的网格转换库,可被其他项目复用
- FlexGEMM:通用的稀疏卷积实现,不依赖 TRELLIS.2
- CuMesh:独立的 CUDA 网格工具集
- 可配置的 SC-VAE:支持不同分辨率和压缩率的配置
这种模块化设计使得 TRELLIS.2 的各个组件可以独立使用和扩展,为后续研究提供了灵活的基础设施。
六、对未来 3D 生成技术的启示 / Implications for Future 3D Generation
6.1 稀疏体素表示将成为主流
TRELLIS.2 的成功证明了稀疏体素表示在 3D 生成中的巨大潜力。未来,我们预计:
- 更多模型将采用稀疏体素或类似表示
- 稀疏计算优化将成为 3D 生成的标准组件
- O-Voxel 类似的创新表示将不断涌现
6.2 原生 3D 学习将取代 2D 投影方法
TRELLIS.2 展示了原生 3D VAE 在质量和效率上的优势。未来:
- 2D 投影方法将逐渐被原生 3D 方法取代
- 多视角一致性将通过 3D 潜空间自然建模
- 3D 操作(旋转、缩放、编辑)将更加自然和高效
6.3 PBR 材质生成将成为标配
随着 TRELLIS.2 证明 PBR 材质生成的可行性,未来:
- 材质生成将成为 3D 生成模型的标准配置
- 更丰富的材质属性(如次表面散射、 anisotrophy)将被建模
- 生成资产将直接可用于生产渲染管线
6.4 更大规模与更高效率并存
TRELLIS.2 展示了 4B 参数模型可以在保持高效推理的同时达到 SOTA 质量。未来:
- 更大规模的模型将出现,但通过稀疏化和量化保持效率
- 蒸馏和压缩技术将使大模型在消费级硬件上运行
- 实时或近实时的 3D 生成将成为可能
七、给开发者的实操建议 / Practical Advice for Developers
推荐工具链
- TRELLIS.2:核心 3D 生成模型
- O-Voxel:网格转换库
- FlexGEMM:稀疏卷积加速
- CuMesh:CUDA 网格后处理工具
- Hugging Face Spaces:在线演示(无需本地部署)
入门建议
- 先看演示:在 Hugging Face Spaces 上体验在线演示,了解生成效果
- 本地部署:按照 README 搭建本地环境,运行最小示例
- 理解 O-Voxel:深入学习 O-Voxel 表示的原理和优势
- 尝试微调:在自定义数据集上微调模型,探索特定领域的 3D 生成
- 参与社区:在 GitHub 上提交 issue 或 PR,参与项目发展
成本控制建议
- 使用 Hugging Face Spaces 的免费在线演示进行初步测试
- 本地部署需要 NVIDIA GPU(至少 24GB 显存)
- 训练自定义模型需要大量 GPU 时间,建议使用云 GPU 实例
- 推理阶段在 H100 上约 3-60 秒,在消费级 GPU 上会显著更慢
八、参考文献 / References
- TRELLIS.2 GitHub Repository
- Project Page
- Research Paper (arXiv)
- Hugging Face Model
- Hugging Face Spaces Demo
- O-Voxel Package
- FlexGEMM
- CuMesh
本文基于微软 TRELLIS.2 项目官方文档、GitHub README、arXiv 论文及项目主页内容翻译、整理与分析。
