内容创建/渲染

使用 Meshtron 大规模生成高保真 3D 网格

网格是 3D 资产最重要且应用最广泛的表示形式之一。它们是电影、设计和游戏行业的默认标准,几乎所有 3D 软件和图形硬件都原生支持它们。

3D 网格 可视为多边形面的集合,通常由三角形或四边形组成。

网格的一个重要属性是拓扑 ,它是指这些多边形面的组织结构,这些多边形面离散于 3D 表面。艺术家创建的网格通常具有信息量大且组织良好的拓扑结构,这些拓扑结构与物体的底层结构高度一致。

视频 1、Meshtron 概述

拥有艺术家般的拓扑对于编辑、纹理、动画和高效渲染至关重要。然而,由艺术家手动创建这些网格是一项劳动密集型任务,需要大量的 3D 建模时间和专业知识。

可以通过算法从其他 3D 表征中提取网格。在典型的文本到 3D 或图像到 3D 生成系统中,神经生成器生成神经场,然后使用 Marching Cubes [ FlexiCubes (NVIDIA) NMC DiffMC ] 或 Marching Tetrahedra【 DMTet (NVIDIA)】等算法将神经场转换为网格。

遗憾的是,这些手动设计的算法会生成不具有类似艺术家拓扑的密集网格,从而影响这些方法的质量和实用性。

A diagram shows that hand-designed algorithms like Marching Tetrahedra and Marching Cubes produce dense meshes that lack adaptivity. This results in meshes with missing details, bumpy geometry, and uninformative tessellation. Meshtron, as a data-driven algorithm, produces artist-like topology with great geometric detail, even at a lower face count.

图 1、网格比较

新兴的工作线使用机器学习算法从现有的艺术家创建的网格中学习,以数据驱动的方式生成网格。这些工作展示了巨大的潜力,但在可扩展性方面受到限制,处理多达 1.6 K 个面部的最佳方法:

与之形成鲜明对比的是,一个精致的 3D 物体通常需要 10K 多个面才能进行准确建模。我们的调查显示,艺术家创建的网格的人脸中值通常为 10K,平均值为 32K。

Meshtron 提供了一种简单且可扩展的数据驱动型解决方案,可在 1024 级坐标分辨率下生成复杂的艺术家式网格,网格面高达 64K。与现有方法相比,这增加了一个数量级,坐标分辨率提高了 8 倍。

A diagram shows previous works generate meshes with limited face counts at a low, 128-level spatial resolution and Meshtron meshes with controllable face counts of up to 64K at a higher, 1024-level spatial resolution. Compared to previous works, Meshtron produces better quality meshes at similar face counts, while being capable of generating much more sophisticated meshes.

图 2、之前低分辨率的低多边形网格与可控制人脸计数和高分辨率的 Meshtron 生成网格的比较

网格是一个令牌序列 

Meshtron 是一种生成网格标记的自回归模型。它的工作原理与 GPT 等自回归语言模型相同。

网格可以轻松转换为令牌序列。网格的基本构建块是三角形面,可以用九个令牌表示:

  • 每个三角形有三个顶点。
  • 每个顶点有三个坐标。
  • 每个坐标都可以量化以获得离散 token。

因此,通过按照从下到上的排序顺序将这些面部标记链接在一起,网格可以以唯一方式表示为标记序列。

 GIF shows that a mesh can be converted to a unique sequence of tokens by sorting the vertices and faces. The obtained sequence has a length of 9 times the face count.
图 3、按标记序列呈现网格
A GIF shows that the Meshtron generates triangles in sorted order, from bottom to top.
图 4、从下到上的生成过程

Meshtron 是一种高效的网格生成器 

直接生成这些网格令牌的成本很高。具有 32K 个面的网格需要 300K 个令牌。对于典型的自回归模型,生成速度极慢,训练成本高昂。

Meshtron 采用 Hourglass Transformer 架构,通过内部合并 token 来减少序列长度,从而节省计算和内存。更具体地说,该模型由三个阶段组成,每个阶段将序列长度缩短三倍:

  • 第一阶段 :在坐标级别运行,处理每个 token。
  • 第二阶段:在顶点级别运行,每个顶点处理一个 token (3 倍缩减)。
  • 第三步:在人脸级别操作,每个人脸处理一个令牌(9x 减少)。
  •  
A GIF shows that Meshtron uses an Hourglass Transformer as its backbone, which internally reduces the token count. This reduces the computing and memory consumption significantly while making the generation process much faster.
图 5、沙漏式 Transformer 的实际应用

与传统的单阶段模型相比,通过将更多层分配给具有更高归约率的阶段,计算和内存成本显著降低。

Hourglass 网络的每个阶段都与网格的坐标 – 顶点面语义完美对齐。这不仅提高了建模效率,还能为难以生成的 token 分配更多计算能力。在每个三角形中,第一个顶点最容易生成,而最后一个顶点最难以生成。

A diagram shows that mesh sequences have inherent periodicity in the difficulty of generating each token. The hourglass model allocates more compute (GFLOPs) to difficult-to-generate tokens (ones with high log perplexity). Vertical lines show the triangle boundaries within the token sequence.

图 6、对不同令牌位置的对数困惑度和每个令牌的 GFLOPs

Meshtron 使用的另一种提高效率的技术是滑动窗口注意力。传统的 Transformer 模型的上下文长度随序列长度增长,从而导致计算的二次增长,以及随着序列的延长内存消耗量的线性增长。这会导致训练和生成过程中长序列的速度显著放缓。

相反,Meshtron 会维护一个包含 8192 个面的固定长度上下文窗口。在训练期间,网格序列会随机裁剪到多达 8192 个面。在推理过程中,系统会将之前生成的超过 8192 个面的令牌从 KV 缓存中逐出。滑动窗口技术会导致恒定的内存消耗和恒定的令牌吞吐量,并且不会随着网格大小的增长而减慢。

借助这些技术,Meshtron 可在训练和推理期间将令牌吞吐量提高 2.5 倍,并节省 50% 以上的内存,同时生成质量更好的网格。

Meshtron 高度可控 

当前版本的 Meshtron 接受以下控制输入:

  • 激光点云(Point cloud):确定输出网格的形状。
  • Face count :确定 输出网格的密度。
  • Quad ratio:在 Quad 和三角形曲面细分之间切换。
  • 创意:可调整以生成激光点云中不存在的额外细节。

由于几乎所有的 3D 表征都可以转换为点云,因此 Meshtron 既可以作为独立的重构器来提高现有网格的质量,也可以与文本转 3D 或图像转 3D 模型一起使用,从头开始生成艺术家级网格。

A diagram shows that in the faithful mode, the mesh generated by Meshtron follows closely to the input, reproducing all the details as well as imperfections. In the creative mode, Meshtron attempts to generate extra details and fix the imperfections. The input meshes in this example are generated by a text-to-3D service.

图 7、Meshtron 控制创造力

Meshtron 的控制输入是通过交叉注意力实现的,具有高度可扩展性,并且可以轻松适应其他类型的输入,例如图像、附加控制等。它还通过提供全局上下文支持滑窗式推理。

A diagram shows that all the conditioning inputs are encoded into embeddings using respective encoders. The embeddings are then concatenated and used for controlling mesh generation with cross-attention.

图 8、Meshtron 完整模型架构

结束语 

Meshtron 是一种自回归网格生成器,基于 Hourglass 架构并使用滑窗注意力。它利用网格序列的周期性和局部性来大幅提高效率。

Meshtron 以前所未有的分辨率和保真度水平生成精细、复杂的 3D 物体网格,与专业艺术家创建的网格非常相似。它为动画、游戏和虚拟环境打开了生成更逼真的精细 3D 资产的大门。

由于其通用且高度可扩展的架构,我们希望 Meshtron 可以作为未来网格生成研究和应用的参考。

有关更多信息,请参阅以下资源:

 

 

标签