一、光照
然后出现了所谓的高级渲染器,用计算机的计算来代替我们的手工劳动来进行这个“模拟”的工作。在漫长的发展过程中,出现过很多很多计算方案,总体上分为这样几类:
- 直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的GI(Global Illumination);
- 不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的FG(Final Gathering);
- 完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的AO(Ambient Occlusion);
- 将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的Lightmap。
- 对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;
- 对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。
不论是GI还是FG,计算量都是非常大的,一帧图片需要几十分钟甚至几十小时来渲染,所以很难被应用在游戏设计领域。
因此在游戏设计领域,光照贴图技术依然是目前的主流方式。
由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object),而我们的游戏场景中几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。
unity3D光照系统Lighting菜单中,一共有6个选项,分别为Directional Light(平行光),Point Light(点光源),Spotlight(聚光灯),Area Light(区域光),Reflection Probe(反射探头),Light Probe Group(光照探头组) 其中前四个为unity中的灯光,如图:
1.Directional Light(平行光)
平行光通常是用来做阳光的,unity的默认在场景里放置平行光。平行光不会衰减。
Type
:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的。- Directional(方向光):灯光放在无穷远处,它影响着场景里所有物体。
Color
:灯光颜色。Mode
:灯光照明模式,每种模式对应Lighting面板中一组设定。Realtime
:对应Realtime Lighting。Mixed
:对应Mixed Lighting。Baked
:对应Lightmapping Setting。
Intensity
:灯光强度Indirect Multiplier
:在计算该灯光所产生的间接光照时的强度倍乘Shadow Type
:阴影贴图的类型No Shadows
:无阴影贴图Hard Shadows
:硬阴影贴图Soft Shadows
:光滑阴影边缘(也就是阴影模糊效果)
Baked Shadow Angle
:烘焙阴影的角度Realtime Shadows Strength
:实时阴影强度Resolution
:阴影贴图分辨率Bias
:阴影偏移,通常适当增加这个值来修正一些阴影的artifactNormal Bias
:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias
的使用场合)Near Plane
:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影Cookie
:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果Cookie Size
:调整Cookie贴图大小Draw Halo
:灯光是否显示辉光,不显示辉光的灯本身是看不见的Flare
:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果Render Mode
:渲染模式Culling Mask
:这个用来照亮选择性的部分场景。
点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减
Range
:光线射出的范围,超出这个范围则不会照亮物体。
3.Spotlight(聚光灯)
聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减