将3d网格分解为2d网络

时间:2009-06-08 00:09:13

标签: algorithm graphics 3d mesh

假设您有一个3维对象,以某种常见文件格式表示为3d网格。你将如何设计一种算法将网格分解为一个或多个2d'网' - 也就是说,可以剪切和折叠以创建原始3d对象的二维表示。

除此之外,该算法需要考虑:

  • 任何给定对象的多种可能分解
  • 将网眼装入固定尺寸的画布(纸张)。
  • 识别网络中的两个面板何时重叠(因此无效)。
  • 由于重叠或页面大小限制,如果网格无法表示为单个网格,则将其分解为多个网络。
  • 在适当的位置生成标签,用于附加相邻的面。

明显的退化情况就是每面创造一个网,边缘有一半。这显然不是理想的:理想的情况是单个连续网。复杂形状的现实很可能在中间。

我意识到找到最佳网络(最少网络/最少页面)可能在计算上很昂贵,但是找到“足够好”网络的良好启发式就足够了。

3 个答案:

答案 0 :(得分:10)

当我读到你的问题时,“自动书写算法”这个词出现了。所以我用Google搜索并发现了Massarwi等人的Papercraft Models using Generalized Cylinders(pdf)

  

我们提出了一种新的生产方法   展开的纸模式   圆形的玩具动物人物   通过三角网进行三角网格划分   基于条带的近似。虽然在   原则上一个三角模型可以   通过保留尽可能多的展开   尽可能连通   检查交叉三角形   展开的平面,创造一个模式   有成千上万的三角形   不切实际。我们的方法是   通过一组近似网格模型   连续三角形条带没有   内部顶点。最初,我们   将我们的网格细分为几个部分   对应的特征   模型。我们将每个部分划分为区域   区域,分组三角形   类似的拓扑距离   部分边界。我们生成三角形   通过简化网格来剥离   保留区域的边界   区域和其他切割线。该   然后简单地创建模式   展开一套条带。该   我们方法的显着特征   是我们通过的近似网格模型   一组连续的条带,而不是   其他规则的表面,如部分   锥体或圆柱体。就这样   近似展开的图案可以   仅使用网格操作生成   和一个简单的展开算法。   此外,一组条带可以   只是通过弯曲纸张来制作   (没有破坏边缘)并且可以   代表了光滑的特征   原始网格模型。

Shatz等人还有一篇早期的相关论文叫Paper craft models from meshes(9MB pdf)。

  

本文介绍了一种算法   将网格划分为可开发的   近似。算法可以   用于CAD中的各种应用程序   和计算机图形学。这篇报告   专注于纸制作和   演示了算法   生成近似值   可开发,易于切割,并且可以   粘在一起。它也表明了   给定模型与之间的误差   纸模型很小。

enter image description here
资料来源:http://www.ee.technion.ac.il/~ayellet/images/sel-papers-pic-5.jpg

答案 1 :(得分:10)

链接到的eed3si9n算法将从复杂的几何体中生成合理的合理的纸制网格。如果您想完全按照建模的方式展开网格,例如对于多面体模型,那么这是一种相对简单的技术,可以展开任何网格

从源网格构造一个图形,其中每个面都是图形中的顶点,如果它们在网格中共享一个公共边,则连接两个顶点。这些图中的一个表示不可展开的网格,当且仅当它没有环时,即它是树。

一棵好的树代表从起点到达最远面的最少折叠线,因为每个折叠代表将在完成的模型中累积的误差。 Dijkstra的算法在这里很好,但最小生成树不起作用。每条边均衡加权,所有树都是最小的生成树,甚至可以将网格展开成一个大螺旋。当你将模型粘合在一起时,错误会逐渐累积,直到最后几个面都不适合。

获得树后,首先在原点绘制起始面。然后通过计算新顶点作为两个圆的交点,并使用与原始网格中边的长度相对应的半径来遍历树并添加新面。选项卡的位置对应于原始网格中的边,但不在可展平树中。

用户指定的剪切可以在树步骤之前作为边删除处理。

diagram of unfolding a tetrahedron

这种技术的一些缺点是它会在平面图案中愉快地创建重叠部分,并且它取决于找到一个好的起始面。我试过Floyd-Warshal找到一个最小直径的脸开始,但它的O(n ^ 3)行为造成了过长的咖啡休息时间。重叠的部分可以通过将树的分支标记为“不完整”,跳过它并再次在所有不完整的面上重新运行算法来处理。

答案 2 :(得分:0)

我知道这不是答案,但它是相关的。 Ex-SGI图形人Paul Haeberli的Lamina程序是解决这个问题的方法。