灯光的烘焙四 灯光探头与反射探头

简介:最后和烘焙相关的一个大块就是灯光探头和反射探头。我们前面也讲了,烘焙后的物体使用的时固定的光线效果,所以烘焙后的光线效果和动态物体是没有关系的,所以这两个功能主要是将烘焙的效果通过一个媒介应用到动态的物体上,天空盒的反射和基于天空盒的环境光可以理解为和这两个功能是近亲。
版本:Unity2019.4.12f1 HDRP 7.5.1

灯光探头


  • 灯光探头的作用是在烘焙的时候将当前探头接受到的灯光数据记录下来,当动态物体经过时可以接受到这些记录了的灯光信息的影响,这样也从一定意义上使烘焙的物体与动态的物体产生了互动。

创建灯光探头

  • 在 Hierarchy 面板空白处 点击鼠标右键,依次选择 Light -> LightProbeGroup
通过右键创建
  • 创建好的灯光探头物体上有个 LightProbeGroup(灯光探头)的组件,当这个物体处于选中状态时,场景中会绘制出所有的灯光探头。目前他是不可编辑的。
不可编辑的灯光探头

组件面板介绍

  • EditLightProbes 点击按钮就可以进行编辑了。
  • ShowWireframe 勾选会在场景中显示每个探头之间的紫色连线。(这些探头和连线不会再game窗口出现,也不会出现在渲染结果中,就是个辅助显示)
  • RemoveRinging 移除多余的光斑
    "Ringing"是light probes在某些环境下表现出来的不想要的行为。这经常发生在Light Probe周围光照有显著差异时。例如,若在一个Light Probe的一面有明亮光(bright light),在另一面没有光(no light),则在光强就会在背面“超调”(overshoot),会在背面(本来是没光的)形成“光斑”(light spot)。
    下图是一个Light Probe ringing的例子:

光斑例子

有几个方法可以解决"ringing":

  1. 在Light Probe Group组件中,开启Remove Ringing。Unity会自动移除不想要的光斑。然而,这通常会造成Light Probes准确性下降,减少光的差异(reduces light contrast,应该是降低了不同的光之间的差异)。
  2. 放置一些游戏障碍物,使得玩家无法到达能看到光斑的位置。
  3. 避免baking有向光(direct light,或者叫平行光)到Light Probes中。Direct light倾向于有明显的不连续性(sharp discontinuities)(如,阴影边),这使得它不适合用于Light Probes。仅烘焙间接光(indirect light)时,使用Mixed lighting。
  • Selected Probe Position :选择的单个探头的位置,可以直接在场景中拖动,也可以在这里输入
  • AddProbe 添加一个探头
  • SelectAll 选择所有的探头 在编辑模式时 直接按 Ctrl+A 键也可以删除
  • Delete Selected 删除选择的探头 ,直接按键盘上的 Delete 键也可以删除
  • DuplicateSelected 复制选择的探头,选择探头后直接按 Ctrl+D 也可以复制,注意这种复制时原地复制,不需要粘贴,复制完就出现了,类似于将 Windows 的复制粘贴整合成一步了

编辑灯光探头

  • 进入编辑模式之后就可以直接进行 ,增加 、删除、复制、移动操作了。没有难点
  • 探头物体整个整个场景创建个就可以了,即使创建多个,你会发现小探头依然是联系在一起的。
  • 探头的排布原则就是 光线变化多的地方密集一些,由于是做视频,所以无需考虑太多的性能问题。
  • 编辑完成后,点击编辑按钮直接退出编辑模式,或直接选择其它物体也可以退出编辑模式。

反射探头


  • 反射探头是一个虚拟的盒子,他会类似天空盒一样记录从它这个位置得到的周边的环境,然后影响动态的物体。说是反射探头,其实更准确的说就是一个有范围的效果的环境盒子。
  • 为了观察反射效果,我们在场景中制作一个完全光滑的金属球。要记得创建材质球,不然刚创建的球体的材质参数是调整不了的。
完全光滑的金属球

创建反射探头

  • 在 Hierarchy 面板空白处 点击鼠标右键,依次选择 Light -> Reflection Probe
右键创建反射探头
  • 创建完成的反射探头物体上有反射探头组件。


    反射探头组件

反射探头参数介绍

  • 组件大体结构分为

      1. 工具按钮
      2. 反射类型
      3. 投射设置
      4. 作用范围
      5. 采样设置
      6. 渲染设置
    
反射探头组件参数
工具按钮
编辑工具按钮
  1. 编辑整体形状,其它形状都与这个形状相对
  2. 混合距离,这个可以改变影响体的投射范围,但是超出这个影响范围的物体反射效果会变淡但是不会消失,可以理解为混合时混合截止的距离,
  3. 混合边界,这个也可以影响范围的改变,但是是一个明确的范围,超出这个范围的物体的会一点反射效果都没有,可以理解为混合时混合开始的距离
  4. 采样位置,即当渲染反射探头的周边环境时,渲染相机的位置
  5. 在场景中显示反射探头的预览,这个预览的球体就问与第四条设置的采样点的位置
Type 反射类型
  • 分为 baked(烘焙)、custom(自定义)、realtime(实时)
反射类型

1. baked 烘焙类型,即在灯光烘焙时被烘焙成固定的效果,这种类型优点性能消耗低,缺点是无法实时反映动态的物体,因为它的反射结构是提前烘焙死的
2. custom 自定义类型,即用户自己制定需要的反射盒子,优缺点和 baked 差不多,只是反射效果和场景没有了关系,当前的场景可以反射夜晚星空,也可以反射黄昏日落,完全看用户设置的反射贴图(Cube类型)
3. RealTime 实时类型,与baked相比就相当于,以固定的频率更新烘焙结果,优点就是动态的物体也能反射出来,缺点就是性能消耗需要控制,渲染视频可以考虑使用。

ProjectionSettings 投射设置
图片.png
  • ProxyVolume 体积代理,用来设置投射用的体积,如果不设置属性则下方会出现UseInfulenceVolumeAsProxy的选项
  • UseInfluenceVolumeAsProxy 勾选后使用影响范围当做投射体积 ,否则投射体积无限大
  • 不做特殊效果我们使用默认的设置即可
InfluenceVolume 影响体
  • 主要用来设置影响体,分两种形状,盒子和球体
盒子

球体
  • Shape 设置反射盒子的形状,分box和球体
    1. Radius 类型为球体时出现,设置球体的半径,右侧的编辑按钮与组件顶部的按钮作用一样
    2. BoxSize 类型为盒子时出现,设置盒子的尺寸,右侧的编辑按钮与组件顶部的按钮作用一样
  • PerAxisControl 类型为盒子时出现,勾选后可以按面控制盒子的形状。我们一般使用不勾选即可
未勾选,盒子整体尺寸调整
勾选后,盒子可以按面调整
  • BlendDistance 混合距离 与组件顶部按钮 混合边界 作用一致
  • BlendNormalDistance 混合边界 与组件顶部按钮 混合边界一致
CaptureSettings 采集设置(渲染反射盒子时的设置)
采集设置
  • CapturePosition 采样位置 设置渲染时的相机位置,右侧的按钮与组件顶部的 采样位置 按钮效果一致
  • 清除模式,可以简单理解为画布每一帧铺底的方式,有天空盒,颜色和误操作三种模式
  • BackgroundColor 背景色,当清除模式设置为Color 时,会使用这里指定的颜色
  • ClearDepth 清除深度 记得勾选就可以了
  • VolumeLayerMask 设置要渲染的volume所在的层级,环境volume所在的层级
  • VolumeAnchorOverride
  • UseOcclusionCulling 开启剔除,用来提高渲染性能,不渲染被认为渲染不到的物体
  • CullingMask 开启渲染层级遮罩
  • ClippingPlanes 渲染相机的远近裁切面 Near 近裁切面 Far 远裁切面
  • ProbeLayerMask 探头层级遮罩
  • CustomFrameSettings 开启自定义渲染 feature 设置
RenderSettings 渲染设置
  • Multiplier 倍乘,反射探头的强弱控制系数
  • Weight 权重,简单理解为当前反射探头的透明度,值越低反射效果越透明
  • FadeDistance 衰减距离。
可参考的基本设置
  • 我们是做视频,可以使用实时渲染,每一帧都更新
参考设置

参考设置

注意,反射探头的预览效果是没有后处理效果的,因为他需要保留元数据参与真正的渲染,真正的渲染结果会参与后处理。

你可能感兴趣的:(灯光的烘焙四 灯光探头与反射探头)