Answers:
好吧,我想我现在有代表。以前嵌入了图像的帖子的内容。这是您正在寻找的旋转行星效应吗?它只是通过星场中的半透明“孔”查看的滚动2D图像。
我整理了一下动画效果的快速动画gif。显然,它的动画效果可以更加平滑-我每帧将行星表面移动了4个像素。还没有设置包装图像,因此循环结束时会出现故障。
星球http://www.perludus.com/orbit.gif
我确实在Photoshop中完成了所有操作,但是该概念应该在2D渲染环境中起作用,使您可以执行Alpha透明胶片等。以下是显示该过程的一系列屏幕截图...
要为行星表面设置动画,只需移动下面的行星表面纹理即可。您必须聪明地在纹理到达边缘时移动纹理,以获得无缝,无尽的旋转。
希望这会有所帮助,并且是您想要的效果!
PS看到了有关艺术家的文章,作者以一种非常新颖的方式来制作行星纹理-让我想到了这个答案:) http://www.behance.net/gallery/Pan-Planets/9557465
我认为本文介绍了该技术。(它是俄语的,所以我发布了翻译链接。)
我已经在这里实现了。http://github.com/meric/renderplanet
基本上,您需要拍摄对正交投影进行编码的图像(http://mathworld.wolfram.com/OrthographicProjection.html),然后使用着色器将行星和云的纹理包裹起来。根据dt偏移行星纹理以使其旋转。将准备好的半透明图像用于大气环和阴影,或者通过绘制半透明弧并针对阴影使用着色器进行一些实验来生成它。
这是图片:
对于圆内的每个像素,Red + Green/255
要查找的行星/云纹理的归一化X坐标和Blue + Alpha/255
归一化Y坐标。
结果如下:
行星和云的纹理应为等矩形投影。
您对所使用的上下文的限制尚不明确。3D渲染中的绝大多数纹理都是2D。因此,如果您只是显示一个3D球体,并在其周围映射了2D表面纹理,那么这实际上不是问题。如果您无法使用3D渲染,则必须确切说明可以使用的内容。
基本问题是必须在球体表面上渲染平坦的纹理,而3D渲染可免费获得该纹理。随着行星旋转,行星表面的可见部分以非线性方式进行动画处理(纹理的赤道部分移动的速度快于极点)。因此,我认为您要么在将映像映射到光盘上时就必须自己使映像变形,要么按照VirtualVoid的建议进行操作,并且只是拥有多个随时间变化的映像。
实施起来很可怕,但是如果您能够逐像素渲染纹理,则基本上可以对球体的每一行进行栅格化计算。假设您的表面贴图纹理被展平,因此在赤道处有512px的图像。我们还假设您的可见光盘宽度为256像素。现在,将渲染光盘的每一行视为表面纹理上的滑动窗口。在赤道上,窗口是纹理宽度的50%,您只需将256px的每个像素复制到光盘的等效像素上即可。光盘上的下一行将略小于256 px,但是由于曲面图失真,因此仍然有256 px的输入曲面图数据。因此,您然后对输入的表面贴图数据进行二次采样,并渲染出结果像素。为了简化数学,让我们 s假设输出光盘中赤道与极点之间的距离的1/3为128px宽。因此,这128像素中的每一个将是2个相邻像素的平均值。当您走到极点时,您将平均所有256像素平均为几个输出像素。
您也可以采用另一种方法,使源纹理中的线具有不同的长度。因此,尽管包含源数据的行中有512px,但向下的1/3行中只有256px,而底部的行只有几个像素。但是每行在等效y坐标处是光盘宽度的两倍。但是,那种纹理绝对是非常可怕的。并且可能会遭受可怕的别名问题。
在这两种情况下,您的动画都只是简单地增加输入纹理中的起始像素x,然后环绕到输入纹理线的起点。
我现在写的越多,我就越相信这是一个可怕的主意,只有在您确实没有其他选择的情况下,您才会实施。而且您将不得不处于非常不寻常的情况下,别无选择。
我不相信我曾听说过任何解决此(相当模糊)问题的方法,可以将其作为一种特定的命名技术。
精灵。听起来您正在描述的是3D游戏引擎中的2D精灵,可以廉价地渲染(Nintendo64像很多早期的3d引擎一样,在整个地方都可以做到这一点)。
如果要渲染行星旋转,则只需要显示一个2D精灵即可,该2D精灵是基于预先渲染的行星旋转的精灵表进行动画处理的。就像动画.GIF一样。问题是它会被预先渲染,因此,正如您所说,这仅在不允许用户操纵视角的情况下才有效。