我有一些球面经纬度坐标需要可视化。为此,我将这些点转换为笛卡尔坐标,并构建了一个三角形网格,可以使用VTK进行渲染。目前为止都很好。
现在我想为球体模型使用纹理。因此,我将球面坐标转换为纹理坐标,并将其分配给每个点。这适用于大多数球体表面三角形,结果看起来不错。
但是,在本初子午线对面的三角形上,纹理被错误地映射:整个纹理被挤压到单个三角形上,而不是重复纹理并映射“超过纹理边界”。下图显示了它的样子:
图片中的锯齿线显然是错误的,蓝色线应该是可见的。整个纹理被映射到三角形上,导致出现红白条纹。这是有道理的,因为对于问题三角形,纹理坐标跨越整个纹理空间。
为了说明这个问题(这不仅适用于球体,而是所有闭合对象),我创建了以下图像:
在上方矩形中,我们看到一个跨越纹理边界的三角形,具有计算的纹理坐标A、B和C。由于纹理可以平铺,这就是我想要的三角形呈现方式。
下面的三角形显示了当前如何解释纹理坐标。边A、B和C的坐标相同,但是这次,大多数纹理用于三角形,而不是在边界处平铺纹理。
我相信我犯了一个很常见的错误,但我还没有找到任何帮助。你有什么提示吗?
现在我想为球体模型使用纹理。因此,我将球面坐标转换为纹理坐标,并将其分配给每个点。这适用于大多数球体表面三角形,结果看起来不错。
但是,在本初子午线对面的三角形上,纹理被错误地映射:整个纹理被挤压到单个三角形上,而不是重复纹理并映射“超过纹理边界”。下图显示了它的样子:
图片中的锯齿线显然是错误的,蓝色线应该是可见的。整个纹理被映射到三角形上,导致出现红白条纹。这是有道理的,因为对于问题三角形,纹理坐标跨越整个纹理空间。
为了说明这个问题(这不仅适用于球体,而是所有闭合对象),我创建了以下图像:
在上方矩形中,我们看到一个跨越纹理边界的三角形,具有计算的纹理坐标A、B和C。由于纹理可以平铺,这就是我想要的三角形呈现方式。
下面的三角形显示了当前如何解释纹理坐标。边A、B和C的坐标相同,但是这次,大多数纹理用于三角形,而不是在边界处平铺纹理。
我相信我犯了一个很常见的错误,但我还没有找到任何帮助。你有什么提示吗?