【摘要】:图6.6Maya灯光属性中有控制阴影亮度和颜色的属性,通过调节Shadow Color设置,一部分光可以直接透射到阴影区。图6.11图6.12如果在灯光阴影属性中勾选Use Mid Dist,阴影计算会计算两张图,一张是一般意义的Dmap,另一张则是计算对某盏灯“第二层可见”的物体表面的距离值与第一层值的平均值Dmap。图6.13图6.14Fog Shadow Intensity:在打开灯光雾的时候,场景中物体的阴影颜色会呈现不规则显示,会让物体的重量感打折扣。通过Fog Shadow Intensity可调节灯光雾中阴影的强度。
1)阴影颜色
Shadow Color:通过调节此参数控制灯光投影的颜色,和大部分参数一样,在投影颜色参数栏后面也有一个棋盘格的贴图按钮,如图6.6所示,可以通过贴图来让阴影产生特殊效果。

图6.6
Maya灯光属性中有控制阴影亮度和颜色的属性,通过调节Shadow Color设置,一部分光可以直接透射到阴影区。用这种方法,阴影颜色参数只会对投射阴影有效,对物体未被照亮的一侧无效,这就会产生不太真实的效果,所以使用时一定要注意整体效果的把握(图6.7)。

图6.7
设置阴影颜色、调节阴影亮度还会造成另一个问题,即阴影不完全纯黑的时候,投射阴影的光的一部分会透过任何表面,包括墙面、桌面,这种光线的穿透,会产生不正确的阴影效果,如图6.8所示。

图6.8
设置阴影亮度和色调的一个更现实的方法是用辅助光。辅助光可以合理地同时加亮投射阴影和物体未照亮一侧,色调平衡,并使阴影富于变化。
2)深度贴图阴影
深度贴图阴影(Depth Map Shadows)和光影跟踪阴影(Ray Trace Shadows)是两种不同的计算阴影的方式,如果要给灯光加上投射阴影的功能,可以勾选其中一项,两者不能同时选择(图6.9)。

图6.9
Depth Map是对某盏灯可见(照明)的各物体表面到该灯的距离的数据记录。它相当于在某盏灯的位置摆放一个与灯光主方向一致的相机,通过此相机进行渲染而得到画面,画面上各点的数值即为对应物体表面某点到相机的距离。判断空间某一点是否在某盏灯的阴影中(或者说未受该灯照明),可用它到该灯的距离,与同一直线上对应的Depth Map值做比较。若前者大于后者,则该点处于阴影中。
Resolution:调节灯光阴影的渲染解析度。当Dmap Resolution的值设得很低的时候,阴影的边缘会呈现锯齿,而当此项数值设得过高的时候,则会增加渲染的时间(图6.10)。值得注意的是,IPR窗口的即时渲染功能不支持Dmap Resolution值的更新。很多时候我们需要柔和的阴影来体现灯光的柔和,这时可以适当地降低Dmap Resolution的值,这样既达到了我们需要的效果,又可以降低渲染的速度。注意,Dmap Resolution的值最好是2的倍数,为避免阴影周围出现锯齿,Dmap Resolution的值不应该调得过低。

图6.10
Use Mid Dist: 利用中距(Mid Distance)纠正自投阴影。有时被照亮物体的表面有不规则的污点和条纹,这时将灯光的Use Mid Dist Dmap命令打开,将有效去除这种不正常的阴影,在默认状态下,此参数是打开的。自投阴影是指一个物体某些区域处于同一物体另一些区域产生的阴影区内。自投阴影产生的主要原因是同一物体的表面各处间的距离很近,某些颗粒或闪烁阴影等问题较为突出。阴影闪动问题在制作中经常遇到,理解闪动的原因可以帮忙解决问题,所以理论知识学习希望大家尽力去理解。
利用Depth Map计算阴影时,由于Depth Map采样的精度有限,所以在许多情况下会产生不应有的自投阴影。如图6.11所示,红点代表Depth Map记录距离信息的采样点,物体表面上各红点对应的区域内,红点右边的部分离灯光近一点,故被正常照亮;而左边的部分到灯光的距离较红点远,故会被判别为“在阴影区中”,从而产生不该存在的条纹状的自投阴影,如图6.12所示。

图6.11

图6.12
如果在灯光阴影属性中勾选Use Mid Dist,阴影计算会计算两张图,一张是一般意义的Dmap,另一张则是计算对某盏灯“第二层可见”的物体表面的距离值与第一层值的平均值Dmap。这样多次采样的方法可以解决部分自投影的错误。
Use Auto Focus:深度贴图阴影以灯光CAM视角进行计算产生一张阴影贴图,贴图的尺寸由Dmap Resolution决定,贴图采样范围由Focus决定。默认属性勾选状态,由灯光CAM自动对焦决定采样范围。有时候场景中物体投射的阴影边缘会呈现出锯齿,一种解决方案是将阴影贴图采样范围变为非自动设定对焦(手工设定对焦参数),提高深度阴影贴图的精确度,解决阴影锯齿问题。
Focus:取消深度贴图阴影自动对焦模式,手工设定对焦参数。如果是聚光灯,参考聚光灯Cone Angle参数;如果是平行灯,参考灯光CAM属性中的Orthographic Width参数。
Dmap Filter Size:可以通过调节此参数来调节阴影边缘的柔化程度,此项参数设置得越大,阴影的边缘越柔和,渲染计算需消耗的时间也越多,故应谨慎地限制该值大小(图6.13)。
Bias:深度贴图偏心率,调节它可以使阴影和物体表面分离,从而利用Dmap Bias(偏移)纠正自投阴影。为克服自投阴影的问题,将Depth Map中各采样的距离值加上一个小数值(等价于将要计算的表面点到某灯的距离减去一个小数值)。注意Dmap Bias不可太大,否则离产生阴影处较近的区域会出现明显的丢失阴影的问题(图6.14)。

图6.13

图6.14
Fog Shadow Intensity:在打开灯光雾的时候,场景中物体的阴影颜色会呈现不规则显示(颜色会变浅),会让物体的重量感打折扣。通过Fog Shadow Intensity可调节灯光雾中阴影的强度。(www.chuimin.cn)
Fog Shadow Samples:雾阴影取样参数,默认值为20。当加了灯光雾后,可通过调节此参数控制物体阴影的颗粒状。
Disk Based Dmaps:当多次渲染某一帧,而场景中的物体和灯光位置都没有变化,只是对灯光或物体的属性进行了调节时,深度贴图阴影并没有改变,所以可以重复使用,这时就可以从Disk Based Dmaps的下拉菜单中选择Reuse Existing Dmap(重新使用现有的深度贴图阴影)。当不是渲染单帧而是渲染动画的时候,场景中物体和灯光的位置没有变化,深度贴图也没有改变,仍然可以重新启用,这时可以从Disk Based Dmaps的下拉菜单中选择Reuse Existing Dmap,并且关闭Dmap Frame Ext开关。当渲染的动画中,物体和灯光都发生了变化,但是要将此动画渲染若干遍时,可以把深度贴图存在硬盘里,待多次渲染动画的时候重复使用,此时可以从Disk Based Dmaps的下拉菜单中选择Reuse Existing Dmap,并且打开Dmap Frame Ext开关。如果在以前的硬盘中有保存的深度贴图,并且在渲染一帧或动画之前移动了灯光或物体,这时深度贴图发生了变化,我们不能再使用以前的深度贴图,此时可以在Disk Based Dmaps的下拉菜单中选择Overwrite Existing Dmap,这样每一次渲染的深度贴图都会覆盖原来在硬盘中保存的深度贴图。
如果要渲染一帧或一个动画,但是硬盘里没有以前保存的深度贴图,或者即使有也不想用,那么这时可以从Disk Based Dmaps下拉菜单中选择Off。在默认状态下,Disk Based Dmaps指向Off,这时Maya没有设置深度贴图,也不会将深度贴图保存在硬盘里。
Use Only Single Dmap:为了节约渲染速度,有时候一个点光源在某个具体的轴上不需要产生深度贴图,此时可关闭Use Only Single Dmap,同时关闭对应轴的Use Dmap属性(例如“Use X+ Dmap”)。
常见的Dmap阴影问题及其处理:
①锯齿状的阴影边缘:增加Dmap Filter Size值,或增加Dmap Resolution。
②运动中的灯产生闪烁阴影:增加Dmap Resolution。
③在体积雾中薄面体产生颗粒或闪烁阴影:提升Volume Shadow Sample。
④不在阴影中的受光表面出现黑点或条纹:稍微增加Dmap Bias。
⑤阴影似乎跟产生阴影的物体断离:稍微减小Dmap Bias。
⑥薄面体产生的阴影中有白点或带状:增加阴影投射面的厚度。
3)光线追踪阴影
光线追踪阴影是在光线追踪过程中产生的,在大部分情况下,光线追踪阴影能够提供非常好的效果,然而,用户必须针对整个场景计算光线跟踪阴影,这样将非常耗费时间。有些阴影效果(如透明物体所产生的阴影)是深度贴图阴影模拟不出来的,这时建议使用光线跟踪阴影。
可以使用光线追踪的情况如下:
①半透明物体的透明通道纹理产生的阴影细节。
②受物体形状变化的透明度影响的阴影均匀性。
③受半透明物体的彩色影响的阴影。
④Ambient灯不能产生Dmap阴影。
⑤场景中使用Dmap阴影计算得不到准确阴影值。
灯光阴影属性(图6.15)中,与RayTrace阴影相关的属性包括:

图6.15
Light Radius:柔化阴影的边缘,使阴影的边缘不那么硬,但是会使阴影边缘呈现粗糙的颗粒状。
Shadow Rays:使用Light Radius后,阴影边缘会呈现颗粒状,这时加大Shadow Rays的值,可以将阴影边缘的颗粒模糊化,使物体阴影看上去更真实。
Ray Depth Limit:调节此参数可改变灯光光线被反射或折射的最大次数。此参数默认值是1。为提高渲染光线跟踪阴影的速度,当Light Radius的值非零时,尽量将Shadow Rays和Ray Depth Limit的值设得小一些,Ray Depth Limit的值一般情况下设为1。
光线追踪阴影,除了在灯光属性中设定外,还需在Render Setting中打开Raytracing的Shadows设定。半透明阴影计算的层次以灯光属性Ray Depth Limit和Raytracing的Shadows两个参数中较小值为上限(图6.16)。

图6.16
4)其他阴影解决方案
①增加负亮度灯光来做假阴影;
②用3D模型替代阴影;
③制作灯光中注意控制灯光范围,减少所需阴影;
④用灯光制作阴影过滤过的灯光效果。
相关推荐