AppleSeeker's Tech Blog
Welcome to AppleSeeker's space

我们的3D世界通常开始时看上去的感觉是非常复杂的,但它们目前都有一个很明显的缺点:它们都被一个空白的背景所提供。

我们为我们的精灵工程创建一个背景图片,通过在渲染精灵前,先简单用绘制一个屏幕大小的图片。这个工作在2D中是很好完成的,但在3D中它就会崩溃:随着相机移动,背景也必须跟着移动,我们不能让这个发生在一个静态的图片中。

这有多种方法,我们可以采取工作的3D背景来实现,这里你所看到的称为天空体。之所以这么称呼,因为它实现效果是一个盒子(一个立方体),放置在相机中。相机在集中在盒子里,并且它的角度变化为看到的围绕的场景,它也环顾四周的天空体。结果是现实的外观背景移动与在场景中的相机和对象一致的。

下图可以看到天空体。

image

虽然这个示例使用了一个云天空,天空体技术可以未所有类型的背景效果来使用,从城市的地平线到星际的星空域。

在任何其它渲染发生并关闭写入深度缓冲前,天空体就绘制了。这将确保立方体总是在背景中呈现,它没有任何效果或妨碍对象绘制在场景的前景中。立方体确实非常小,事实上要小于在主要场景中的对象,但渲染顺序确保对最终用户来说这不是很明显。

为了使天空体看起来更真实,我们必须用一种特殊的方式来移动它;或者我们必须去放置从相机的观点看到的移动。由于相机通过世界向前移动,所有在场景中的对象应该更越近越大,但立方体仍然在一个恒定的距离。这给人的印象是立方体要比实际上的药更大更远。

我们通过经常设置天空体的坐标为立方体实现这个移动行为为了和相机完全匹配。由于相机围绕场景移动,天空体也是如此。

因此,相对于相机,立方体并不是在移动,导致它明显的恒定位置。

然而,仅相机的位置被复制到天空体中:天空体旋转,向上矢量保持不变。结果,当相机环视世界时,它也将环视在天空体中。

posted on 2012-06-25 13:37  AppleSeeker(冯峰)  阅读(688)  评论(0编辑  收藏  举报