论文部分内容阅读
Maya的灯光类型一共有六种,分别是环境光源,平行光光源,泛光灯光源,聚光灯光源,面光源,体积光源。用这六种基本光源,可以模拟各种各样的灯光。
有灯光就会产生阴影,在3D软件中的阴影是可以控制的,可以选择哪些灯光打开或者关闭阴影,也可以选择阴影产生的两种技术:Depth Map Shadow(深度贴图)或者Raytrace Shadow(光线追踪),还可以设置阴影的颜色。阴影的颜色需要注意的是现实生活中的阴影并不是纯黑色的,所以在设置阴影颜色的时候需要把亮度稍微提亮一些。使用阴影贴图的方式计算阴影,好处是速度比较快,但是这种方式只能得到一个以贴图方式计算出来的假阴影效果。参数如图1所示
其中Resolution是解析度,用于控制阴影贴图的精度,一般来说,设置的大小与产生阴影面积大小成正比,但是值越大计算时间也越长。Filter Size滤镜大小,值越大阴影就越柔和。Bias偏移值,是解决阴影出现栅格时用到的参数。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-1-l.jpg)
图2中显示出Resolution与Filter Size设置值的区别,可以看到,Resolution值越小,阴影的颗粒现象也越明显,而Filter Size值越小,阴影的边缘越锐利,反之则越柔和。下面再看阴影的另一种计算方式——Raytrace(光线追踪)。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-2-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-3-l.jpg)
图3是灯光的Raytrace Shadow面板,一共有Light Radius(灯光半径),Shadow Rays(阴影射线数),Ray Depth Limit(射线深度限度)三个参数,灯光半径可以改变阴影边缘的模糊程度,阴影射线数实际上是通过控制光线计算的精度来调整阴影边缘颗粒度。射线深度限制实际上是一条光线可以被反射或者折射的最大次数。当这个数值不能达到物理反射应有的折射次数时,很有可能导致光线无法穿过折射物体,比如玻璃,水,等等。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-4-l.jpg)
图4是一个透明物体分别使用两种阴影计算方式来得到阴影,可以看到在计算透明物体的阴影时,贴图方式的阴影已经出现错误,而光线追踪方式是可以得到真实的透明阴影的。
在现实生活中,光线直接射入观察者的眼睛或者镜头时,光源可能会有一些“闪光”出现,在某些情况下灯光会从镜头的复合透镜中发生折射和偏移,形成镜头光斑,在Maya的灯光模块中也提供了这样的光学特效的节点OpitF/X。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-5-l.jpg)
图5是在灯光属性面板下的Light Effects子面板,可以看到Light Glow的接口,点击右边的连接按钮软件会自动创建OpitF/X节点并与灯光连接,在节点面板中有多种辉光以及镜头光斑可以选择,渲染效果如图6所示。
在现实世界中,光线是严格按照直线传播的,而为了达到所需要的效果,往往希望某一盏或者一组灯光,只照亮场景中的某些物体,在Maya中可以通过灯光连接来做到。Maya中的所有灯光都有一个Illuminates by Default的选项,如果不勾选此项,则灯光不照亮任何物体,除非手工将它连接到某个物体上。连接灯光有以物体为中心和以灯光为中心两个选项,可以在Light/Shading菜单下的Light Linking Editor中找到。如图7所示,分别是以灯光和物体为中心的连接面板,分别点中两边的灯光和物体,可以取消或者建立灯光与物体之间的连接。
在现实世界中,光线遇到物体后有的并不会完全被吸收,总会有一些光线或多或少地反射出来,这些被反射的光线又可以照亮其他物体,同时这些反射的光线又会携带上反射体的颜色,从而影响它照亮其他物体的固有色。使用Maya的默认渲染器是渲染的直接照明,是无法获得上述效果的。所以用直接照明模拟间接照明需要布置很多灯光并掌握一定的灯光技巧,但是Maya集成了MentalRay渲染器的间接照明技术可以很好的解决这些问题,比如Global Illumination(全局照明)、Caustic(焦散)、Final Gathering(最终聚集)、Image based Lighting(基于图像的照明)和Physical Sun and Sky(物理天光)等方法。
全局照明是使用从光源发射出携带能量的光子进入场景后与模型碰撞,并且根据碰撞表面的材质属性而变化(折射、反射或吸收),每个光子都携带一定的能量,在碰撞过程中能量也随之消耗。每个光子在能量耗尽而消失前的碰撞过程会被记录跟踪并用于计算最终的场景渲染。光子的相关信息最后存储为光子图(Photon Map)。在Maya中要产生Global Illumination的效果需要打开灯光的发射光子选项以及选择MentalRay渲染器并打开全局照明选项。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-6-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-7-l.jpg)
Photon Color是光子颜色,场景中色彩主要取决于光子的颜色,而灯光颜色只能改变场景中被主动照明的物体以及阴影的颜色。Photon Intensity光子强度,该值对渲染速度影响并不是很大,Exponent衰减指数,大多数情况取默认值2效果就很好。Global Illum Photon光子数量,该值对渲染时间的影响很大,需要逐渐调节,光子数量过小会产生光斑。当增大光子能量的同时,也需要对光子数量进行调节,避免光斑的出现。渲染面板中Accuracy(精确度)设置可以使图像的画面更细腻,但是也同样会增加渲染图像的时间,调整时也需要逐渐增加。如图9所示,左上角是使用Maya默认渲染器得到的图像,可以看到在光线照不到的地方都是一片死黑,右上角打开全局照明,使用默认设置得到的图像,可以看到明显有太多的光斑,这是由于光子数量不够造成的,左下角是设置好光子数量以及光子能量得到的图片,可以看到整个场景都被照亮了。右下角是光子颜色设置为蓝色,灯光本身颜色设置为黄色,整个场景呈现的是光子颜色,而在物体能够被灯光直接照亮的地方,颜色和灯光颜色相近。需要注意的是光子数量与场景大小,材质等都有关系,需要慢慢设置,当设置好光子数量及能量之后,如果灯光的位置方向以及光子颜色都不再改变,可以在渲染设置中找到Photon Map选项卡,取消勾选Rebuild Photon Map,勾选Enable Map Visuallizer,这样在每次渲染过程中不会重新计算光子图,而是读取之前保存的光子图,可以有效节省渲染时间。 Final Gathering(最终聚集)同样也是用来模拟间接照明的,但它的效果并不是物理精确的,所以渲染速度比Global Illumination来说要快一些,Final Gathering不需要灯光发射光子就可以计算出间接照明。渲染器会沿着一条从摄像机发出的射线(这条射线实际并不存在),当这条射线与模型产生交点时,在该点发射一些以该点的表面法线为轴心、半球状分布的采样线,这些采样线传输并返回给摄像机的过程会存储在一张Final Gathering Map中,和Photon Map类似,这两种图都可以在渲染设置中使用Map Visualizer功能。要实现Final Gathering效果,需要在全局渲染设置中开启即可。如图10所示,在渲染设置中选择MentalRay渲染器,然后在Features面板勾选Final Gathering选项,就可以使用最终聚集来模拟间接照明了。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-8-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-9-l.jpg)
现在只使用Final Gathering为整个场景提供照明的方式变得越来越普遍,因为其效果柔和、自然,渲染时间相对于光子也比较短,只用最终聚集计算场景间接的主要方式有两种:一种是给场景中某个物体A(通常是光板)的表面材质的非照明颜色指定一个亮度较高的数值或者纹理,然后场景中的其他物体通过Final Gathering采集光板表面上的照明能量。如图11中,左上角是场景中模型以及摄像机的摆放,在小球的上方摆放了一张白色光板,在使用Maya默认渲染器得到的是右上角的图片,打开MentalRay的最终聚集之后,可以看到小球上反射的光板形状,将光板切割之后,小球上的光板形状也随之发生改变,很像摆放在一个有窗户的房间里。
另外一种是为整个场景指定一个环境SHADER,然后场景中的所有物体通过fg采集环境中的照明能量,进而被照亮并显示在渲染图像中。如图12所示,首先在渲染设置的iNDIRECT lIGHTING面板中创建iMAGE bASED lIGHTING,然后选中这个节点,指定一张hdri图片(hdri是一种亮度范围非常广的图像,比其他格式的图像有更大的亮度的数据存储。而且记录亮度的方式与传统的图片格式不同,不是用非线性的方式将亮度信息压缩到8或者16BIT的颜色空间内,而是用直接对应的方式记录亮度信息),可以看到场景中并没有设置任何灯光,同时将默认灯光关闭,渲染得出的效果如右下角所示,通过fg可以采样到环境图片上的亮度信息从而将整个场景照亮。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-10-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-11-l.jpg)
Maya还有一种间接照明的方式是Caustic,即焦散。焦散与全局照明类似,也是借助光子实现的:光子从光源发射出来后,必须先与(一个或者多个)Specular表面发生相互作用(反射或者折射),然后在投射到Diffuse表面上,这样就形成了焦散。比如放大镜会把平行光聚焦在某一点上。要实现焦散首先要在渲染设置里面勾选焦散开关,并且灯光要发射光子,如图13所示。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-12-l.jpg)
Maya的灯光模块功能非常全面,能够通过布光用直接照明来模拟间接照明,如传统的三点式布光(即主光,辅光,背光),也可以进行球形状布光,并且还可以有全局照明,最终聚集,焦散等方式模拟间接照明,这些间接照明的方式中以最终聚集使用最广泛,尽管算法并不是物理精确,但是其渲染时间相对较快,效果相对柔和的优点完全可以弥补。而全局照明和焦散由于渲染时间长,并且不易掌握,需要根据场景不断的测试才能得到比较理想的效果。
当然要设置好灯光同样需要根据场景的设定,画面需要表达的意境或者效果来确定灯光的布置以及设置冷暖色调,但是由于数字灯光在软件中设置更为方便灵活,比如可以通过灯光连接来管理灯光需要照明的物体,也可以打开或者关闭灯光的阴影,这些都是在现实灯光中无法做到的,作为Maya的灯光师,首要的职责是设定全局灯光氛围,负责场景的整体效果以及氛围,如果在这个环节上产生不恰当的灯光,对于整个作品来说是毁灭性的,这些都需要在实践和练习中不断积累经验,其次由于材质和灯光密不可分,所以大多数灯光师都会根据场景的大小来承担一部分材质的任务。当渲染测试完成之后,还需要对灯光素材进行归类整理,以确定提交给动画或者渲染时准确无误。养成观察的良好习惯,坚持不懈的练习才可以做出更好的灯光。
有灯光就会产生阴影,在3D软件中的阴影是可以控制的,可以选择哪些灯光打开或者关闭阴影,也可以选择阴影产生的两种技术:Depth Map Shadow(深度贴图)或者Raytrace Shadow(光线追踪),还可以设置阴影的颜色。阴影的颜色需要注意的是现实生活中的阴影并不是纯黑色的,所以在设置阴影颜色的时候需要把亮度稍微提亮一些。使用阴影贴图的方式计算阴影,好处是速度比较快,但是这种方式只能得到一个以贴图方式计算出来的假阴影效果。参数如图1所示
其中Resolution是解析度,用于控制阴影贴图的精度,一般来说,设置的大小与产生阴影面积大小成正比,但是值越大计算时间也越长。Filter Size滤镜大小,值越大阴影就越柔和。Bias偏移值,是解决阴影出现栅格时用到的参数。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-1-l.jpg)
图2中显示出Resolution与Filter Size设置值的区别,可以看到,Resolution值越小,阴影的颗粒现象也越明显,而Filter Size值越小,阴影的边缘越锐利,反之则越柔和。下面再看阴影的另一种计算方式——Raytrace(光线追踪)。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-2-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-3-l.jpg)
图3是灯光的Raytrace Shadow面板,一共有Light Radius(灯光半径),Shadow Rays(阴影射线数),Ray Depth Limit(射线深度限度)三个参数,灯光半径可以改变阴影边缘的模糊程度,阴影射线数实际上是通过控制光线计算的精度来调整阴影边缘颗粒度。射线深度限制实际上是一条光线可以被反射或者折射的最大次数。当这个数值不能达到物理反射应有的折射次数时,很有可能导致光线无法穿过折射物体,比如玻璃,水,等等。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-4-l.jpg)
图4是一个透明物体分别使用两种阴影计算方式来得到阴影,可以看到在计算透明物体的阴影时,贴图方式的阴影已经出现错误,而光线追踪方式是可以得到真实的透明阴影的。
在现实生活中,光线直接射入观察者的眼睛或者镜头时,光源可能会有一些“闪光”出现,在某些情况下灯光会从镜头的复合透镜中发生折射和偏移,形成镜头光斑,在Maya的灯光模块中也提供了这样的光学特效的节点OpitF/X。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-5-l.jpg)
图5是在灯光属性面板下的Light Effects子面板,可以看到Light Glow的接口,点击右边的连接按钮软件会自动创建OpitF/X节点并与灯光连接,在节点面板中有多种辉光以及镜头光斑可以选择,渲染效果如图6所示。
在现实世界中,光线是严格按照直线传播的,而为了达到所需要的效果,往往希望某一盏或者一组灯光,只照亮场景中的某些物体,在Maya中可以通过灯光连接来做到。Maya中的所有灯光都有一个Illuminates by Default的选项,如果不勾选此项,则灯光不照亮任何物体,除非手工将它连接到某个物体上。连接灯光有以物体为中心和以灯光为中心两个选项,可以在Light/Shading菜单下的Light Linking Editor中找到。如图7所示,分别是以灯光和物体为中心的连接面板,分别点中两边的灯光和物体,可以取消或者建立灯光与物体之间的连接。
在现实世界中,光线遇到物体后有的并不会完全被吸收,总会有一些光线或多或少地反射出来,这些被反射的光线又可以照亮其他物体,同时这些反射的光线又会携带上反射体的颜色,从而影响它照亮其他物体的固有色。使用Maya的默认渲染器是渲染的直接照明,是无法获得上述效果的。所以用直接照明模拟间接照明需要布置很多灯光并掌握一定的灯光技巧,但是Maya集成了MentalRay渲染器的间接照明技术可以很好的解决这些问题,比如Global Illumination(全局照明)、Caustic(焦散)、Final Gathering(最终聚集)、Image based Lighting(基于图像的照明)和Physical Sun and Sky(物理天光)等方法。
全局照明是使用从光源发射出携带能量的光子进入场景后与模型碰撞,并且根据碰撞表面的材质属性而变化(折射、反射或吸收),每个光子都携带一定的能量,在碰撞过程中能量也随之消耗。每个光子在能量耗尽而消失前的碰撞过程会被记录跟踪并用于计算最终的场景渲染。光子的相关信息最后存储为光子图(Photon Map)。在Maya中要产生Global Illumination的效果需要打开灯光的发射光子选项以及选择MentalRay渲染器并打开全局照明选项。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-6-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-7-l.jpg)
Photon Color是光子颜色,场景中色彩主要取决于光子的颜色,而灯光颜色只能改变场景中被主动照明的物体以及阴影的颜色。Photon Intensity光子强度,该值对渲染速度影响并不是很大,Exponent衰减指数,大多数情况取默认值2效果就很好。Global Illum Photon光子数量,该值对渲染时间的影响很大,需要逐渐调节,光子数量过小会产生光斑。当增大光子能量的同时,也需要对光子数量进行调节,避免光斑的出现。渲染面板中Accuracy(精确度)设置可以使图像的画面更细腻,但是也同样会增加渲染图像的时间,调整时也需要逐渐增加。如图9所示,左上角是使用Maya默认渲染器得到的图像,可以看到在光线照不到的地方都是一片死黑,右上角打开全局照明,使用默认设置得到的图像,可以看到明显有太多的光斑,这是由于光子数量不够造成的,左下角是设置好光子数量以及光子能量得到的图片,可以看到整个场景都被照亮了。右下角是光子颜色设置为蓝色,灯光本身颜色设置为黄色,整个场景呈现的是光子颜色,而在物体能够被灯光直接照亮的地方,颜色和灯光颜色相近。需要注意的是光子数量与场景大小,材质等都有关系,需要慢慢设置,当设置好光子数量及能量之后,如果灯光的位置方向以及光子颜色都不再改变,可以在渲染设置中找到Photon Map选项卡,取消勾选Rebuild Photon Map,勾选Enable Map Visuallizer,这样在每次渲染过程中不会重新计算光子图,而是读取之前保存的光子图,可以有效节省渲染时间。 Final Gathering(最终聚集)同样也是用来模拟间接照明的,但它的效果并不是物理精确的,所以渲染速度比Global Illumination来说要快一些,Final Gathering不需要灯光发射光子就可以计算出间接照明。渲染器会沿着一条从摄像机发出的射线(这条射线实际并不存在),当这条射线与模型产生交点时,在该点发射一些以该点的表面法线为轴心、半球状分布的采样线,这些采样线传输并返回给摄像机的过程会存储在一张Final Gathering Map中,和Photon Map类似,这两种图都可以在渲染设置中使用Map Visualizer功能。要实现Final Gathering效果,需要在全局渲染设置中开启即可。如图10所示,在渲染设置中选择MentalRay渲染器,然后在Features面板勾选Final Gathering选项,就可以使用最终聚集来模拟间接照明了。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-8-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-9-l.jpg)
现在只使用Final Gathering为整个场景提供照明的方式变得越来越普遍,因为其效果柔和、自然,渲染时间相对于光子也比较短,只用最终聚集计算场景间接的主要方式有两种:一种是给场景中某个物体A(通常是光板)的表面材质的非照明颜色指定一个亮度较高的数值或者纹理,然后场景中的其他物体通过Final Gathering采集光板表面上的照明能量。如图11中,左上角是场景中模型以及摄像机的摆放,在小球的上方摆放了一张白色光板,在使用Maya默认渲染器得到的是右上角的图片,打开MentalRay的最终聚集之后,可以看到小球上反射的光板形状,将光板切割之后,小球上的光板形状也随之发生改变,很像摆放在一个有窗户的房间里。
另外一种是为整个场景指定一个环境SHADER,然后场景中的所有物体通过fg采集环境中的照明能量,进而被照亮并显示在渲染图像中。如图12所示,首先在渲染设置的iNDIRECT lIGHTING面板中创建iMAGE bASED lIGHTING,然后选中这个节点,指定一张hdri图片(hdri是一种亮度范围非常广的图像,比其他格式的图像有更大的亮度的数据存储。而且记录亮度的方式与传统的图片格式不同,不是用非线性的方式将亮度信息压缩到8或者16BIT的颜色空间内,而是用直接对应的方式记录亮度信息),可以看到场景中并没有设置任何灯光,同时将默认灯光关闭,渲染得出的效果如右下角所示,通过fg可以采样到环境图片上的亮度信息从而将整个场景照亮。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-10-l.jpg)
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-11-l.jpg)
Maya还有一种间接照明的方式是Caustic,即焦散。焦散与全局照明类似,也是借助光子实现的:光子从光源发射出来后,必须先与(一个或者多个)Specular表面发生相互作用(反射或者折射),然后在投射到Diffuse表面上,这样就形成了焦散。比如放大镜会把平行光聚焦在某一点上。要实现焦散首先要在渲染设置里面勾选焦散开关,并且灯光要发射光子,如图13所示。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/cbzz/cbzz201205/cbzz20120529-12-l.jpg)
Maya的灯光模块功能非常全面,能够通过布光用直接照明来模拟间接照明,如传统的三点式布光(即主光,辅光,背光),也可以进行球形状布光,并且还可以有全局照明,最终聚集,焦散等方式模拟间接照明,这些间接照明的方式中以最终聚集使用最广泛,尽管算法并不是物理精确,但是其渲染时间相对较快,效果相对柔和的优点完全可以弥补。而全局照明和焦散由于渲染时间长,并且不易掌握,需要根据场景不断的测试才能得到比较理想的效果。
当然要设置好灯光同样需要根据场景的设定,画面需要表达的意境或者效果来确定灯光的布置以及设置冷暖色调,但是由于数字灯光在软件中设置更为方便灵活,比如可以通过灯光连接来管理灯光需要照明的物体,也可以打开或者关闭灯光的阴影,这些都是在现实灯光中无法做到的,作为Maya的灯光师,首要的职责是设定全局灯光氛围,负责场景的整体效果以及氛围,如果在这个环节上产生不恰当的灯光,对于整个作品来说是毁灭性的,这些都需要在实践和练习中不断积累经验,其次由于材质和灯光密不可分,所以大多数灯光师都会根据场景的大小来承担一部分材质的任务。当渲染测试完成之后,还需要对灯光素材进行归类整理,以确定提交给动画或者渲染时准确无误。养成观察的良好习惯,坚持不懈的练习才可以做出更好的灯光。