AI 三维生成与模型基础
# AI 三维生成与模型基础
上传一张杯子照片,图生 3D 工具可以生成一个能从不同角度观看的杯子模型。它补出了照片看不见的背面,但这些部分是推测的,不是实测结果。
先分清两个问题:模型怎样存形状与外观,以及这些形状是否符合真实物体。 前者决定怎么编辑和展示,后者决定能不能用于测量、打印或制造。
# 先认识模型里的几个东西
| 名称 | 人话解释 | 实际作用 |
|---|---|---|
| Mesh(网格) | 用顶点、边和面拼出的表面 | 表达物体形状,可编辑、渲染和绑定骨骼 |
| 拓扑 | 顶点和面之间怎样连接 | 影响变形、修改和几何算法的稳定性 |
| UV | 把三维表面对应到二维图片的位置 | 让纹理贴在正确的位置 |
| 法线 | 表面朝向 | 影响光照、正反面和视觉平滑效果 |
| 材质与纹理 | 材质规定怎样反光,纹理提供局部颜色等数据 | 决定金属、塑料、皮肤等外观 |
| Rigging(绑定) | 给模型设置骨骼和变形规则 | 让静态角色动起来 |
PBR 是 Physically Based Rendering(基于物理的渲染)。常见输入包括基础颜色、金属度、粗糙度和法线贴图。颜色纹理中的阴影不等于真实几何,法线贴图也不会直接增加物体厚度。
用杯子对应这些概念就很直观:杯身和杯把的形状由 Mesh 决定;杯身印花是一张纹理,UV 决定它贴在哪;陶瓷是否光滑、反光多强由材质控制。印花歪了先查 UV,杯把形状错了要改几何,反光不对再查材质和灯光。
# Mesh、NeRF、3DGS 和 O-Voxel 有什么区别
它们是不同的三维表示和处理路线,不是每一项都全面取代上一项。
| 表示 | 主要存什么 | 适合什么 | 主要限制 |
|---|---|---|---|
| Mesh | 顶点、面及关联属性 | Web、游戏、建模、动画资产 | 生成网格常需清理拓扑、UV 和材质 |
| NeRF | 位置、观察方向对应的密度与颜色等函数 | 从多视角数据重建新视角画面 | 不等于现成可编辑、可制造的网格 |
| 3DGS | 很多带位置、尺度、颜色和透明度的三维高斯 | 实景新视角浏览和快速渲染 | 编辑、碰撞和物理结构通常需要额外表示 |
| O-Voxel | TRELLIS.2 使用的稀疏体素结构及表面属性 | 生成复杂形状并转换为网格资产 | 表示能存内部结构,不等于单图能提供真实内部证据 |
NeRF 是 Neural Radiance Fields(神经辐射场);3DGS 是 3D Gaussian Splatting(三维高斯泼溅)。前者常通过学习一个函数表达场景,后者用大量可渲染的高斯元素表达场景。
怎么选可以直接看目的:要给杯子加骨骼、改杯把或导出 GLB,优先关注 Mesh;要把拍摄的房间做成可换视角浏览的实景,可以研究 NeRF 或 3DGS;使用 TRELLIS.2 生成资产时,再了解它中间使用的 O-Voxel 表示,最终仍可导出网格。不要把这四个名字当成必须依次完成的步骤。
体素和像素有什么关系
像素是二维图像上的小格子,体素是三维空间中的小格子。稀疏体素只保存有用区域,不必为整个包围盒里的空白空间都分配相同数据。它是一种空间表示,并不自动带来真实材料、质量或机械性能。
# NeRF:从不同位置看,应该看到什么颜色
假设围着一把椅子拍了几十张照片,并知道相机大致在什么位置。NeRF 学习的是一个函数:给它空间位置和观察方向,它预测该处的密度与颜色。密度可以粗略理解为光经过这里时,有多大程度被物体挡住。
渲染一个像素时,从相机朝该像素方向发出一条射线,沿途取多个采样点,查询它们的密度与颜色,再按遮挡和透射关系累计成最终颜色。训练时将渲染图与真实照片比较,调整模型,让不同视角都尽量一致。
因此,NeRF 的强项是 从已拍摄视角学习场景,再合成新视角,不是直接输出一份有杯身、杯把、骨骼的建模文件。把辐射场转换成网格是额外步骤,转换质量受表面提取方法和原始数据影响。
它也不是只能处理物体外壳:能学到哪些内容,取决于输入是否观察到这些内容、表示与训练方法是否支持。没有拍到的封闭内部,不能凭算法名称保证真实。
# 3DGS:用很多带透明度的小椭球拼出场景
3DGS 不必在每次渲染时沿所有射线反复查询一个大型神经网络,而是显式保存大量三维高斯。可以把每个高斯想成一个边缘逐渐透明的小椭球,而不是有硬边界的小方块。
| 一个高斯记录什么 | 对画面的影响 |
|---|---|
| 中心位置 | 它位于场景哪里 |
| 尺度与旋转,或等价的协方差 | 它多大、沿哪个方向拉长 |
| 不透明度 | 对最终画面的贡献有多强 |
| 颜色及随观察方向变化的系数 | 从不同方向看时的外观 |
典型重建过程先从多视角照片估计相机与初始点,再优化高斯的位置、形状和外观,使渲染结果接近照片。渲染时把三维高斯投影成屏幕上的二维椭圆,按深度处理遮挡并混合颜色,因此很适合 GPU 并行计算。
比如扫描一间展厅,细密的高斯可以很好地还原墙面、反光和装饰。代价是它们并没有自动组成适合碰撞的封闭表面:人能否穿过墙、机器人如何避障,通常还要额外的碰撞网格或空间表示。
实时是运行结果,不是格式保证。 高斯数量、屏幕分辨率、透明层重叠、排序算法和手机 GPU 都会影响帧率。玻璃或细杆周围的漂浮噪点,也需要清理和多角度检查。
# O-Voxel:把空间位置、表面和材质一起组织起来
TRELLIS.2 使用 O-Voxel 作为三维资产表示。理解时分两层:稀疏体素负责定位哪些空间区域有内容,相关属性负责描述表面几何和材质。它不是给整个包围盒填满同样大小、同样有用的数据。
TRELLIS.2 先把这种三维数据压缩到可学习的潜表示中,再通过生成模型预测形状和材质,最后解码并转换成网格。这里也有 VAE,但处理的是三维表示,不能把二维 Stable Diffusion 的 VAE 文件直接拿来替换。
这条路线能表达开放表面、薄结构和复杂拓扑,不要求所有物体先变成一个规则的封闭外壳。但 表示能力和输入证据是两件事:格式允许记录水壶内部,不代表从外观照片就知道水壶实际的壁厚和水路。
| 容易混淆的动作 | 实际发生的事 |
|---|---|
| 训练生成模型 | 用大量样本更新模型参数,让它学会生成三维资产 |
| 单图推理 | 用已有权重为这张图生成一个新资产 |
| 场景重建优化 | 针对拍摄的场景拟合 NeRF 或高斯等表示 |
| 网格导出 | 将中间表示转换成其他软件能处理的表面和材质 |
因此,TRELLIS.2 的秒级推理与训练一个基础模型的时间,不能放在同一列直接比较。
# 模型有体积,为什么还不能算真实内部结构
一个闭合网格可以围出空间,所以不能笼统说所有生成模型都是没有体积的空壳。但这个空间里是否存在齿轮、管道、不同组织,单张外观图片通常无法确定。
例如水壶外表可以生成得很像,壁厚、壶盖卡扣和内部水路却可能是猜的。给它做实心填充,也只是人为增加几何,并不是恢复出原来的零件。
| 真实需求 | 更合适的数据与方法 |
|---|---|
| 展示外观 | 单图生成、多视图生成或摄影测量 |
| 精确尺寸与零件关系 | CAD、设计图、实测尺寸和工程约束 |
| 人体或工业物体内部 | 对应场景的 CT / MRI 等扫描、分割和专业复核 |
| 打印一个艺术摆件 | 修补闭合性、检查最小壁厚、单位与可打印性 |
# 三角面是不是不能做动画
不是。实时渲染最终通常使用三角形,三角网格也可以绑定和播放动画。角色制作偏好有良好边流的四边形,是因为它更方便编辑、细分,以及控制关节处的变形。
问题不是三角面本身,而是生成网格可能存在不合理连接、过密或不均匀的面、破洞和不便变形的边流。重拓扑是重新组织网格连接,使它更适合后续用途;完成后还要测试骨骼权重和关节动作。
# 拓扑、重网格和重拓扑为什么不能混着说
以膝盖为例,弯曲时外侧需要展开、内侧需要压缩。如果边的走向顺着关节变化,权重更容易平滑分配;如果长而细的三角面跨过整个膝盖,即使面数很多,也可能拉扯和塌陷。这种网格边的组织方向叫边流。
- 减面(Decimate):减少多边形数量,让资产更轻;不保证得到适合动画的边流。
- 重网格(Remesh):重新采样表面,改善网格分布;可能抹掉薄片、细孔和小零件。
- 重拓扑(Retopology):根据用途重新组织连接关系,角色会特别关注关节、面部和变形区域。
- 绑定与权重:规定每根骨骼影响哪些顶点、影响多大;四边形整齐也不能替代权重调整。
四边形方便沿边环编辑和细分,三角形方便稳定地渲染平面片。制作阶段可以保留四边形,交付时由引擎三角化;验收时播放实际动作,而不是只统计四边形比例。
# 怎样判断一个生成模型真的好用
不要只看正面截图,至少检查五个维度:
| 维度 | 杯子模型怎么检查 | 常见误判 |
|---|---|---|
| 几何 | 转到底部、背面,观察杯口、杯把和连接处 | 正面贴图漂亮就认为形状正确 |
| 材质 | 换灯光,观察印花、反光和接缝 | 把贴图里的阴影当成真实凹槽 |
| 拓扑 | 看破洞、自相交、面分布;动画模型做变形测试 | 面越多质量就越高 |
| 性能 | 记录输入到可下载资产的耗时、显存和文件体积 | 只记录模型推理,不算排队与导出 |
| 下游可用性 | 在目标浏览器、游戏引擎或切片软件中打开 | 在原生成工具里能看就算交付 |
Web 展示优先考虑观感和加载成本;打印需要闭合性、壁厚和尺度;仿真还需要部件、关节、质量、碰撞体等。没有脱离用途的统一高质量。
# 面试问答
1. Mesh 和 3DGS 最重要的区别是什么?参考答案
Mesh 用顶点和面明确表示表面,适合改形状、绑定动画和交给常规三维引擎。3DGS 用很多带颜色和透明度的三维高斯表示场景,常用于还原实景的观看效果。比如商品需要改杯把,我更关注网格;房间需要换视角浏览,可以考虑 3DGS。展示逼真不等于已经有适合碰撞、制造的几何。
2. 一张图片生成 3D,能直接作为数字孪生吗?参考答案
只能作为可视化资产的一部分。单图生成补全的是可能的形状,不能保证真实尺寸和内部结构。数字孪生还需要关联真实设备 ID、状态数据和更新时间;涉及测量或仿真时,还要有经过验证的几何和物理参数。
3. 为什么生成完还要用 Blender?参考答案
生成模型解决快速获得形状,Blender 负责把它整理成可交付资产。我会检查尺寸、法线、破面、材质和面数,需要动画时再做重拓扑和绑定,最后导出目标平台支持的格式。能在生成界面里看见,不代表在网页或游戏里已经好用。