Light Probes
LightProbes (光照探针,光探测器?) 提供了一种方法用于捕获和使用 穿过场景中空白空间的 光(light)的信息。
和光照贴图相似(lightmaps),Light Probes也存储关于场景中光照(lighting)的"baked"信息。两者的区别在于:lightmaps存储的是光线照射场景表面(surfaces)的光照信息,而light probes存储的是光线穿过场景空白空间的信息。
注:图形学中提到"bake"或"baked"或"烘焙" 一般是指把场景中的光照等信息提前存储到纹理中,将来渲染时,使用这些纹理来达到“光照”效果。

上图显示的是一个只有两个Cubes的场景,在两个Cubes周围旋转了放一些light probes(图中黄色的小球)。
Light Probes有两个主要的用途:
- 首要用途是为场景中运动的对象(moving objects)提供高质量的光照(包括间接反射的光,indirect bounced light)
- 次要用途是为使用了Unity的LOD system的静态场景提供光照信息。
注:LOD即Level of Detail,当场景中的GameObject离Camera很远时,已经无法看到许多细节了,此时可以使用LOD优化渲染,即当GameObject离Camera很远时减少GameObject的Mesh的三角面片数量。
Light Probe Groups
为了把Light Probes放到场景中,必须使用一个带有Light Probe Group组件的GameObject。可以通过菜单:Component >Rendering>Light Probe Group来添加Light Probe Group组件。
但更好的做法是在场景中新建一个empty GameObject(通过菜单:GameObject > Create Empty),然后把Light Probe Group组件添加到其上面。这样可以减少意外删除该组件的可能性。

上图是Light Probe Group组件。
| 属性 | 功能 |
|---|---|
| Edit Light Probes | 点击此按钮,可以编辑Light Probe Group。这样使得Unity会只允许移动和编辑LightProbes。故编辑完一点要Distable此按钮。 |
| Show Wireframe | 此选项开启后,Unity在场景视图中显示连接Light Probes的线(wireframe)。关闭时,只显示代表Light Probe的点(points) |
| Remove Ringing | 此选项开户后,Unity自动去除场景中的Light Probe ringing(见下文) |
| Selected Probe Postion | 这是只读项。显示选中的Light Probe的x,y和z坐 |
| Add Probe | 点此按钮,添加一个Light Probe到Light Probe Group中 |
| Select All | 选中此Light Probe Group中所有的Light Probes |
| Delete Selected | 从Light Probe Group中删除选中的Light Probes |
| Duplicate Selected | 复制选中的Light Probes |
Ringing
"Ringing"是light probes在某些环境下表现出来的不想要的行为。这经常发生在Light Probe周围光照有显著差异时。例如,若在一个Light Probe的一面有明亮光(bright light),在另一面没有光(no light),则在光强就会在背面“超调”(overshoot),会在背面(本来是没光的)形成“光斑”(light spot)。
下图是一个Light Probe ringing的例子:

有几个方法可以解决"ringing":
- 在Light Probe Group组件中,开启Remove Ringing。Unity会自动移除不想要的光斑。然而,这通常会造成Light Probes准确性下降,减少光的差异(reduces light contrast,应该是降低了不同的光之间的差异)。
- 放置一些游戏障碍物,使得玩家无法到达能看到光斑的位置。
- 避免baking有向光(direct light,或者叫平行光)到Light Probes中。Direct light倾向于有明显的不连续性(sharp discontinuities)(如,阴影边),这使得它不适合用于Light Probes。仅烘焙间接光(indirect light)时,使用Mixed lighting。对于动态(dynamic)GameObjects 应该使用Realtime GI而不是Light Probes。
Placing Light Probes
在编辑一个Light Probe Group时,你可以用类似处理GameObjects的方式处理单个的Light Probes。然而,Light Probes不是GameObjects,它们是Light Probe Group组件中的一组点(points)。
当开始编辑一个新的Light Probe Group时,会有8个默认的light probes,排放在立方体的8个顶点上,如下图所示:

你可以使用 Light Probe Group inspector面板上的Add Probe控件添加 新的Light Probe。Light Probes在场景中呈现为黄色的小球,可以移动它们(就像移动GameObjects一样)。
Choosing Light Probe positions
Lightmaps在对象表面上具有连续的分辨率(resolution)(大概就是分布密度吧?)。与Lightmaps不同,LightProbes的信息分布情况可能是不连续的,这取决于你放置的Light Probes的位置的紧凑程度。
为了优化Light Probes存储的数据量和游戏运行时的计算量,你通常应该尽量减少使用的Light Probes的数量。然而,你又应该放置“足够多”的Light Probes,使得从一个空间到另一个空间的光照变化能够被记录一来,并且达到你要的要求。这意味着你可能需要在光线复杂,光照差异明显的地方多放置点Light Probes(即,在这种光线复杂的环境,应该以更紧凑的方式放置Light Probes)。在光照变化不大的地方,以更分散的方式放置Light probes。

如上图,建筑(房屋等)附近及之间放置的Probes比较密集,而在马路上就比较稀疏。
最简单的放置方式是按均匀三维网格的方式放置Light Probes(如,把它们放在网格的顶点)。这种方式很简、快捷,但是会消耗过多的、没必要的存储空间。如上图中,沿着马路,光照变化很少,许多相邻的Light Probes会存储相同的光照数据(lighting data)。在这种情况下,可以像上图那样,通过对少量、分散开来的light probes的lighting data进行插值处理。
参考:
首发于我的知乎专栏: https://zhuanlan.zhihu.com/p/70298213
Light Probes的更多相关文章
- Unity Lighting - Light Probes 光照探针(十)
Light Probes 光照探针 Only static objects are considered by Unity’s Baked or Precomputed Realtime GI s ...
- unity3d Light Probe Group图解超详细使用方法
原创文章如需转载请注明:转载自http://blog.csdn.net/qq617119142 第一步,创建一个Panel 和 三个 cube,搭建成如下图形状 第二步,创建2个点光源,一个为绿灯,一 ...
- Light Probe Proxy Volume
[Light Probe Proxy Volume] The Light Probe Proxy Volume (LPPV) component allows you to use more ligh ...
- Light Probe
[Light Probe] Light Probes provide a way to capture and use information about light that is passing ...
- Light Explorer
[Light Explorer] The Light Explorer allows you to select and edit light sources. Window> Lighting ...
- 淺談Unity 5.4新功能:Light Probe Proxy Volume
作者:CHRISTOPHER POPE 原文連結 Unity 5.4進入到Beta的階段.当中一個特別的功能是光照探頭代理Light Probe Proxy Volume(LPPV).本篇會向大家介紹 ...
- 【Unity】第13章 光照贴图和光影效果
分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在Unity 5中,Lighting是—种增强场景光照和阴影效果的技术,它可以通过较少的性能消耗使静态场景看上去更真实. ...
- 转 unity 优化
最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的document,而且个人习惯不喜欢看中文的资料,原汁原味的东西是最正确的,一翻译过来很多东西就都不那么准确了.于是通读了uni ...
- Unity 5 中的全局光照技术详解
貌似是某位好人翻译的 https://unity3d.com/cn/learn/tutorials/topics/graphics/unity-5-lighting-and-rendering#rd? ...
随机推荐
- 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底
[五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...
- 第15.1节 PyCharm安装及使用
一. 引言 在本章以前,所有老猿实现的代码都是基于Python自带的解释器IDLE来开发和执行的,很方便.消耗少,但进入PyQt图形界面开发以后,IDLE不能实现和PyQt的集成,且不能支持断点调试, ...
- Python基础篇学习感悟:学如不及,犹恐失之
从2019年3月底开始学习Python,4月12日在CSDN发表第一篇博文,时至今日已有4个月零12天. 4个多月的学习,老猿从一个Python小白成长到今天,可以说对Python这门语言已经略知一二 ...
- Python中数字按位取反的方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Python中有个按位取反运算符:,但这个运算符并不是真正的按位取反,而是效果相当于原值乘以负一再减 ...
- VMware 12 与Centos 7建立共享文件夹 && vmware 15 pro过期激活秘钥
1 vmware 15pro评估过期 网上找到的激活秘钥,激活密钥: YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8(亲试有效)UG5J2-0ME12-M89WY-NPWXX-WQH88U ...
- (四)一个bug的生命周期
Bug的属性 Bug重现环境 这个应该是我们重现BUG的一个前提,如果没有这个前提,我们可能会无法重现问题,或者根本就无从下手. • 操作系统 这个是一般软件运行的一大前提,基本上所有的软件都依赖于操 ...
- 【Alpha冲刺阶段】Scrum Meeting Daily6
[Alpha冲刺阶段]Scrum Meeting Daily6 1.会议简述 会议开展时间 2020/5/27 8:00 - 8:15 PM 会议基本内容摘要 每日汇报 个人进度.遇到的困难.明日的计 ...
- STL——容器概述
在实际的开发过程中,数据结构本身的重要性完全不逊于算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 试想:如同栈一样的一条死胡同里停车,这样的效率会很高吗? 经典的数 ...
- 横向无文件移动--SCshell使用
1.简介 SCShell是无文件横向移动工具,它依赖ChangeServiceConfigA来运行命令.该工具的优点在于它不会针对SMB执行身份验证.一切都通过DCERPC执行.无需创建服务,而只需通 ...
- Ubuntu18 安装 MySQL 8.0.22
Ubuntu18 安装 MySQL 8.0.22 网上教程都比旧,也不是第一次安装了,但依然还是花了比较多的时间,特此记录本次安装过程.因是安装完毕后回忆记录,或有错漏. 第一步: 下载 mysql ...