生活所有的多样性、魅力和美丽都是由光线和阴影构成的 ---托尔斯泰
阴影对于创建真实图像和为用户提供有关对象放置的视觉提示是非常重要的。本章重点介绍计算阴影,并描述了最重要和最流行的如何做的实时算法。我们在本章中没有花时间讨论所有选项和方法,因为有两本全面的书深入研究了阴影领域【412,1902】。相反,我们将重点放在调查自发表以来出现的文章和言论上,并偏向于经过实战检验的文章和技术。
图7.2 硬阴影和软阴影的混合。板条箱的阴影很尖锐,就像遮光罩一样接近接收器。人的阴影在连接点处尖锐,随着到遮罩器距离的增加而变软。远处的树枝投下柔和的阴影【1711】(“育碧提供”)
本章中使用的术语如图7.1所示,其中遮光罩是将阴影投射到接收器上的对象。准时光源,即没有区域的光源,只生成完全阴影区域,有时称为硬阴影。如果使用区域或体积光源,然后生成软阴影。每个阴影可以有一个完全阴影区域(称为本影)和一个部分阴影区域区域,称为半影。软阴影通过其模糊阴影边缘进行识别。但是,需要注意的是,它们通常无法通过低通滤波器模糊硬阴影的边缘而正确渲染。如图7.2所示,越靠近阴影投射几何体接收器,正确的软阴影越清晰。软阴影的本影区域不等同于由准点光源产生的硬阴影。相反,软阴影随着光源变大而减小,甚至可能消失,
给定一个足够大的光源和一个离遮罩器足够远的接收器。软的阴影通常生成得更好,因为半影边缘会让观察者知道阴影是一个更深的阴影。硬边阴影通常看起来不太真实,有时会被误解为实际的几何特征,例如表面的折痕。但是,硬阴影渲染速度比软阴影快。
比有一个半阴影更重要的是有所有阴影。没有一些阴影作为视觉线索,场景往往难以令人信服,也更难理解,感知正如Wanger[1846]所示,通常最好有一个不精确的阴影比完全没有一个阴影要好,因为眼睛对阴影的形状相当宽容。例如,在地板上应用模糊的黑色圆圈作为纹理可以将角色定位到地板上。
在以下部分中,我们将超越这些简单的阴影建模并且提供从遮挡器实时自动计算阴影的方法,在场景中。第一部分处理投射在平面上的阴影的特殊情况,第二部分介绍了更通用的阴影算法,即投射阴影,在任意曲面上。将覆盖硬阴影和软阴影。总之,提出了一些适用于各种阴影算法的优化技术。
(由于阴影用得比较少,暂时先不翻译,后面再来)