NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

我们提出了一个深度生成模型,该模型学习在ShapeAssembly中编写新颖的程序,ShapeAssembly是一种用于建模3D形状结构的特定领域语言。

执行 ShapeAssembly 程序会生成一个由部件代理长方体的分层连接程序集组成的形状。我们的方法开发了一个格式良好的潜在空间,支持程序之间的插值。上面,我们展示了一个这样的插值,并可视化了这些程序在执行时产生的几何形状。在最后一列中,我们手动编辑生成的程序的连续参数,以生成具有新拓扑的变体几何结构。

1、概述

手动创作 3D 形状既困难又耗时;3D 形状的生成模型提供了引人注目的替代方案。程序表示(procedural representations)就是这样一种可能性:它们提供高质量和可编辑的结果,但难以创作,并且通常产生多样性有限的输出。另一个极端是深度生成模型(deep generative models):给定足够的数据,它们可以学习生成任何类别的形状,但它们的输出有伪影并且表示不可编辑。

在本文中,我们朝着实现新颖的3D形状合成的两全其美迈出了一步。首先,我们提出了ShapeAssembly,一种用于3D形状结构的特定领域的“汇编语言”

ShapeAssembly 程序通过声明长方体部件代理并以分层和对称的方式将它们相互附加来构建形状结构。ShapeAssembly 函数使用连续自由变量进行参数化,因此一个程序结构能够捕获一系列相关形状。我们展示了如何从PartNet数据集中的现有形状结构中提取ShapeAssembly程序。然后我们训练一个深度生成模型,一个分层序列VAE,学习编写新颖的ShapeAssembly程序。我们的方法利用了每种表示的优势:程序捕获可解释和可编辑的形状可变性的子集,深度生成模型捕获难以通过程序表达的形状集合之间的可变性和相关性。

我们通过比较我们生成的程序输出的形状与其他最近的形状结构合成模型输出的形状来评估我们的方法。我们发现我们生成的形状比其他方法更合理,在物理上更有效。此外,我们评估了这些模型的潜在空间,发现我们的模型结构更好,并且产生更平滑的插值。作为一个应用程序,我们使用我们的生成模型和可微程序解释器来推断形状程序并将其拟合到非结构化几何体,例如点云。

2、ShapeAssembly DSL

ShapeAssembly是一种用于形状结构的低级特定领域的“汇编语言”。程序由实例化新几何图形的长方体语句和附加语句组成,这些语句将这些几何图形在其表面上的指定点连接在一起。宏函数(反射、平移、挤压)通过扩展到多个长方体和附加语句来形成复杂的空间关系。

上面,我们说明了 ShapeAssembly 解释器如何通过命令式执行程序命令来增量构造形状。长方体在原点实例化,并通过附着移动。请注意第 6 行中的 reflect 命令如何充当宏函数,创建一个新的长方体和两个新附件。

下面我们展示了这种命令式执行对分层程序的直接扩展:我们通过将选定的非叶长方体视为另一个程序的边界框来表示分层形状。

你可以在此处使用我们的交互式解释器试用ShapeAssembly语言。

3、几何形状生成

在中间一行,我们展示了来自ShapeAssembly程序生成模型的样本。在顶行中,我们按倒角距离显示训练集中的最近邻形状。在底行中,我们按程序编辑距离显示训练集中的最近邻形状。我们的方法合成了有趣和高质量的结构,超越了直接的结构或几何记忆。

4、几何形状编辑

程序通过表示形式,允许对生成的输出进行简单的语义编辑。每列在顶行显示模型的示例。在底行中,我们通过仅编辑程序的连续参数来创建具有相同结构但几何形状不同的变体。

5、几何形状插值

我们的方法和 StructureNet 对验证集中形状的潜在空间插值的定性比较。我们的方法在程序空间内的插值产生将平滑连续变化与离散结构过渡相结合的序列。

6、从非结构化几何体合成

上面,我们展示了我们的方法与StructureNet(SN)的点云合成的定性比较。我们的方法能够推断出与非结构化几何形状匹配良好的程序结构。该程序结构的连续参数可以通过优化程序进一步细化,以便在不产生伪影的情况下更好地拟合目标点云。我们在下面的 gif 中显示了此优化的动态版本。


原文链接:ShapeAssembly:
Learning to Generate Programs for 3D Shape Structure Synthesis

bBimAnt翻译整理,转载请标明出处