OpenGL ES 2.0游戏开发(下卷)
上QQ阅读APP看书,第一时间看更新

4.2 阴影的重要性

现实世界中,阴影是随处可见的,其对于帮助判断物体的位置关系以及形状等有很大的帮助。因此,在3D的虚拟世界中阴影也是很重要的,其主要可以起到以下几方面的作用。

● 阴影可以帮助判断物体在三维空间中的位置关系。

● 阴影可以反映接收体的形状。

● 阴影可以表现出一些当前视点看不见的物体的信息。

● 通过阴影可以判断出光源的数目、位置。

从上述列出的几点中可以看出,若3D场景中没有了阴影,真实感和吸引力将大打折扣。下面将稍微详细一点讨论一下上述每一点的重要作用,具体内容如下所列。

1.阴影可以帮助判断物体在三维空间中的位置关系

阴影对于帮助人们从看到的画面中判断物体的位置起到了十分重要的作用,如果没有了阴影,将很难判断物体在空间中的位置,如图4-5所示。

▲图4-5 阴影帮助判断物体的位置

从图4-5中可以看出,最左侧的图中没有阴影,两个小球的位置难于判断,场景的真实感也很差。而右边的两幅图中有了阴影,一眼就可以看出小球的位置情况。

2.阴影可以反映接收体的形状

阴影不但可以帮助判断物体的位置,还可以帮助判断出阴影接收体的形状。这在模拟现实世界的时候也是十分重要的,如图4-6所示。

▲图4-6 阴影反映出阴影接收体的形状

从图4-6中可以看出,左侧的图中没有阴影,很难判断出长方体下面的物体是什么形状的。而右侧的图中有了阴影,很容易判断出长方体的下面是台阶形状的物体。

3.阴影可以表现出一些当前视点看不见的物体的信息

很多警匪、谍战的影视作品中都有这样的情节,主人公通过影子判断出有敌人来袭,一举将敌人击毙。对于虚拟的3D世界而言,阴影也有同样的作用,如图4-7所示。

▲图4-7 通过阴影得到当前视点不能直接看见的物体的信息

从图4-7左右两幅图的对比中可以看出,若没有阴影是不可能判断出场景左侧的墙外站着一个人的。也就是说,有了正确的阴影后,用户可以像在现实世界中一样判断出当前视点不能直接看见的物体的位置、形状等信息。

4.通过阴影可以判断出光源的数目、位置

观看过晚间足球比赛的读者应该都会发现,跑动的足球队员周围有4个影子,因而会很自然地想到足球场的4面应该都有光源。这就是说通过阴影可以判断出光源的数目、位置,具体情况如图4-8所示。

▲图4-8 通过阴影可以判断出光源的数目、位置

从图4-8中可以看出,左侧的图对应的场景中有一个光源,在场景的左上侧。而右侧的图对应的场景中有两个光源,分别位于左上侧以及右上侧。

上述从4个方面介绍了阴影的重要性,了解了这些重要性对于开发出真实的、具有吸引力的场景是非常重要的。下面本章将具体介绍一些用于实现阴影的技术,包括平面阴影、阴影映射、阴影贴图、光线跟踪等几方面。