======Lighting Basics and Good Practices======
//Digital lighting and rendering Chapter 2 notes//
----
场景打光是一个反复迭代的过程。
====Starting The Creative Process====
* 什么时候开始打光取决于工作的公司和流程。通常来说,越小的公司这个过程越简单
* 如果想更好的达到导演需求的效果,尽可能的准备实物图片(或 concept arts)来描述自己的目标。
* 如果是 live-action shots,所有的灯光设置需要匹配 //background plates//(通常是 sequences,并带有 lighting matching 的参考球)
* 如果是 animation 项目,art 部门通常会提前提供原画,灯光师的会根据原画来自主打光。
===什么时候打光===
* animation 测试的过程中需要灯光来检测动画是否存在物理接触的错误(比如是否动画接触地面)
* 真正的打光过程始于 layout 已经完成的情况下,包括:
* 已知晓摄像机的位置
* 已知晓 shot 是如何组成的
* 动画已经完成
* 材质与贴图已经完成
在未准备完毕的场景中打光是浪费时间。
===The Feedback Loop===
在打光的过程中,初始的渲染应该是 rough draft,而更多的时间会花在改进灯光(//revising of lighting//)上,直到获取自己满意的效果。这个过程被称为 //feedback loop//:
\\ \\
{{ :vfx:digital_arts:digital_lighting_and_rendering:feedback_loop.svg?250 |}}
==feedback 提速技巧==
* 某些改动可以通过实时的反馈观察到(比如灯光的位置)
* 在需要渲染才能观测到改动的情况下
* 只渲染需要观测变化的物体
* 使用较为简单的物体替代比较复杂的物体
* 对指定灯光修改时,关闭其他灯光
* 只渲染改动最多的一部分区域
* 从较低的分辨率开始渲染(测试),直到通过后再进行高分辨率渲染。
* 关闭任何与目前修改无关的选项(比如测试角色灯光时可以关闭其毛发,毛发可以单独用额外的鸡胗测试)
* test rendering 中可以关闭某些耗时的选项(raytracing, global illumination, 抗锯齿等等)
* Compositing (rendering passes)也非常重要
===灯光的命名===
在多人合作中,灯光的命名是需要表意的:包括类型,motivation 和其照亮的对象等等。比如如下的例子:
#Specular highlight
#Motivited by a match
#illuminates the character's eyes
Spec_fromMatch_onEyes
#lights bouncing off the red carpet onto the rest of the set
Bounce_fromRedCarpet_onSet
具体的命名规则根据具体的公司来指定。
==灯光的管理==
如果同时存在多个为相同对象服务的灯光,将其**打组**。
===版本管理===
* 每个版本的**灯光设置与渲染结果**都应该保存下来
* 将对应版本的文件与渲染结果搁在同一个文件夹中
* 将不同版本放置于同一个窗口中进行对比,更容易发现差别
====灯光的类型====
===Point Lights===
//Point Lights//,又被称为 //omni// 或者 //omnidirectional light//。该光源的特点是:
* 所有的光线都来源于一个点
* 向**所有的方向**均匀的发射光线
{{ :cg:books:digital_lighting_and_rendering:point_lights.png?400 |}}
可以将 //Point Lights// 想象为一个无限小的电灯泡。
//Point Lights// 在有遮挡的情况下可以模拟 //SpotLights// 的效果,但通常不这么做。
===Spotlights===
//Spotlights// 与 //Point lights// 的不同之处在于其光线的发射方向被**限制在指定的区域**中(通常是一个圆锥体)。我们可以通过旋转 //Spotlights// 来控制光线发射的方向。该特性允许我们使用 //Spotlights// 来跟踪或是与指定物体绑定来达到某些特殊的艺术效果。\\ \\
{{ :cg:books:digital_lighting_and_rendering:spot_lights.png?400 |}}
\\ \\
==Spotlights 的重要属性==
* ''cone angle'':控制光束的**宽度**。
* ''penumbra angle / falloff / spread angle'':控制**光束边缘**的 softness
==光束边缘的软硬与应用==
* 边缘较硬的 //Spotlights// 非常引人注目,可以用于模拟探照灯等光源。
* 多个边缘较软的 //Spotlights// 会在其交界处混合,产生一种连续性的,无缝的组合效果:
{{ :cg:books:digital_lighting_and_rendering:softedge_spotlighs.png?400 |}}
==barn door 选项==
现实中的 spotlight 通常附带额外的四片活动的金属叶片来达到“切割”光束区域的效果:
\\ \\
{{ :cg:books:digital_lighting_and_rendering:barndoor.png?200 |}}
\\ \\
经过 barn door 剪裁的光束通常呈现为矩形的光束。
在图形学中,//Spotlights// 可以瞄向(聚焦)指定的区域的特性导致其产生的阴影(depth map shadow)可以被精确并快速的计算。
===Directional Lights===
//Driectional Lights//,也被称为 //distant, direct, infinite//,或者是 //sun light//,主要用于模从非常远的地方射过来的光源(比如直射的阳光)。该类光源有如下特点:
* 调整该光线只需旋转而无需移动,光源的位置不会影响照明。
* 所有的光线都会按指定的方向**平行**的照明目标;也就是说**光线的角度是统一**的
{{ :cg:books:digital_lighting_and_rendering:directional_light.png?400 |}}
===Sky Domes===
//Sky Dome// 又被称为 //environment sphere//,是一种模拟环境光的手段。//Sky dome// 产生的光线通常非常柔和(也包括引用)。其主要用于:
* 可模拟来自于天空的光
* 可以做为 fill light
* 通常与 //directional light// 一起使用对室外环境进行模拟
{{ :cg:books:digital_lighting_and_rendering:sky_dome.png?400 |}}
==IBL==
当 //Sky Domes// 使用图片进行照明的时候,渲染器会使用图片的颜色来决定光线的 //Brightness// 和**颜色**。这种技术被称为 //Image-based Lighting(IBL)//。
===Area Lights===
//Area LIghts// (也称为 //rect light//)模拟的是**面板类型**的光源。这种类型的灯光会产生柔和的光线和阴影。常见的应用有:
* 天花板灯的照明
* 模拟来自窗户外部的**柔和填充光**
* 任何需要柔和阴影的应用
{{ :cg:books:digital_lighting_and_rendering:area_light.png?400 |}}
==Area Lights 的尺寸==
与点光源不同,//Area Lights// 的尺寸影响其**明亮度与软硬度**。通常,越大的 //Area lights// 越亮越柔和。需要注意的是,尺寸越大的 //Area Lights//,会产生更多的阴影。如果不希望阴影呈现出颗粒状的样子,需要提高阴影的 sample。
当 //Area Light// 使用真实世界中的单位(比如 lumens)时,panel 的大小不会影响明亮度。
如果 //Area Lights// 的尺寸受 //UV// 控制,那么应该使用 //UV// 属性而不是 //Area Lights// 的长宽来控制其尺寸。
==特殊应用==
//Area Lights// 有一种很典型的应用:模拟来自窗户的室外填充光。这种灯光在某些软件中被特殊归类,称为 //portal light//。这种灯光会从 sky dome 的环境贴图中读取数据,可以更好的模拟来自于外部的填充光。
===Physically Based Lights===
//Physically Based Light// (也被称为 //IES LIghts & photomertic Lights//),是基于现实中的真实灯光的数据来创建的光源。其数据来自 //IES(Illuminating Engineering Society)//,不同类型/品牌的灯泡会有不同的表现。此类型的光源通常使用**色温**(//color temperatures//)与 //Lumens// 进行调整。
* 色温的数值与颜色有关。越低越**红**,越高越**蓝**。
* 由于科技的发展,灯泡消耗的 //Watts// 不再是决定其灯光发射量的决定性标准,因此 //Physically Based Light// 普遍使用 //Lumens// 作为灯光强度的计量单位。
==Physically Based Light 并不能保证渲染结果时真实的==
要保证渲染结果的真实性,光有 //Physically Based Light// 是不够的,其配套的其他设置也需要保证物理正确,比如:
* 场景的缩放
* 材质 / Shader
* 摄像机的曝光参数
===Models Serving as Lights===
常见的 3D 软件中都支持自定义的几何体作为光源。此类光源主要通过两种方式来实现:
* 使用超过白光(通常是 RGB{1,1,1})的颜色来作为几何体的材质颜色。
* 使用渲染器自带的发光材质(比如 VRay 的 ''Light Material'')
{{ :cg:books:digital_lighting_and_rendering:geo_lights.png?400 |}}
\\ \\
需要注意的是,即便几何体自身可以作为光源,但软件自带的光源是进行过渲染器优化的,并拥有更多的选项。因此,几何体自发光尽量用于特定的场合,而可以用默认光源替代的场合尽量使用默认光源。
===Ambient Light===
//Ambient LIght// 指环绕在我们周围的光源。这种光源来源于各种地方,在不同的角度呈现出不同的照明强度与颜色。真实环境中,//Ambient Lights// 并不是“平” 且 “均匀” 的。\\ \\
{{ :cg:books:digital_lighting_and_rendering:ambient_light.png?400 |}}
然而在计算机中, //Ambient Light// 是非常均匀的。其照明下的所有的表面颜色,强度都一致,导致了场景多样性的缺失。因此,**不推荐使用**。
====Adjust Controls and Options====
===Soloing and Testing Lights===
//Soloing light// 指将其他光源隐藏,只测试当前光源的调整手段。其要点在于:
* 一次只测试一个光源,这样可以清楚的认识到每个光源的照明区域
* 添加多个类似的光源时,也应该优先测试单个光源,调整设置得到满意结果后在进行复制
===Decay===
//Decay// 指光线的强度在传输的过程中会衰减的现象。3D 软件中通常提供了各种不同的 //Decay// 设置供我们使用。//Decay// 通常会带一个数值参数(通常被称为 //decay// 或是 //exponent//),指光的衰减程度。常用的有三种:
* No decay, ''0''
* Linear, ''1''
* Quadratic,''2''
* Cubic, ''3''
==Inverse Square Decay==
当 //Decay// 值等于 ''2'' 时,//Decay// 被称为 //Inverse Square Decay//(也称 //Quadratic decay//)。这种 //Decay// **是最接近物理正确**的 //Decay//。在这种情况下,光源与目标物体的距离每增加一倍,光线的强度就会衰减四倍。
真实生活中,//Decay// 主要原因并不是光的能量衰减,而是光的散射造成的。
==Inverse Square Decay 的应用场景==
//Decay// 通常用于可见的光源,以及应用全局光照的场景中。//Inverse Square Decay// 作为间接光反射的一部分,可以很好的模拟 indirect light 在场景中反射的现象。
==Inverse Square Decay 的使用注意事项==
* 由于 //Inverse Square Decay// 的衰减程度较高,通常设置光源的时候都会提供一个**很高**的初始光照强度,尤其是在光线需要进行**长距离传送**的时候。
* 如果出现光源足够亮,但在远距离的物体依然非常暗淡,这种情况需要考虑是否使用了 //Linear Workflow//
==No decay==
在两种情况下光线不需要 //Decay//:
* 模拟来自非常远的光源
* 模拟 directional light
==其他的 Decay 设定注意事项==
* //Cubic Decay// 可以用于模拟光穿过**浓厚的雾**,或是光穿过**阴暗的水下**
* 高衰减的 //Decay// 光源可以用于**只有光源旁边的物体**需要照明的情况
* //Linear Decay// 某些时候可以作为 //No Decay// 和 //Inverse square decay// 的中间值使用
* 某些 3D 程序允许我们指定 //Decay// 的最小 / 最大**距离**,也就是超出范围外的光线就不再显示。这种设定并不是物理正确的,但某些场景中使用起来非常方便。
===Diffuse and Specular Refection===
真实世界中,反射分为两种:
* 漫反射(//Diffuse refection//):这种反射下,光线的反射方向是全方位的
* 高光反射(//Specular refection//):这种反射下,光线的反射是平行的,反射会呈现出类似镜面的效果
光线在场景中会综合上述两种方式进行反射。//Diffuse// 主要呈现的是**物体表面的着**色;而 //Specular// 主要呈现的是**模拟光源反射的高光**。\\ \\
{{ :cg:books:digital_lighting_and_rendering:diffuse_n_specular.png?400 |}}
==反射的途径==
有两个因素决定了反射的最终效果:
* 物体的材质
* 某些灯光设置允许设定只对 //Diffuse// 或是 //Specular// 照明起作用
一个常用的技巧是复制光源,并设置其中一个只发射 //Diffuse//,而另外一个只发射 //Specular//。这种手法称为 //splitting out//,允许我们对不同反射的明度,颜色,以及高光的位置或表现进行独立的调整。
==常见的 specular level==
* sun: ''1.0-1.2''
* fill lights repersenting the sky specular: ''0.3-0.5''
* 地面的反射光: ''0-0.25''
==3D 中的点光源高光不是真实的==
点光源在 3D 中表现为一个点(一个点的像素)。如果是真实的高光,那么高光表现上也只应该有一个点(无限小)。但这样带来的问题是,过于小的高光点是无法进行渲染的。为了修正这个问题,shader 中提供了选项允许我们设置高光反射的**尺寸**和 softness,使得高光渲染的结果看起来像是高光一样;但这样的结果并不是真实的。
===Light Linking===
//Light Linking// 指可以将指定的灯光与指定的物体绑定,使场景中未链接的物体不受该灯光的技术。该技术的好处有:
* 保证链接物体上始终存在需要的照明(比如专门链接一个高光灯作为人眼的高光)
* 可以对链接的物体做更加精细的修改
* 对场景中某些照明不佳的部分进行增强
某些软件会将灯光与阴影关联起来;当取消了 Light Linking 的时候,对应的光源不再对未链接的物体产生阴影。使用 //split out// 进行灯光的微调时,应设置 shadow linking 不随着 light linking 而改变。
===Cookies===