🎉 上线特惠 — 所有积分包立减 20%!
立即购买
深入解析 Microsoft TRELLIS 2 的技术架构,了解 O-Voxel 表示法、SC-VAE 压缩和流匹配 DiT 如何协同工作,在 3 秒内从图片生成 3D 模型。
最后更新:2026 年 5 月 3 日
TRELLIS 2 能在约 3 秒内从一张图片生成可用于生产的 3D 模型。但在上传照片和下载 GLB 文件之间,究竟发生了什么?本文将拆解微软研究院这个 3D 生成模型背后的技术架构——从 O-Voxel 表示法到三阶段扩散流程——即使你没有机器学习背景也能看懂。
理解 TRELLIS 2 之前,先要理解为什么 3D 生成比 2D 图像生成更难。
2D 图像就是像素网格——简单、均匀,神经网络很容易处理。但 3D 物体完全不同:
传统的 3D 表示方法各有取舍。神经辐射场(NeRF)能产生逼真效果但渲染慢。符号距离场(SDF)处理几何不错但难以应对开放表面。多边形网格渲染快但 AI 很难直接生成。
TRELLIS 2 引入了一种名为 O-Voxel 的新表示方法,同时解决了这些问题。
加入我们的社区
订阅邮件列表,及时获取最新消息和更新
O-Voxel(Omni-Voxel)是一种无场稀疏体素表示。我们逐一拆解。
3D 物体只占据周围空间的一小部分。O-Voxel 不为 3D 网格中的每个点都存储信息,而是只存储被占用的体素——包含物体部分的那部分体素。这让表示方法既紧凑又高效。
NeRF 和 SDF 等先前方法使用隐式神经场——你在任意 3D 点查询一个神经网络,它返回一个值。这种方式很灵活但很慢,因为每次查询都需要一次网络前向传播。
O-Voxel 直接在每个体素上存储几何数据,消除了隐式场解码器。每个被占用的体素包含:
| 特征 | 存储内容 |
|---|---|
| v(顶点位置) | 体素内部的精确顶点坐标 |
| delta(边交叉标志) | 二进制标记,指示表面穿过哪些边 |
| gamma(分裂权重) | 处理单个体素内多面交汇时的分裂情况 |
这些数据足以通过一种叫 Dual Contouring 的技术重建网格——而且速度极快。用 CUDA 加速,O-Voxel 转网格不到 100 毫秒。
大多数 3D 表示方法只能处理封闭的流形表面(如球体)。O-Voxel 的 Flexible Dual Grid 公式可以处理:
这是相比 TRELLIS v1 的 SLAT 表示的重要优势,后者在拓扑支持上比较有限。
以高分辨率生成 3D 需要大量数据。一个 1024³ 体素网格包含超过 10 亿个潜在点。TRELLIS 2 使用**稀疏压缩变分自编码器(SC-VAE)**将数据压缩到大约 9,600 个潜在标记——16 倍空间压缩比。
SC-VAE 是一个稀疏卷积 U-Net,约有 8 亿参数(编码器 3.54 亿 + 解码器 4.74 亿)。它包含三个关键创新:
1. 稀疏残差自编码
非参数化的跳跃连接,即使在高压缩比下也能保留精细的几何细节。不同于可学习的跳跃连接,这些连接不引入额外参数,也不会增加过拟合风险。
2. 早期剪枝上采样器
在解码(上采样)过程中,模型会预测哪些子体素是实际被占用的。它直接跳过空体素的计算——这显著减少了生成时的内存和计算量。
3. 优化残差块
采用 ConvNeXt 风格设计——单次卷积后接一个宽点式 MLP。比传统残差块更高效,同时保持表达能力。
TRELLIS 2 训练了两个独立的 SC-VAE:
| SC-VAE | 编码/解码内容 | 条件依赖 |
|---|---|---|
| 形状 SC-VAE | 几何信息(顶点位置、边交叉) | 输入图像 |
| 材质 SC-VAE | PBR 材质(颜色、金属度、粗糙度) | 输入图像 + 形状潜在表示 |
材质 SC-VAE 以形状输出为条件,确保纹理与几何正确对齐。
TRELLIS 2 的核心是三个扩散 Transformer(DiT)——每个生成阶段各一个。每个约有 13 亿参数(三个合计约 40 亿)。
| 参数 | 值 |
|---|---|
| 隐藏层宽度 | 1,536 |
| Transformer 块数 | 30 |
| 注意力头数 | 12 |
| MLP 宽度 | 8,192 |
RoPE(旋转位置编码)——使模型能够跨分辨率泛化。在 512³ 和 1024³ 上训练,推理时可外推到 1536³。
QK-Norm——对注意力中的 Query 和 Key 向量应用 RMSNorm 归一化,防止注意力分数爆炸,提高训练稳定性。
AdaLN-Single——自适应层归一化通过共享 MLP 注入条件信号(图像特征、时间步),相比逐层调制减少了参数量。
TRELLIS 2 使用 Rectified Flow——一种沿直线路径将噪声映射到数据的流匹配公式。相比传统 DDPM 扩散:
当你上传一张图片到 TRELLIS 2 时,会发生以下过程:
输入:一张图片(或文本提示) 输出:二进制体素占用网格
第一个 DiT 模型预测 3D 空间中哪些体素是被占用的。可以理解为"勾勒轮廓"——模型确定物体的大致形状和范围,但不包含任何精细细节。
输入:占用网格 + 图像特征 输出:几何潜在表示
第二个 DiT 为每个被占用的体素生成几何潜在表示。形状 SC-VAE 将这些解码为 O-Voxel 特征(顶点位置、边交叉标志、分裂权重),然后通过 Dual Contouring 转换为网格。
输入:形状潜在表示 + 图像特征 输出:材质潜在表示
第三个 DiT 以形状输出为条件生成材质潜在表示。材质 SC-VAE 将这些解码为每个体素的 PBR 材质属性:
| 通道 | 属性 | 范围 |
|---|---|---|
| c | 基础颜色 (RGB) | 每通道 0–1 |
| m | 金属度 | 0–1 |
| r | 粗糙度 | 0–1 |
| alpha | 不透明度 | 0–1 |
材质完全在 3D 空间中生成,而非通过 UV 映射或多视图渲染。这意味着纹理从每个角度看都是无缝且一致的。
输入图像通过 DINOv3-L 编码器处理,提取视觉特征。这些特征通过交叉注意力注入到每个 DiT 模型——与 Stable Diffusion 中用于文本条件的机制相同。
| 分辨率 | 总耗时 | 形状 | 材质 | 硬件 |
|---|---|---|---|---|
| 512³ | ~3 秒 | ~2 秒 | ~1 秒 | NVIDIA H100 |
| 1024³ | ~17 秒 | ~10 秒 | ~7 秒 | NVIDIA H100 |
| 1536³ | ~60 秒 | ~35 秒 | ~25 秒 | NVIDIA H100 |
模型使用渐进式训练——从 512³ 开始,然后扩展到 1024³。1536³ 模式通过级联推理实现测试时扩展,迭代应用模型来优化输出。
| 方面 | TRELLIS v1 (SLAT) | TRELLIS 2 (O-Voxel) |
|---|---|---|
| 表示方法 | 结构化潜在表示 (SLAT) | 无场稀疏体素 |
| 压缩比 | 4 倍空间下采样 | 16 倍空间下采样 |
| 网格解码 | 通过神经场查询 | 直接 Dual Contouring(< 100ms) |
| 拓扑支持 | 仅封闭表面 | 开放、非流形、内部空腔 |
| 纹理方式 | 多视图 / UV 相关 | 原生 3D 材质推理 |
| 材质类型 | 基础颜色 | 完整 PBR(颜色、金属度、粗糙度、不透明度) |
| 参数量 | ~20 亿 | 40 亿 |
从 SLAT 到 O-Voxel 是最大的架构变化。通过消除隐式场并直接存储几何,TRELLIS 2 实现了更快的解码、更好的拓扑处理和更高的视觉质量。
TRELLIS 2 的材质生成值得特别关注,因为它完全在 3D 空间中操作,而非通过传统的 UV 映射或多视图合成。
阶段三可以独立运行。给定一个已有的 3D 形状,你可以为它生成新的纹理。这意味着:
同一个 O-Voxel 表示可以解码为多种输出格式:
| 格式 | 扩展名 | 解码方式 |
|---|---|---|
| 网格 | .glb | 从 O-Voxel 特征通过 Dual Contouring |
| 3D 高斯溅射 | .ply | 在体素中心放置高斯 |
| NeRF | .npz | 拟合神经场到 O-Voxel 数据 |
GLB 导出支持可配置的网格简化(目标面数)、最高 4096×4096 的纹理分辨率,以及可选的 WebP 纹理压缩。
TRELLIS 2 包含一个名为 FlexGEMM 的自定义稀疏卷积后端,使用 Triton 实现:
这个自定义后端是 TRELLIS 2 能在 512³ 分辨率下实现 3 秒生成的部分原因——那些可能成为标准实现瓶颈的稀疏运算被高度优化了。
| 规格 | 值 |
|---|---|
| 总参数量 | ~40 亿 |
| DiT 模型 | 3 × 13 亿 |
| SC-VAE 参数量 | ~8 亿(形状 + 材质) |
| 最大分辨率 | 1536³ 体素 |
| 压缩比 | 16 倍(1024³ → ~9,600 个标记) |
| 图像编码器 | DINOv3-L |
| 流匹配 | Rectified Flow,logitNormal(1,1) |
| 开源许可 | MIT |
| 训练数据 | 500,000+ 多样化 3D 物体 |
| 学术会议 | CVPR 2025 |
理解架构是一回事,实际体验又是另一回事。我们的平台在优化过的硬件上运行 TRELLIS 2,让你无需本地设置就能生成 3D 模型。
| 方式 | 本地安装 | 我们的平台 |
|---|---|---|
| 设置时间 | 2-4 小时 | 0 分钟 |
| GPU 要求 | NVIDIA 16GB+ 显存 | 无 |
| 技术要求 | Python、CUDA | 无 |
| 最大分辨率 | 受限于你的 GPU | 最高 1536³ |
相关文章:
专注于AI驱动的3D模型生成、格式转换和浏览器端3D渲染的3D技术团队。我们亲测并评测每一款3D工具。