Unity 光照系统

光照系统

  在2017年以前光照贴图技术是游戏光照设置的主流方式,但由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object)。而游戏场景几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。

对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;

对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。

  Unity3D中Realtime Global Illumination提供了可以实时计算的全局光照,但是对于计算机性能来讲还是非常的苛刻。不过随着计算机硬件的提升,实时光照已经应用于游戏技术,每年Unity全球开发者大会都会带来与光照相关的新技术。
  
  Unity3D中默认可以创建这么几种灯光:聚光灯、点光源、平行光、面积光,另外还可以创建两种探针(Probe):反射探针(Reflection Probe)和光照探针组(Light Probe Group)。

一、Direct Lighting :自然光

  Unity3D中的直接照明主要来源于各种灯光物体,而灯光物体本质上是空物体加上灯光组件。直接照明可以产生阴影,但光线不会反射、也不会折射,可以穿透半透明材质物体。

  
  • Type:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的
  • 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:阴影偏移,通常适当增加这个值来修正一些阴影的artifact
  • Normal Bias:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias的使用场合)
  • Near Plane:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影
  • Cookie:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果
  • Cookie Size:调整Cookie贴图大小
  • Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的
  • Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果
  • Render Mode:渲染模式。包含:自动,重要逐像素进行渲染,不重要(以最快速度渲染)
  • Culling Mask:剔除遮蔽图,选中层所关联的对象将受到光源的影响。

二、Point :点光源

点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减

  

  • Range:光源的范围大小,从光源对象中心发射的距离Color:灯光颜色
  • Mode:灯光照明模式,每种模式对应Lighting面板中一组设定
    • Realtime:对应Realtime Lighting

    • Mixed:对应Mixed Lighting

    • Baked:对应Lightmapping Setting

  • Intensity:灯光强度,只有Point和Spotlight有该参数
  • Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘
  • Shadow Type:阴影贴图的类型

    • No Shadows:无阴影贴图

    • Hard Shadows:硬阴影贴图

    • Soft Shadows:光滑阴影边缘(也就是阴影模糊效果)

  • Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的

  • Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果

  • Render Mode:渲染模式。包含:自动,重要逐像素进行渲染,不重要(以最快速度渲染)

  • Culling Mask:剔除遮蔽图,选中层所关联的对象将受到光源照射的影响。

三、Spot :聚光灯

聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减

  
  • Range:光源的范围大小,从光源对象中心发射的距离

  • Spot Angle:灯光射出的张角范围

  • Color:灯光颜色

  • Mode:灯光照明模式,每种模式对应Lighting面板中一组设定

    • Realtime:对应Realtime Lighting

    • Mixed:对应Mixed Lighting

    • Baked:对应Lightmapping Setting

  • Intensity:灯光强度,只有Point和Spotlight有该参数

  • Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘

  • Shadow Type:阴影贴图的类型

    • No Shadows:无阴影贴图

    • Hard Shadows:硬阴影贴图

    • Soft Shadows:光滑阴影边缘(也就是阴影模糊效果)

  • Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的

  • Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果

  • Render Mode:渲染模式。包含:自动,重要逐像素进行渲染,不重要(以最快速度渲染)

  • Culling Mask:剔除遮蔽图,选中层所关联的对象将受到光源照射的影响

四、Area :区域光

模拟一个较大的发光表面对周围环境的照明效果,通常面积光的灯光亮度衰减很快,阴影非常柔和。

Unity3D的面积光仅在烘焙光照贴图时有效,并不像Maya的Area Lights一样能动态照亮场景。

  
  • width:面积光宽度

  • Height:面积光的高度

  • Color:灯光颜色

  • Intensity:灯光强度,只有Point和Spotlight有该参数

  • Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘

  • Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的

  • Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果

  • Render Mode:渲染模式。包含:自动,重要逐像素进行渲染,不重要(以最快速度渲染)

  • Culling Mask:剔除遮蔽图,选中层所关联的对象将受到光源照射的影响

五、Light Probes :灯光探针

  Light Probes 就是 Reflection Probes 与Light Probe Group。

  Light Probe可以被认为是在场景中的一个小“光源”,而多个Light Probe组成的网络,就是Light Probe Group。这些小光源通过烘培得到场景中该点的亮度信息,然后整个网络用这个信息来照明动态物体。

  Reflection Probes

  当使用标准着色器时,每一个材质都会有一定程度的镜面反射(Specularity)和金属反射(Metalness)属性,在没有强大的硬件来处理即时光迹追踪反射的情况下,我们得仰赖预先计算的着色反射。

  

  光照烘焙对于动态物体(Dynamic Object),也就是没有被设置成Lightmap Static的物体来说是不起作用的,针对静态物体才有作用,如果希望动态物体也能被正确的照明,则就需要创建Light Probe Group。

  Light Probe Group

  同一时间内只会对最靠近动态物体的那些Probes起作用,而且Light Probe离运动的物体越近,其照明效果越强。我们可以根据场景的光照环境特征来设置合适的Liht Probe Group。

  

  为场景添加Light Probe Group可以很好的将动态物体与静态场景融合,尤其是在光照环境复杂的室内场景中,更需要添加Light Probe Group。

***| 以上内容仅为学习参考、学习笔记使用 |***

原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13151628.html