有没有办法使用 OpenMesh reproject/interpolate 顶点颜色?

Is there a way to reproject/interpolate vertex colors with OpenMesh?

我正在使用 OpenMesh remesh/manage 一些网格对象。 使用 subdivide/decimate/smooth 和 OpenFlipper 的其他工具,我可以更改网格拓扑。

然而,这会导致顶点颜色失去意义,因为新顶点将全部为黑色,并且当网格拓扑发生变化时没有插值,从而导致视觉伪影。

有没有办法告诉 OpenMesh 将顶点颜色重新投影回旧网格以插值顶点颜色? 如果没有,手动执行此操作的好方法是什么?顶点反投影有什么最先进的技术吗?

在 OpenFlipper 中使用 BSP 树上的 requestTriangleBsp() you can request a BSP tree for your original mesh object. (You will have to keep a copy of your original mesh as long as you want to use that BSP tree.) Whenever you want to project a point onto your original mesh, you can then use the nearest() 成员函数以获得最接近提供点的面。之后,只需将您的点投影到该面上,计算重心坐标并插值顶点颜色即可。

我想你想获得输出网格的信息:VertexInfo = {origin face id, barycentric coordinate}。您可以将顶点投影到原始网格以计算 VertexInfo。但是,不建议从几何信息计算拓扑信息。只是认为您有一个几乎平坦的盒子网格,我认为您无法通过重新投影获得正确的 VertexInfo。获取 VertexInfo 的最佳方法是通过拓扑信息在每个具体命令中计算它,就像您提到的 subdivide/decimate 等