我有一个高分辨率房间的多边形网格,我想提取顶点颜色信息并将它们映射为UV贴图,这样我就可以生成房间的纹理图集。
之后,我想重新对模型进行重新网格化,以减少多边形的数量,并以较低的分辨率将高分辨率纹理映射到新网格上。
到目前为止,我已经在Blender中找到了这个link,但我想以编程方式进行。你知道任何可以帮助我完成任务的库/代码吗?
我想首先我必须对模型进行分段(法线标准可能有用)然后剪切每个网格段,所以只有这样我才能对它进行参数化。关于参数化,LSCM似乎为简单模型提供了良好的结果。一旦可用纹理图集,我认为问题变成了纹理映射的简单任务。
我的主要问题是分割和网格切割。我为此目的使用CGAL library,但算法太简单了,无法剪切复杂的形状。有关更好的分割/切割算法的任何提示,对于房间大小的模型表现良好吗?
修改
网格包含一个用RGB-D相机重建的房间,有250万个顶点和470万个面。重点是提取高分辨率纹理,重新对模型进行重新网格化以减少多边形的数量,然后将纹理重新映射到其上。它不是一个封闭的网格,并且由于重建而存在漏洞,因此我猜测我的任务是否无法完成。
我附上了网格的捕获。
答案 0 :(得分:2)
我建议使用以下4个步骤:
对于这种来自计算机视觉的网格,你需要一个对洞,重叠,瘦三角形等具有鲁棒性的remesher ......你可以使用我的GEOGRAM软件[1]。使用以下命令:
vorpalite my_input.obj my_output.obj pre=false post=false pts=30000
其中30000是所需点数(使其适应输入的复杂程度)。注意:我正在停用前处理和后处理(pre = false post = false),这可能会为这种类型的网格移除过多的网格部分。
我最喜欢的方法是"变分形状近似" [3]。我喜欢它,因为它很容易实现,并且在大多数情况下可以给出合理的结果。
除了我的LSCM方法,你可以使用我们在[4]之后开发的ABF ++,在大多数情况下可以得到更好的结果。您也可以尝试ARAP [5]。
简化网格参数化后,需要将原始网格中的颜色复制到新网格上。这意味着确定纹理的每个像素在3D中的位置,并找到原始3D网格中的最近点。
分割,参数化和烘焙在我的Graphite软件[2]中实现(使用旧版本2.x,较新版本3.x没有所有纹理功能)。
[1] geogram:http://alice.loria.fr/software/geogram/doc/html/index.html
[2] graphite: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
答案 1 :(得分:0)
为了减少多边形的数量,我更喜欢使用网格抽取。我推荐的工作流程:(输入:具有顶点颜色的高分辨率网格(mesh0))。
我的网站上有一个有关此工作流程的示例,示例图像:Decimation of texture mesh。 或者,您可以参考my site了解详情。