图1:从共有760万个多边形中的真实建模序列的9个关键帧(顶部)中提取并折叠的编辑时间线(底部),。 §5中列出了所检测到的操作的图例,完整的时间表在补充材料中。
摘要
我们提出了一种新颖的工具,用于根据时间轴抽象(abstraction)对来自连续3D文件的建模历史进行逆向工程。 尽管时间轴接口通常用于动画的3D建模包中,但之前从未在几何体操纵中使用过。 与以前需要使用编辑软件的可视化方法不同,我们的方法不依赖预先记录的编辑指令。 而是将每个独立的3D文件视为构造流程的关键帧,从该关键帧中对编辑源进行反向工程。 我们根据不同专业艺术家在各种建模工具中创建的六个复杂3D序列对该工具进行评估,并得出结论,该工具提供了可视化和理解编辑历史的有用方法。 一项比较用户研究表明,该工具非常适合于此目的。
1.介绍
随着3D几何处理工具的可访问性越来越高,它们在从游戏到3D打印的应用程序中的使用正在激增。因此,越来越需要检查和组织大型模型集合。这些可能来自需要根据类型或形状分类的相似模型的档案。但是,我们发现了一个补充问题。在编辑历史记录的时域中组织模型。由于许多工具不保存编辑历史记录,即使保存,也仅在最近的几个步骤中保存,因此出现了问题。无论如何,这些本地历史记录都可以手动删除,并且在导出为交换格式时也会丢失。尽管大多数工具都允许文件名自动增加和自动保存,但是对此类文件的管理却很少得到支持。这导致我们可以称其为充满模型的磁盘问题:存在一个磁盘或一个版本控制存储库,其中包含各种版本的模型,但是由于几乎没有关联,因此很难理解这些潜在大型数据集的来源元数据。例如,在同时也是Autodesk最大客户之一的跨国工程公司Arup中,由于项目跨越多个专用3D软件,因此经常遇到此问题。他们的做法是定期保存整个3D文件的快照。类似的方法在创意产业中也很普遍,例如前Black Rock Studios或Wham Bam Productions,它们迫切需要探索模型历史的工具。
因此,我们提出了一种新颖的工具,该工具可以使用模型集并建立高级来源的可视化。 该工具通过逆向工程模型的零件(组件)的合理历史记录,然后汇总重要的更改来完成此任务。 这些显示在时间轴上,可以轻松地直观地跟踪每个零件的寿命及其与其他零件的关系。 使用该工具,用户将能够回答有关模型历史记录的重要问题,例如特定更改的时间或引入错误的步骤。 图1显示了一个示例。
Grossman et al. [GMF10]在时间轴上可视化图像的历史记录,但他们这样做是为编辑器提供了工具,并通过视频记录了整个会话。他们的系统也已扩展到Autodesk的CAD软件。但是,这种捕获可能不一定存在。对于大多数可能要检查的传统3D模型,确实是这种情况。因此,我们的工具对于生成模型并以完整文件作为输入的编辑器是不可知的对于编辑者而言。它不需要任何工具(instrumentation),也不需要任何编辑序列。在演示中,我们使用了从Autodesk Maya,Pixologic ZBrush,Trimble Sketchup,Blender和Luxology Modo保存的模型。我们最初处理的模型包含数百万个多边形。为了从分析的角度使这变得易于处理并实现简洁的可视化,我们的工作基于以下观察:许多模型由单独的零件而不是单个流型表面组成。因此,模型通常由重复的,对称的或自相似的部分组成[MPWC13]。因此,我们的重点是对零件和副本的变化,共同根源和实例化的方面进行逆向工程。
与最近的逆图像编辑[HXM * 13]类似,我们提出了一组简单的几何规则和方法来检测常见的编辑操作并提取语义出处(provenance)。我们通过折叠(合并)无冲突的编辑并删除冗余的模型快照来进一步提供摘要。然后可以将经过分析和抽象的时间轴显示在我们的自定义查看器中,以快速浏览编辑历史记录并关注关键事件。我们在一系列模型上测试了该系统,通常跨越50-100张快照,每个快照包含数千个组件,并恢复了紧凑而翔实的编辑摘要,请参见图8。
2.相关工作
Grabler et al. [GAL09]生成照片的视觉教程在GIMP的仪器版本中根据作者的演示来编辑会议。 格罗斯曼等人的编年史。 [GMF10]通过将UI的编辑事件和组件链接到视频回放中来支持文档历史浏览。 生成的视频被索引并按层次进行聚类。 但是,这需要软件工具和较大的磁盘空间才能生成序列。 在3D模型的背景下,Denning等人。 [DKP11]使用仪器化的Blender插件获取序列,该插件记录了所有编辑操作。 通过使用正则表达式来分析重复操作的频率来对这些结果进行聚类。 相反,我们的方法只需要保存到磁盘的一系列模型即可。 甚至诸如Autodesk Maya的VisTrails [BCC * 05]插件之类的商业产品也可以预览录制的编辑内容。 当没有仪器的编辑软件时,我们将提取历史记录。
形状分析 多年来,研究人员研究了如何计算表面对[vKZHCO11]以及3D模型的集合[NBCW * 11,HKG11]中一致的对齐方式和对应关系。由于在许多情况下点对应可能是模棱两可和模糊的,因此已经研究了更加抽象的基于零件的对应。 Golovinskiy和Funkhouser [GF09]首先在网格对的背景下提出了一致的分割方法。他们依靠严格的对齐方式和最近的邻居来建立对应关系,并将所有输入模型共同分割成多个部分。随后,开发了几种方法来解决通过在局部形状特征[KHS10,HFL12,SvKK * 11,WAvK * 12]的嵌入空间中对点进行聚类或使用耦合模态分析[[HS]来解决一致的分割和标记问题。 [KBB * 13],处于有监督或无监督的设置中。最近,Kim et al. [KLM13]共同优化了对应关系,零件分割和零件级变形,以分析模型集合。与这些不同,我们的目标是检测编辑操作(网格细化,实例化),而网格中未触及的部分在整个帧中保持相同。线性序列导致模型不适合进行共分析,因为几何相似性仅限于相邻帧。
网格变形 在网格对之间存在点级对应信息的情况下,计算机动画的早期工作提出了多分辨率网格插值框架[LDSS99, MKFC01]。 随后,开发了通过构造和导航底层形状空间来插值网格集合的算法[SZGP05]。 Jain等。 [JTRS12]通过在一对输入网格之间进行插值来合成新的3D形状。 他们通过相交检测将模型划分为已连接组件的层次结构。 单个滑块通过使用基础的接触图和关系图来创建中间网格。 我们也通过滑块插入模型,但是,我们的挑战是根据输入数据对工程树进行逆向工程。
版本控制 Chen et al. [CWC11]提出了一种用于图像编辑的非线性版本控制。他们使用有向无环图来表示序列,其中图节点是编辑操作,图边缘是相应的空间,时间和语义关系。然后将记录的图形可视化以显示修订历史记录。他们还提出了一个易于使用的界面来支持常见的修订操作(例如,审阅,重放,比较,添加,合并等)。在3D模型的上下文中,Dobo and Steed [DS12a, DS12b]对3D资源使用了两种和三种方式的差异化和合并功能,并引入了一种工具来合并场景图组件中的更改,同时通过接受或拒绝整个修订来解决冲突。假定组件级别的唯一名称标识符已建立了对应关系。最近,在一个有趣的系统中,Denning和Pellacini [DP13]将编辑距离近似为匹配两个网格上元素的成本。通过将面和顶点作为图的节点,并用边表示它们的邻接关系,他们将网格微分的任务转换为最大的常见子图同构问题。该方法依赖于空间邻接,并且不处理建模操作(例如,实例化,自由形状的形状操纵,重新网格化等),这是我们工作的重点。
3.系统概述
给定一组连续的3D模型(我们称为关键帧),我们的目标是对解释它们之间关系的建模树进行逆向工程。 为此,我们将关键帧分解为多个部分,并针对每个部分跟踪其出处,即它与相邻帧中相同或相似部分之间的关系。 完整的建模树将解释每个已识别模型组件的生命历史。 作为一个逆问题,任务是模棱两可的,需要进行多次中间编辑,从而可能解释输入模型的顺序。 因此,我们既不试图恢复实际的历史,也不试图详尽地生成历史的所有可能的排列。 取而代之的是,我们试图推断出可能的步骤流程,以符合允许的编辑操作的假设来满足我们的假设,并提供对输入模型中发现的几何图形的一致解释。
3.1 用户界面
从用户的角度来看,检测到的操作以及它们的可视化和回放是我们系统的核心输出,请参见图2。尽管建模可能在时域中被认为是连续的,但是我们将构造离散化为单个事件,参见§5.1。在这项工作中,我们专注于以下基本的组件级操作:添加和删除,对应部分的多计数(polycount and)和大小的更改以及转换,重复,实例化和重复复制的检测。正如§7中各种建模工作流程所证实的那样,这样的操作在编辑历史中占主导地位,并且理解它们可以提供有价值的见解,尽管不一定捕获艺术家可能已经执行的所有步骤。为了生成时间线,用户首先加载模型关键帧,系统从中自动提取并估计跨这些帧的组件级对应流。随后,在关键分析阶段,我们隐含编辑操作,并使用时间轴隐喻对其进行可视化(请参阅补充视频)。用户可以像在视频编辑器中那样在时间轴上进行擦洗,并创建一个动画来演示模型如何随时间演变。与[GMF10]相似,时间轴压缩可进一步简化显示的信息,而不会违反提取的来源(图1底部)。请注意,在极少数情况下,当自动通信失败时,用户可以手动覆盖分配。
图2 在跨平台框架Qt中实现的原型GUI。 变形窗口(顶部),具有对应关系的关键帧(中间)和估计时间轴(底部)。
图3 流水线。 已加载连续模型的集合。在预处理步骤中,分别对网格进行分割,并估算基于零件的对应关系。 将对此进行分析,并将隐含的编辑历史记录可视化。
3.2 处理流水线
输入关键帧或建模“快照”提供了直接的证据,我们的逆向工程解决方案隐含了未记录的缺少的编辑步骤,图3:
1. 首先,在预处理(第4节)中,我们执行独立的组件分析以提取模型段并建立框架之间的相互对应关系。
2.接下来,通过语义分析(第5节),我们检测关键帧上的编辑操作。 然后,对提取的操作进行分组,并可能通过跨时间合并非冲突的编辑操作来折叠。
3.最后,提取的出处以时间轴(§6)可视化,并带有颜色编码的对应关系,标记的单个事件以及回放选项。 压缩的时间线提供简洁的编辑摘要,显示了快速概览,尤其是对于长序列。
4.预处理
艺术家通常将形状创建,表示和操纵为各种基于基本体的建模工具通常支持的组件集合。因此,与模型集合的协分析相反,我们有一个不同的问题(请参阅第2节)。如[GF09]所示,严格依赖于网格的预对齐会产生较差的结果。因此,我们不对模型的初始全局一致性做任何假设。取而代之的是,我们基于这样的观察:早期的设计阶段通常以聚集为特征,即先概述最突出的体积,然后再逐步添加细节[ES11]。因此,我们专注于在帧之间建立组件级的对应关系,首先从占主导地位的最大组件开始,然后为不太突出的部分提供附加的上下文信息,从而排除全局刚性变换。此外,构造顺序中的相邻模型往往与许多局部未修改的部分高度相关。我们利用这一关键特性,并制定了第4.1节中所述的顺序对应估计。
分割
我们使用经典的分层面聚类[GWH01]独立生成不重叠的组件作为聚类。 该算法构建了一个网格表面的对偶图,这样节点就代表了最初由各个面播种的簇,而边缘则根据折叠的成本,其相邻性进行了排序。 在每次迭代时,将删除成本最低的边,合并其群集,并重新计算其继承边的成本。 除了群集的平面性之外,成本还可以表示与球体和圆柱体等形状的一致性(参见[AFS06])。 该算法继续进行直到边缘被用尽,从而有效地识别出不相交的流型组件。
4.1 通信流估计
按照通信(correspondence)流程
F = {Cti→Cti+1 → ... →Cti+n}, (1)
即,在时间t将组件C分配给组件C'在时间t ',仅仅找到最相似的网格是不够的,因为组件可能会变形,细化,复制等。相反,需要在所有关键帧中识别和跟踪完全相同的组件,以便可靠地暗示其来源。 因此,对应措施必须对形状和位置的变化具有鲁棒性,但要区分重复项。
PCA-aligned边界框
首先,我们计算一个主成分分析(PCA)对齐的边界框,以便为每个成分建立一个粗略的描述符,c.f., [JTRS12]。 由父面的累积面积Ai加权的分量C中的顶点vi的PCA提供了从全局坐标系到局部坐标系的转换。
Part-based hierarchy
建立基于零件的层次结构是向其他松散的组件添加上下文支持和相对本地化的常见方法[SSS * 10,JTRS12]。 下一步是在每个关键帧独立地进行下一步,而不是构建复杂的组件树,我们从植根于最大组件的单级深树森林开始。 因此,组件C的父CP是包含其边界框并具有最大体积的父CP。 这提供了本地化的系统,其中最大的组件在原点具有明确的全局引用。 请注意,父组件可能不是场景的同一部分,因为组件可以被翻译,复制,断开连接等。
5.3 时间压缩
例如,在中世纪数据集中(图2),整个序列中有510个单独的组件,但这些组件总共仅形成17个组件组。 此外,许多编辑操作跨多个组件重复,例如在实例化的情况下,而其他则彼此独立。 我们的目标是简化时间轴矩阵Φ的表观复杂性,同时保留反向工程出处的本质。 因此,我们执行两个分析独立的折叠步骤。
根据定义,实例化重复项对其应用的操作与模板相同。 因此,按行折叠会将所有实例合并到其父组件中,而其余组件则保持不变。 在中世纪数据集的情况下,这大大降低了矩阵高度,从189行减少到28行。 相邻帧中不影响相同通信流程的操作被认为是独立的。 因此,考虑到在ti处的操作不会与ti-1处的操作发生冲突,反之亦然,即在相邻帧中未同时发生操作时,可以执行按列折叠。
6. Timeline Visualization
在时间轴可视化中表示事件是将复杂的时间交互抽象为有意义的,易于理解的流程的常见方式。除了线性相关性外,时间轴还可以显示分层信息[SNF10],甚至可以用作协作平台[BBB * 10]。在计算机图形学中,时间轴主要用于动画合成,例如许多3D创作工具的情况。我们选择了一个分层的时间线,因为它与输入数据的线性连续性相匹配,但是使我们能够显示组件及其组之间的依赖关系,请参见图2。这样的时间线既鼓励了手工探索又使自动化成为可能。回放。与[DKP11]相似,我们的查看器在顶部提供主要的混合预览,并在其下方按从左到右的顺序提供一系列缩略图模型。此外,反向工程出处时间轴位于底部。使用随机颜色方案根据模型的独立分割对模型进行初始着色,但是一旦完成对应估计,各帧的颜色就会保持一致。可以选择单个组件或它们的组来突出显示其余框架中的相应部分。在独立浏览主预览时,可以同步浏览缩略图。
6.1 时间线界面
时间线被划分为等距的存储桶,这些存储桶说明了相邻帧之间的经过时间,请参见图1中的垂直线。这是一个近似值,因为不需要在相等的时间内开发输入模型。交替的行分别表示通信流程。组件的寿命可视化为三次贝塞尔曲线的集合,形成了一条路径,该路径可以在检测到重复时与指定的时间线行分开。这些内容按照模板的顺序从上到下排列,然后是重复的副本和一般的副本。它们的颜色与缩略图3D视图中的对应关系一致。实例化的副本具有降低的不透明度,即使时间线未折叠(如图2所示),也易于识别。双击路径会在缩略图视图中突出显示已分配的组件。如第5.1节中所列,检测到的编辑操作的矢量化图标位于路径的顶部。从左至右依次列出了添加项,然后是多边形数和大小的相对变化,其中平移是3D模型对之间的最后一个。这样的布置确保了对于重复,相对几何变化仅在时间轴中出现一次,而变换直接放置在匹配路径的顶部。即使没有证据表明事件以这种特定顺序发生,它也会使界面混乱。
Playback blending
就像在2D动画中一样,两个连续关键帧之间的时间被线性插值,以便通过检测到的编辑操作将t j处的分量变形为t j + 1处的已知状态。 此外,组分Ci,j-1的不透明度从100%变为0%,而对于Ci,j的不透明度则相反。 那些不变的组件将显示为灰色,以便在播放期间突出显示修改内容。 但是,重复的副本会一次一遍地更改其不透明度,以使成功的结构看起来更令人满意,请参见图6。即使是线性插入,也可以通过放慢播放速度来对某些操作进行更多的强调。 用于所需的事件类。
|