今天分享的干货是unity中的Light probe,我们在对unity中的场景添加灯光进行渲染的时候,有些为了突出角色会添加很多实时光源。但这些实时光源会使内存的消耗过大,从优化的角度出发,应该首先想办法提高间接光的亮度。而如果我们要增加动态物体的间接光照的话,就需要用今天我们要提及的Light Probe。
1、Light Probe原理
LightProbe主要解决了如何在动态对象和角色上使用烘焙的照明信息。它在计算的时候采用的是球谐函数来对球面上的亮度信息进行编码。核心就是球面亮度信号编码和重建。

上图表示的就是一个原始的亮度信号会被分解成一系列带缩放参数的基函数之和,如果我们知道这些基函数的缩放系数的话,就可以在运行时快速的重建原始的亮度信息。
所以lightprobe的内存消耗是很低的,只需要将缩放系数与其对应的基函数相乘之后再求和的结果就是近似的原始信号。
在Unity中,Baked GI的LightProbe采用的3阶球谐函数,RealtimeGI采用的是2阶球谐函数。
2、场景中的运用
为了进一步理解我们在场景中创建一个如图所示的半封闭空间来模拟房间。关闭掉场景中默认的DirectionalLight

然后在左上角再添加一盏点光源,为了方便观察将光源的颜色改为红色或者其他,稍微增加光源强度intensity以及范围range。

当前中间的两块挡板都是static,所以目前看起来所接收的光照正常,但是如果我们把第一块取消勾选static,即这块物体时移动的话,就需要在光源周围添加light probe,将光源的数据进行分解然后传递给动态物件,才会得到正确的光照。
3、创建light probe
点击Hierarchy的Create,在Light中选择最后一个Light Probe Group

然后会看到场景里面出现了几个相连的小球立方,那些小球就是用来获取计算原始光源。

我们将light probe拉到光源附近,ctrl加左键可以选择单个小球,然后我们把后面的四个小球选中ctrl + d进行复制,复制完成以后拉开距离,就得到如下图所示的light probe

然后打开lighting settings用默认参数点击Generate Lighting对整个场景进行灯光烘焙


烘焙完成以后选中我们设置为了no static的第一块板,会发现它连了三个小球,而这三个小球就是在进行light probe球谐函数计算的时候,参与计算的三个小球,整块板所有的光线信息都是来源于这个三个小球所接受的信息权重计算后进行插值得到的结果

所以,在unity中,light probe会根据物体所在的位置,选择四面体,然后使用组成四面体的点进行插值。
而且,light probe只针对no static的物件进行计算,不对static的物体有作用。
所以如果我们在场景中选择第二块蓝色板的话,是不用有相关的probe小球出现的。

另外,如果我们在第一块板的附近放一个cube,正常情况下在cube身上会接收到来自木板的反射光,但是实际上却是模板对cube没有任何的光源反射影响

而当我们把木板改成static后,再次进行烘焙就会得到完全不一样的效果

Cube得到了大量来自木板的反射,由此可见,被light probe作用的no static物体,其自身是不会产生反射的。
来源: Thepoly 微信公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答3.精通材质贴图软件;精通各主流渲染器的设置;对主流引擎有一定了解并能还原美术效果6.简历内请附带作品资深角色模型师(CG向)......
鹿角部分我是通过在ZBrush中创建圆柱体,然后使用蛇形笔刷(SnakeHook)配合动态笔刷模式,把鹿角的大型制作出来期间对......
是的,常年被抢、上来缺口按几十个人算的,一定有角色动画专业!下面这家地处北京的制作公司表示,他们现在的主要业务是制作动画短剧、......
一样是入学时底子薄弱、但通过火星6个月课程学习获得较大提升,并顺利入职行业名企的学员案例这个专业的全称是“影视游戏3D模型大师......
全球年收入超10亿美刀的小程序游戏,正在疯狂招聘!附火星匹配专业
这里为大家整理了一组点点互动10月岗公开的热招岗位清单,主要是美术岗和技术岗,分校招和社招两组,感兴趣的同学可以尝试投递社招·......
上班啦!上班啦!又是替同学开心的一天!这位同学因为大学还没有正式毕业,所以目前是以实习生身份入职腾娱!等拿到大学毕业证的时候,......
同学您好!