我的Unity 3D之旅——杂记之LightMapping和Light Probe

来源:互联网 发布:java 读取磁盘 io 编辑:程序博客网 时间:2024/06/07 04:04

杂记部分是我临时想到的一部分,没有特定的出现要求,也没有固定的长度,只是记录一下一些突然想到的,又一下子找不到地方安放的内容。

关于LightMapping和Light Probe

在这个系列的第二篇——Hello World(2)中提到了LightMapping技术和Light Probe。最开始看的时候对于LightMapping技术只是懵懵懂懂,对于Light Probe更是不知其为何物。相信很多人会有跟我一样的感觉,这俩到底是干什么用的?它们之间又有什么区别和联系呢?(马克思哲学课既视感- -)

先发一张效果图……(2M的限制实在是比较尴尬,有没有比较好的屏幕录制和gif制作软件推荐呀。。。)

一、LightMapping和烘焙

在完成了第一人称射击游戏的场景部分以后,我对于LightMapping技术有了比较直观的了解。所谓LightMapping,就是把静态光源产生的效果提前渲染成贴图贴到静态物体表面,产生的效果应该和实时计算的结果是一样的,但是因为已经渲染成了贴图(也就是所谓的灯光烘焙),在程序运行期间就免去了实时计算的负担,自然提高了性能。下面就以正在开发中的第一人称射击游戏为例进行测试,测试环境如下:

硬件环境:i7-4650U四核CPU,8G内存,三星256G固态硬盘,Intel HD Graphics 5000集成显卡

操作系统:Windows 10 专业版

测试软件:按第一人称射击游戏(1)和第一人称射击游戏(2)完成游戏场景和主角配置的第一人称射击游戏

运行分辨率:961×518

1. 开启所有9个Point Light光源,Baking选项设置为Realtime,在菜单栏【Window】→【Lighting】→【Scene】窗口中勾选Precomputed Realtime GI,运行游戏,灯光效果较弱,打开Stats窗口,可以看到帧率在80上下波动,最低60左右,最高接近120。

2. 将所有Point Light光源的Baking选项设置为Baked,在菜单栏【Window】→【Lighting】→【Scene】窗口中取消勾选Precomputed Realtime GI,勾选Baked GI,点击Build进行灯光烘焙,完成后关闭所有Point Light光源,运行游戏,灯光效果明亮绚丽,帧率在100上下波动,最低大约75,最高达到140。

分析:由于本游戏贴图和光影效果较为简单,测试结果没有太明显的差异,但是从帧率上还是可以初步得出结论,使用LightMapping技术可以在得到高质量光影效果的同时降低计算负担以提高性能。关于为什么实时灯光和烘焙灯光产生的实际效果不同,可以参考这篇文章的“为什么在Realtime灯光下的效果和改为Baked烘焙的效果差别很大?”部分。

二、Light Probe和Light Probe Group

在进一步完成主角的配置以后,我理解了Light Probe的用途。前面讲了,LightMapping技术只能对静态的物体进行预渲染来提升性能,那对于动态物体的光影效果,按金玺曾版《Unity 3D\2D手机游戏开发》一书所说,“Lightmapping技术可以解决静态场景的光影问题,但是它无法和场景中的动态模型交互,使得运动中的模型不能和场景中的光线融合到一起从而显得不真实。Light Probe可以解决这个问题。通过在场景中摆放不同的Probe对场景各处的光影信息进行采样,场景中运动的模型就能够参考这些Probe的位置模拟出与静态场景类似的光影效果”。而Light Probe Group组件就是一系列Light Probe的集合。下面就以上述环境进行测试。

1. 保持所有Point Light关闭,关闭level游戏体的Light Probe Group组件,运行游戏,可以看到主角的M16确实有光影效果的变化,帧率90左右。

2. 开启level游戏体的Light Probe Group组件,运行游戏,主角的M16同样有光影效果变化,帧率100左右。

分析:实际测试结果显示,两种方式下均产生了动态光影效果,查阅资料后得出结论应该是由于Unity 5.x版本使用了全新的Enlighten光照系统,在光源选项中提供了Bounce Intensity参数,即反射光强度,因而烘焙后也会预计算反射光路径,在游戏运行时对动态物体计算全局光照(GI)时加入了反射光的效果,因而即使不使用Light Probe也同样可以使动态物体产生与静态场景融为一体的光影效果。而产生帧率差异的原因,推测是计算全局光照时Light Probe对场景各处的光影信息进行的采样提升了效率。

三、结论

由于Unity 5.x版本使用了全新的Enlighten光照系统,很多关于光影效果的内容都发生了改变,需要查阅最新的资料并且进行一定的探索。通过对LightMapping和Light Probe的实际使用,我对此二者的理解也从一开始的懵懵懂懂变得更加深刻了。

这说明,理论知识只有联系实践才能被深入理解,没有实际的使用过,就很难真正去理解。另一方面,新技术、新工具的产生和发展非常迅速,旧有的资料已经不能满足学习的需求了,要勇于追求新技术才不会落伍。

最后,关于LightMapping和Light Probe的理解,若有任何看法或建议,欢迎留言探讨,相互交流,共同进步。

0 0
原创粉丝点击