对于需要可视化的球体上的点,我有许多球面经度/纬度坐标。为此,我将这些点转换为笛卡尔坐标,并构建了一个可以用 VTK 渲染的三角形网格。工作至今。
现在我想为球体模型使用纹理。因此,我将球坐标转换为纹理坐标并将它们分配给每个点。这适用于球体的大部分表面三角形,结果看起来可以接受。
但是,对于位于本初子午线另一侧的三角形,即纹理包裹的位置,三角形的纹理不正确:不是重复纹理并“在纹理边界上”映射,而是将整个纹理压缩到单个三角形上。
这是它的外观图片:
zick-zack 线显然是错误的,蓝线应该是可见的。整个纹理映射到三角形上,形成红色和白色条纹。这是有道理的,因为对于所讨论的三角形,纹理坐标跨越整个纹理空间。
为了说明这个问题,它不是特定于球体而是所有封闭对象,我创建了下图:
在上面的矩形中,我们看到一个三角形跨越纹理边界,计算纹理坐标 A、B 和 C。由于纹理可以平铺,这就是我想要渲染三角形的方式。
下面的三角形显示当前如何解释纹理坐标。边缘 A、B 和 C 的坐标相同,但这次,大部分纹理用于三角形,而不是在边界处平铺纹理。
我确信我犯了一个很常见的错误,但我还没有找到任何可以帮助我的东西。对我有什么提示吗?