生成复杂(非凸)多面体UV贴图

时间:2013-05-11 18:08:23

标签: c# c++ wpf 3d computational-geometry

我需要找到一种方法来解决在不使用设计工具的情况下为非凸多面体生成纹理贴图的问题。具体来说,我将模拟结果数据映射到3D表面。也就是说,在代码中(最好是C#或VB,因为我的目标是WPF 3D)。

一种通用方法使用GradientBrush来映射颜色(如问题here),但是如果多面体中的构面非常窄或者映射的(u,v)坐标非常在相同方面相距甚远,图像会变得嘈杂。

是否有适用于此的C#/ .NET库(商业或其他)?在我的研究中,我遇到了“atlas unwrapping”一词,其描述的声音就像我需要的那样。

在没有预先编写的库的情况下,哪些文章或书籍会包含算法的描述?

(我熟悉3D图形和纹理映射的基础知识,因此不需要为此提供基本教程。如果你想在评论中留下类似的链接,那么就把自己搞得一团糟。 )

3 个答案:

答案 0 :(得分:1)

听起来你不想让阿特拉斯解开。我认为atlas unwrapping就像嵌套的uv映射。但是Uv-unwrapping和Least-Squares Conformal map是一种类似的技术。还存在基于角度的扁平化。你可以在这里找到一些论文:https://gamedev.stackexchange.com/questions/17779/c-c-code-to-generate-texture-coordinates-for-a-curved-surface

答案 1 :(得分:1)

如果网格足够对称

您可以尝试将顶点坐标转换为网格轴周围的圆柱空间,并使用角度作为纹理坐标(红色)。第二个(蓝色/浅绿色)将是零平面表面距离

我会选择与网格中心相交的平面,之后您应该平移/缩放纹理坐标,使它们与渲染引擎规格相匹配。

缺点是圆柱杆周围的变形,优点是凸度无关紧要

cylindric style mesh texturing

答案 2 :(得分:0)

考虑使用CGAL库。它有许多3D数学设施。我在我的主人中使用它,但是我很久没有这样做了。

http://www.cgal.org/