用于游戏的大型,缓慢旋转的行星图形

Zar*_*nen 5 3d graphics

对于我正在开发的计算机游戏,我想绘制非常大(~500像素)的行星图形慢慢旋转.这些图形意味着令人印象深刻.这样做的最佳方法是什么?

  • 我可以预渲染每个帧,但是在500px和10秒的旋转周期,这是每个行星的一个荒谬的数据量.
  • 我可以使用3D引擎并将行星的纹理映射到接近球体的网格上,但是在500px时,我担心多边形数量必须很大才能使它看起来很好.
  • 我可以编写一种自定义3D引擎,除了有效渲染纹理球体外,通过将每个视图像素的x/y坐标转换为球体纹理的坐标空间 - 但这涉及到,并且无法从中受益图形加速.
  • 还有什么别的我没有想到的?

这是一个动画GIF的例子我的意思.(在100x100像素和60帧时,它已经相当巨大,抱歉.)想象一下,这个更大,更大,旋转更慢,动画更流畅:

替代文字

但如果这是500x500像素和10 x 25 = 250帧,我们将谈论数百MB的数据,所以这种简单的方法不起作用.

tim*_*day 6

Fracplanet可以保存"spheremap"纹理贴图(和凹凸贴图); 看到画廊底部的图像.这些是随后读入应用程序并映射到相对低分辨率的球体几何体,以达到我认为你正在寻找的效果.此方法将使用比预渲染动画方法或使用原始全分辨率多边形模型更少的内存.

是的,这基本上是你的第二个要点,但我不会那么快地排除这种方法,我认为你会发现你可以获得比你预期的更低分辨率的球体; 眼睛注意到纹理中的精细细节远远超过它注意到它所覆盖的几何体的低分辨率.现代镶嵌硬件意味着您无论如何都可以让GPU轻松生成并为球体渲染一些荒谬的多边形.

另一种想法:渲染一个足够大的单个方形四边形多边形以覆盖行星.对于其中的每个像素,执行像素着色器,计算屏幕 - 光线 - 球体交叉点(如果有).从行星纹理中查找颜色(考虑时间和行星旋转).避免了对大量多边形的需求,并为您提供精确的球体.