我正在使用 OpenMesh 重新划分/管理一些网格对象。使用 OpenFlipper 的 subdivide/decimate/smooth 和其他工具,我可以更改网格拓扑。
然而,这会导致顶点颜色失去其意义,因为新顶点都将具有黑色,并且当网格拓扑发生变化时没有插值,从而导致视觉伪影。
有没有办法告诉 OpenMesh 将顶点颜色重新投影回旧网格以插入顶点颜色?如果没有,手动执行此操作的好方法是什么?顶点反投影是否有最先进的技术?
我正在使用 OpenMesh 重新划分/管理一些网格对象。使用 OpenFlipper 的 subdivide/decimate/smooth 和其他工具,我可以更改网格拓扑。
然而,这会导致顶点颜色失去其意义,因为新顶点都将具有黑色,并且当网格拓扑发生变化时没有插值,从而导致视觉伪影。
有没有办法告诉 OpenMesh 将顶点颜色重新投影回旧网格以插入顶点颜色?如果没有,手动执行此操作的好方法是什么?顶点反投影是否有最先进的技术?
在使用requestTriangleBsp()的OpenFlipper 中,您可以为原始网格对象请求 BSP 树。(只要您想使用该 BSP 树,您就必须保留原始网格的副本。)每当您想将一个点投影到原始网格上时,您都可以使用BSP 树上的最近()成员函数为了获得最接近提供点的面。之后,只需将您的点投影到该面上,计算重心坐标并插入顶点颜色即可。
我认为您想获取输出网格的以下信息:VertexInfo = {origin face id, barycentric coordinate}。您可以将顶点投影到原始网格以计算 VertexInfo。但是,不建议根据几何信息计算拓扑信息。只是认为您有一个几乎平坦的盒子网格,我认为您无法通过重新投影获得正确的 VertexInfo。获取 VertexInfo 的最佳方法是通过拓扑信息在每个具体命令中计算它,就像你提到的细分/抽取等。