纹理球体没有强烈扭曲

时间:2008-10-17 17:52:21

标签: graphics textures raytracing

我在几场比赛中看到了纹理良好的球,行星和其他球形物体,上次在不明飞行物中:后果。如果你只是将纹理溅入纬度/经度作为你和w -coordinates你会得到很多丑陋的纹理扭曲到极点。

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

另外,我没有看到从简单的扁平方形图生成完整球形贴图的方法。是否有一些直观的方法来绘制这样的地图而没有真正的麻烦?

但是,是否有其他算法来渲染没有或具有最小失真的球体?

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

6 个答案:

答案 0 :(得分:5)

hairy ball theorem表示在没有任何扭曲纹理的极点的情况下,无法在球体上定义连续纹理坐标。

答案 1 :(得分:3)

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

如果您正在进行建模,GeoSphere(如前所述)或任何类似的将解决您的问题。

关键是三角形将具有恒定的失真量,这与纬度无关。

另请注意,(封闭的)曲面细分可让您轻松拥有(C)LOD

Texturing是另一个故事,但是一旦你拥有一个好的球体,你就会遇到更少的问题。

希望这能激发你的想象力:)

答案 2 :(得分:2)

你可以使用一个矩形地图,其纵向模糊在极点附近增加(从赤道上的无,到北方60度)。结合mip-maps,这应该消除你提到的一些影响。

答案 3 :(得分:2)

Drew Olbrich想出了tesselating a sphere to produce a nonahedron的漂亮方式。如果你增加顶点的数量,你将得到一个相当不错的球形细分。

答案 4 :(得分:2)

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

答案 5 :(得分:1)

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