顶点颜色到 UV 贴图 -> 重新网格 -> 纹理映射

Fin*_*811 2 mesh texture-mapping cgal uv-mapping texture-atlas

我有一个高分辨率的房间多边形网格,我想提取顶点颜色信息并将它们映射为 UV 贴图,这样我就可以生成房间的纹理图集。

之后,我想重新划分模型的网格,以减少多边形的数量,并将高分辨率纹理以较低的分辨率映射到新的网格上。

到目前为止,我已经找到了在 Blender 中执行此操作的链接,但我想以编程方式执行此操作。您知道有什么库/代码可以帮助我完成任务吗?

我想首先我必须对模型进行分段(法线标准可能会有所帮助),然后切割每个网格段,这样我才能对其进行参数化。关于参数化,LSCM似乎为简单模型提供了良好的结果。一旦获得了纹理图集,我认为问题就变成了纹理映射的简单任务。

我的主要问题是分割和网格切割。我正在使用CGAL 库来实现此目的,但该算法太简单,无法切割复杂的形状。关于对房间大小的模型表现良好的更好的分割/切割算法有什么提示吗?

编辑:

该网格由 RGB-D 相机重建的房间组成,有 250 万个顶点和 470 万个面。重点是提取高分辨率纹理,重新网格化模型以减少多边形数量,然后将纹理重新映射到其上。它不是一个封闭的网格,并且由于重建而存在漏洞,所以我猜测我的任务是否根本无法完成。

我附上网格的捕获。

在此输入图像描述

Bru*_*evy 5

我建议使用以下 4 步程序:

  • 第 1 步:重新网格化

对于这种来自计算机视觉的网格,您需要一个对孔、重叠、细三角形等具有鲁棒性的重新网格化器......您可以使用我的 GEOGRAM 软件 [1]。使用以下命令:

vorpalite my_input.obj my_output.obj pre=false post=false pts=30000
Run Code Online (Sandbox Code Playgroud)

其中 30000 是所需点数(根据输入的复杂性进行调整)。注意:我正在停用预处理和后处理(pre=false post=false),这可能会删除此类网格的过多网格部分。

  • 步骤 2:分割重新网格

我最喜欢的方法是“变分形状近似”[3]。我喜欢它,因为它实施起来很简单,并且在大多数情况下都能给出合理的结果。

  • 第 3 步:参数化

除了我的 LSCM 方法之外,您还可以使用我们在[4]之后开发的 ABF++,它在大多数情况下给出更好的结果。您也可以尝试 ARAP [5]。

  • 第四步:烘焙纹理

一旦简化的网格被参数化,您需要将颜色从原始网格复制到新网格上。这意味着确定纹理的每个像素在 3D 中的位置,并找到原始 3D 网格中最近的点。

分割、参数化和烘焙在我的Graphite软件[2]中实现(使用旧版本2.x,较新版本3.x不具备所有纹理功能)。

[1] 地理:http ://alice.loria.fr/software/geogram/doc/html/index.html

[2]石墨:http://alice.loria.fr/software/graphite/doc/html/

[3] 变分形状近似(Cohen-Steiner、Alliez、Desbrun、SIGGRAPH 2004): http://www.geometry.caltech.edu/pubs/CAD04.pdf

[4] ABF++:http://alice.loria.fr/index.php/publications.html ?redirect=1&Paper=ABF_plus_plus@2004

[5] ARAP:cs.harvard.edu/~sjg/papers/arap.pdf