5.Probe lighting

原文:https://unity3d.com/cn/learn/tutorials/topics/graphics/probe-lighting?playlist=17102

了解到我们场景中的Charts数量对预计算时间有影响,我们可以通过选择从预计算中完全排除某些对象来大大提高光照性能。这将减少生成的Charts数量。相反,我们可以在这些对象上使用probe lighting,这是从Scene接收间接光照的有效方法。虽然探测器(probe)点亮的物体不会为场景提供反射光,但这通常没有明显的影响。最适合探头照明(probe lighting)的物体往往是较小的物体,无论如何对反射的照明几乎没有影响。

二、What is probe lighting?

Probe lighting是一种快速技术,用于近似实时渲染应用程序(如游戏)中的照明。它通常用于在游戏世界中照明角色和其他非静态(动态)对象。探头照明在运行时非常高效,并且具有可以快速预计算的额外好处。

探测照明的工作原理是对3D空间中特定点的入射光进行采样,并使用称为球谐函数(spherical harmonics)的数学函数在球体上对此信息进行编码。这些系数具有较低的存储成本,然后可以在游戏中快速“解包”并由场景中的着色器用于近似表面照明。在Unity中,此功能由Light Probes提供。

使用探头照明有一些限制。一个这样的限制是难以在不增加这些特殊数字的顺序(大小)的情况下在球形范围内表示高频或斑驳的照明。不幸的是,随着精度的提高,成本迅速上升,这意味着出于性能原因,我们仅限于低阶球谐函数。

事实上,我们在世界上只有一个3D位置的球形表示,这使得探头照明不适合在非常大的物体上表示照明,在这些物体上可以预期有很多照明变化。另一个限制是 - 当球面谐波编码球体上的值时 - 它们通常不适用于大型平面物体或具有显着凹面的物体。请注意,如果您正在考虑将探头照明与大型物体一起使用,Unity Manual会提供有关光探测器代理卷(Light Probe Proxy

Volumes)(LPPV)的一些信息。

尽管有这些限制,当与合适的较小的凸起物体一起使用时,探头照明将以相对低的成本产生适当令人信服的结果。在本教程的后面,我们将更深入地探讨光探测器的设置和放置,但是现在,我们只需要了解我们可以减少场景中光照贴图Charts的数量,通过选择在适当的地方使用探测光源(probe lighting)。

三、Choosing objects to light with probes

虽然将环境组下的GameObjects设置为静态以使我们的照明设置正在进行中是非常有用的,但是在此父级下面有许多对象可以替代探测照明。清除这些对象的静态标志意味着Unity的预计算实时GI系统不再考虑它们,因此将减少光照图表的数量。请记住,减少场景中的Charts数量是改善预计算时间的关键。


小而凸的碎片物体是探头照明的理想选择

查看Unity Editor的Hierarchy面板,让我们检查Environment GameObject 的子节点。如果我们专门看一下我们在Props下找到的物体,我们会发现其中很多都是小型的碎片式物体和场景装饰,如石头,水桶和木板。这些对象很多,并且这些相对较小的对象中的许多对于打开来说将是复杂的。获得没有失真(are free of distortion)的光照贴图UV很可能会导致大量的UV shells。更多的UV shells需要额外的Charts,更多的Charts意味着要计算更多的光照贴图像素,等等。

鉴于这些对象非常小,它们不太可能对场景中的间接照明做出太大贡献。同样,它们的尺寸意味着几乎没有表面区域可以显示详细的光照变化(为什么适合,两点原因)。这使得这些对象非常适合探测照明(probe lighting)。我们的预计算时间不仅会被降低,而且由于我们需要存储在内存中并在着色器中解码的光照贴图数量减少,因此运行时的性能也会提高(两个原因,两个作用)

1)在Hierarchy视图中选择Props GameObject。

2)在Inspector面板中,取消选中Static复选框。

3)选择Yes,在提示时change children。

此时,如果我们将预计算保留足够长的时间,我们最终会在Scene视图中看到我们的光照结果。我们可能会注意到,我们的探测照明的非静态对象与它们周围的对象的点亮方式不同,并且与场景的光照不匹配。这是因为我们尚未设置Light Probes,因此这些对象会回落到Scene的Ambient Probe。环境探测器(Ambient Probe)本质上是场景中的隐藏探测器,对用户不可见,它仅对Lighting窗口中被设置的“环境光源”(Ambient Source)进行采样。

该图显示了在没有光探测器的情况下,非静态对象如何在其环境中看起来不正常  

为了将我们的非静态物体更加令人信服地放入其周围环境中,我们需要花一些时间将光探测器放置在场景周围,以便在全世界范围内采样间接照明。

四、Placing Light Probes

非静态对象基于邻近探测器(probes)的接近度接收照明。关于物体可以“读取”哪个探测器的决定是通过将​​光探测器之间的空间划分为四面体体积然后检查给定物体落入哪个四面体来做出的。因此,为了制造这些四面体,必须将探针定位成使得它们形成3D体积(volume)或笼(cage)。

显示光探测器位置的场景 - 在编辑器中显示为点亮的球体

探头照明(Probe lighting)在运行时不太耗性能,并且可以快速预先计算。但是,为了最大限度地提高性能,在放置探针时需要注意一些事项。虽然设置更快,但光探测器的密集网格布置可能是浪费的,因为这些探测器不会在局部照明条件下采样很多变化。为了提高效率,更好的做法是在探测器发生明显变化的区域周围以更大的密度定位探头。这可能包括例如从光到阴影的过渡区域,或者可能存在由光反射产生的强烈颜色的区域。

1)要设置灯光探头(Probes),通过创建一个开始光探针组(Light Probe Group)从游戏物体菜单(GameObject > Light > Light Probe Group)。

2)现在我们将开始放置探针。在Hierarchy视图中选择新创建的光探针组。

3)在检查器(Inspector)面板中,从光探针组(Light Probe Group)组件中选择Edit Light Probes。

4)您可以在Scene视图中选择探针本身。从创建的默认多维数据集排列中删除除一个角点探测之外的所有探测。

5)将剩余探针放置在环境中的Terrain上方,然后按Ctrl + D(Mac上的Cmd + D)复制它。

6)使用平移工具(W),将第二个探头沿Y轴向上移动到第一个探头上方约2米处。

7)现在再次复制探头并将新副本移动得更高,可能在Y轴上再向上移动5米。

Light Probe Group组件中的Edit Light Probes按钮  

创建这样的垂直布置的原因是我们可以对从地面反弹的间接照明进行采样,从头部高度周围以及在空中(对象可能离开地面是可行的)。当我们在场景周围复制这些光探测器以创建我们的体积时,我们希望确保可播放区域中任何位置的对象都落在探针之间创建的四面体之一内。这些体积可视化为探针之间绘制的品红线。

图像显示光探测器的位置和四面体之间的位置  

通过按住Shift并单独单击每个探针或拖动选择,选择刚刚创建的所有3个探针。

复制我们创建的整个垂直链,并将其移动到场景中附近的照明区域。

在决定照明感兴趣区域时,寻找阴影区域,或者可能是地形材料颜色发生强烈变化的区域。请记住,我们的目标是在整个场景中对间接或反弹光照进行采样。为了证明添加新探头的成本是合理的,我们必须确保它对照明中的一些明显变化进行采样。如果我们使用我们的Light Probes对具有一般或一致照明的区域进行采样,那么当接收对象通过这些探测器时,我们不太可能看到太多变化。与游戏优化的许多方面一样,我们必须确保我们在场景中包含的每个项目都能带来一些好处。

继续重复此过程,在照明变化区域周围以更大的密度定位探头,直到您创建了一个封装可播放区域的稀疏笼式布局。

在定位我们的探头时,请记住检查最底部的光探头是否刚刚离开地面。

在我们的示例LightingTutorialOptimal Scene中,我们创建了两组Light

Probes:一组用于人口较密集的村庄区域,名为VillageLightProbeGroup,另一组用于村外的稀疏不可玩区域,名为ExtentsLightProbeGroup。第二组涵盖了游戏世界的范围,以防任何非静态MeshRenderers离开可玩区域。我们在场景的这些无法到达的部分中不需要相同程度的保真度,因此该组可以密度低得多。垂直轴上的两个探针就足够了。

将光探测器组拆分为两个游戏对象可以更容易地定位探测器。可以启用或禁用单个光探测器组,以便在场景中工作时提供更清晰的视图。这些组将在运行时自动组合,并带有重复数据删除传递以删除任何重叠的探测器。

要查看我们的Light Probes根据其环境点亮,我们必须等待照明预计算完成。如果在“照明”窗口中启用了“自动”模式,则会自动执行此操作。如果未启用自动模式,我们必须通过导航到Lighting窗口(Window > Lighting)并按Build按钮来手动开始预计算。

完成此过程后,您会注意到场景中的非静态游戏对象现在从光探测器中读取并且看起来更好地匹配场景照明。要在光照状态下查看Light Probes,请在Hierarchy视图中取消选择Light Probe Group。

现在我们已经在场景中设置了Light Probes,我们可以在较小的“prop”对象上获得间接照明的视觉效果,而无需在预计算中包含这些对象而创建额外的图表。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容

  • 本文节选自洪流学堂公众号专栏《郑洪智的Unity2018课》,未经允许不可转载。 洪流学堂公众号回复光照探头,获取...
    洪智阅读 3,588评论 0 4
  • 前言:最近在做一个美术馆的场景,对于灯光的要求非常高,经过几天的调试和在网上查阅一些资料,总结一下。全局光照,简称...
    Tang7阅读 2,406评论 0 9
  • 这一篇比较偏重于功能介绍,具体的实例操作请参考其他文章:未完成 游戏场景中灯光照明的构成 现实生活中的光线是有反射...
    shimmery阅读 53,424评论 6 59
  • 因为工作上的关系,每天都要面对各种各样的客户。有的刁蛮得让我们咬牙切齿,但我们还是得表面脸带笑容面对她;有的又让我...
    做一只勇敢的鸟阅读 149评论 0 0
  • 时间是个小婊子,等你再回来看的时候,什么都不一样了。 听一首歌,听了一半走开,回来味道就变了。好像食物的香味散了。...
    艾黑丫阅读 548评论 15 49