Unity 光照探针Light Probes

尽管使用光照贴图可以大大提升场景的真实程度,但是它有一个缺点,那就是场景中非静态物体缺少真实的渲染,看上去就好像和场景格格不入。实时为移动物体计算光照贴图是不可能的,但是通过使用灯光探测器我们可以模拟达到类似的效果。大概原理是这样的,在场景中的标记为探测器的静态点的位置采样光照,然后对相邻的几个光照探测器位置所采样的灯光照明进行差值,在游戏进行的过程中计算差值的速度很快,玩家察觉不到。这样就可以帮助我们避免移动物体的光照和烘培场景格格不入的感觉。

添加灯光探测器

灯光探测器组 组件(菜单:Component -> Rendering -> Light Probe Group)可以被添加到场景中任何可利用的物体。可以通过检视面板为探测器组中添加新的探测器。探测器在场景中用黄色的球体表示,并且可以像其他游戏物体那样编辑移动它的位置,被选择的探测器可以通过键盘快捷键进行复制。(ctrl+d/cmd+d).

选择灯光探测器位置

记得放置好你的灯光探测器的位置,哪里是照亮的地方,哪里是黑暗的地方。场景中的探测器需要达到一定的数量才能烘培,这样做的目的是场景能够被合理的细分。

最简单的探测器定位方式是将探测器排列成一个规则的3D网格样式,这样设置简单而高效,但是会消耗大量的内存。(从采样点每个灯光探测器本质上是一个球形的,全景的HDR图像)。值得注意的是,探测器仅用于实际上可以移动到所需地区的玩家、NPC或其他动态物体。此外,由于光照条件下插值探测器之间的位置,没有必要使用大量跨区域,灯光不会改变太多。例如,大面积均匀的阴影也不太明亮的区域远离反射物体不会需要大量的探测器。探测器一般需要照明条件的突然改变,比如在一个阴影区的边缘或在背景块的位置有不同的颜色。

在这种情况下, 游戏中的一些基础设施可以被用来作为生成光照探测器的位置参考。例如在赛车游戏中通常我们会在赛道上设置路径点,供AI或者其他方面使用。这些路径点位置就是生成光照探测器的绝佳参考物体。通过编辑器脚本我们可以利用这些资源简单高效的生成理想的光照探测器。同样,地形网格通常被用来规定玩家可以到达的地方。我们也可以利用他们来自动生成光照探测器的位置。

这里我们在角色可以走过的物体表面烘培了光照探测器。但仅仅在有光照变化的地方进行光照信息的捕捉。

Flat 2D levels 平面化

目前光照探测器系统无法烘培使用完全平面的探测器集。所以,即使你所有的角色只在一个平面上移动,你仍然需要照顾位置至少有一些探测器在一个更高的位置。这有这样布局探测器才能有效的工作。



好:这是原始的探测器的定位,角色可以爬上斜坡到盒子上面。这样悲剧可以使上面的光照得到更好的采样。



好:我们假设角色只在下面的平面上移动。我们仍然将几对探测器的位置定位的略微高一点点。不过我们尽量避免产生细长的差值空间。



坏:探测器几乎定位在了一个水平面上,这样会产生很多长而细的差值空间,在做灯光差值计算的时候产生非常遭的效果。

使用灯光探测器

如果想要使一个网格接受来自探测器系统的光照,只需要将MeshRenderer组件上个LightProbes选项勾选就可以。

探测器差值需要使用空间中的一点来表示接受灯光的网格的位置。通常情况下使用包围盒的中心来表示。我们也可以使用自定义的位置覆盖默认的位置只需要将一个Transform(变换)拖拽到MeshRenderer组件的 LightProbeAnchor(光照探测器锚点)插槽上。(这个Transform的位置将被用来表示计算差值的物体中心点)。当我们的游戏物体是由两个分离的相邻网格组成的时候,这个功能非常有用,如果这个这些网格都按照各自独立的包围盒中心作为光照差值点的时候,光照会在他们结合的位置断开。这也能使由多个MeshRenderer组件的组成的游戏物体公用一个Transform(比如使用一个父物体或者子物体)。

当一个使用了光照探测器的物体在Light Probes Scene View(在场景中查看光照探测器)。模式下被高亮选择以后,它的差值探测器将被渲染到物体的前面这样用户就能够预览到探测器的位置。差值探测器通常被渲染为一个物体,并在探测器的差值范围内显示四条蓝色的线(当物体超出探测器的覆 的范围后将显示三条)。

Dual Lightmaps vs. Single Lightmaps mode
双重光照贴图VS单光照贴图模式

在单光照贴图模式下所有的静态光照(包括被设置为"Auto"(自动)光照贴图模式的灯光)都将烘培到光照探测器中。

使用双重光照贴图模式的,灯光探测器只存贮了"Near"(近端)光照贴图配置。例如:天光产生的全局光照,自发光材质,面积光和被是设置为"Baked Only"(仅烘培)模式的灯光。和被设置为"Auto"模式的间接照明。我们要感谢物体可以被设置为"Auto"模式的灯光实时照明。并且产生一些高级的动态成分。例如实时阴影,同时接受探测器存贮的这些灯光的间接光照信息并叠加到场景中。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值