2008-10-17 66 views
6

我已经在几场比赛中看到质感良好的球,行星和其他球形物体,上次在不明飞行物:后果。如果你只是将纹理泼到纬度/经度上,就像u和w坐标一样,你会得到很多难看的纹理变形。没有强烈变形的纹理化球体

我可以认为自己是一种实现具有最小失真的球形贴图的方法。通过映射三角形而不是正方形。但我不知道任何算法。如何产生这些球体的顶点和纹理坐标?

此外,我没有看到从一个简单的平方形地图生成完整球面地图的方法。有没有一些直观的方式绘制这样的地图没有真正的麻烦?

尽管如此,还有其他算法渲染一个没有或者失真最小的球体吗?

光线跟踪和光栅化算法都很有趣。

+0

参见[使用C领域的三角形镶嵌采用细分++](http://stackoverflow.com/a/29139125/2521214) – Spektre 2015-10-13 11:36:05

回答

2

您可以使用纵向模糊的矩形地图,该地图在极点附近增加(从赤道上没有地方向北60度)。与mip-maps一起,这应该消除你提到的一些效果。

2

或者您可以使用立方体贴图。这通常是进行环境映射的首选方式,这基本上就是您所描述的。

1

不要按经度和纬度分割球体。相反,在3Ds Max中使用所谓的GeoSphere。 (实际上是一个多面体,the geodesic sphere。)

3

纬度/经度“球体”按定义扭曲。如果您正在进行编程,可以根据需要从[四面体](http://en.wikipedia.org/wiki/Tetrahedron四面体)和subdivide开始,将每个三角形细分为4个三角形,并在距中心给定半径处重新定位中点。

如果您正在进行建模,则GeoSphere(如前所述)或任何类似工具都可以解决您的问题。

重点是三角形将有一个恒定的失真量,这与纬度无关。

另请注意,(封闭)曲面细分将使您能够轻松地获得(C)LOD

Texturing是另一回事,但一旦你有一个良好的领域,你有更少的问题。

希望这火花你的想象力:)