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? ...
随机推荐
- 20200322_【转载】关于C#中使用SQLite自适应Any CPU程序的说明
本文转载, 原文链接: http://luyutao.com/2016/09/14/csharp-sqlite-any-cpu.html 在C#中如果要使程序自适应32位和64位系统,只需要将项目的& ...
- Python中序列解包与函数的参数收集之间的关系
在<第4.7节 Python特色的序列解包.链式赋值.链式比较>中老猿介绍了序列解包,<第5.2节 Python中带星号的函数参数实现参数收集>介绍了函数的参数收集,实际上函数 ...
- PyQt(Python+Qt)学习随笔:部件的大小策略sizePolicy的含义
在Qt Designer中的每个部件,除了设置部件的位置(geometry)之外,还可以指定部件的大小策略sizePolicy.部件的sizePolicy用于说明部件在布局管理中的缩放方式,当部件没有 ...
- Oracle函数使用1
一.字符串处理函数 1.ascii(x):返回字符的ASCII. SQL语句:select ascii('a') from dual; dual:空表,每创建一个用户都会生成这样一个dual表,表中只 ...
- jquery和zepto有何区别?
1.针对移动端程序,Zepto有一些基本的触摸事件可以用来做触摸屏交互(tap事件.swipe事件),Zepto是不支持IE浏览器的. 2.DOM操作的区别:添加id时jQuery不会生效而Zepto ...
- hive的调优策略
hive有时执行速度很慢,若hive on spark 的话,在sparkUI上可以清楚看到是否数据倾斜 优化方法: 1.增加reduce数目 hive.exec.reducers.bytes.per ...
- Android开源项目-转载
一.视频播放 https://github.com/lipangit/JieCaoVideoPlayer 二.图片选择 https://github.com/pengjianbo/GalleryFin ...
- Windows10自带截屏快捷键
Windows10自带截屏快捷键使用方法大全我们知道,QQ和微信以及第三方浏览器等软件都支持截图功能,但是这个都是基于软件的一个功能,如果我们不打开这些软件的话,就不能实现截图功能,但其实window ...
- EM 算法-对鸢尾花数据进行聚类
公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍过K 均值算法,它是一种聚类算法.今天介绍EM 算法,它也是聚类算法,但比K 均值算法更加灵活强大. ...
- JavaSE03-运算符&分支语句
1.运算符 1.1 算术运算符 1.1.1 运算符和表达式 运算符:对常量或者变量进行操作的符号 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式. 不同运算符连接的表达式 ...