3

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

一种通用方法使用 aGradientBrush仅映射颜色(如这里的问题),但如果多面体中的面非常窄或映射的 (u,v) 坐标在同一面上相距很远,则图像会变得嘈杂。

是否有任何适用于此的 C#/.NET 库(商业或其他)?在我的研究中,我遇到了“atlas unwrapping”这个术语,它的描述听起来像是我需要的。

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

(我熟悉 3D 图形和纹理映射的基础知识,因此无需为此提供基本教程。如果您想在评论中留下类似内容的链接,请自行淘汰。)

4

3 回答 3

1

如果网格足够对称

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

在此之后,我将选择平面相交网格中心,您应该翻译/缩放纹理坐标,使其与您的渲染引擎规格相匹配。

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

圆柱形网格纹理

于 2013-09-25T12:29:44.600 回答
1

在我看来,您不希望 Atlas 展开。我认为地图集展开类似于嵌套的 uv 映射。但是 Uv-unwrapping 和 Least-Squares Conformal map 是一种类似的技术。还有基于角度的展平。你可以在这里找到一些论文:https ://gamedev.stackexchange.com/questions/17779/cc-code-to-generate-texture-coordinates-for-a-curved-surface 。

于 2013-09-22T13:42:40.760 回答
0

考虑使用 CGAL 库。它有许多用于 3D 数学的设施。我在我的大师中使用它,但我已经很长时间没有这样做了。

http://www.cgal.org/

于 2013-09-21T20:35:01.553 回答