我的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的理解,若有任何看法或建议,欢迎留言探讨,相互交流,共同进步。
- 我的Unity 3D之旅——杂记之LightMapping和Light Probe
- 我的Unity 3D之旅——杂记之三种形式的旋转
- Unity 之 Light : Light Probe
- Unity 3D笔记——Light Probe
- Unity Light & Lightmapping
- Unity教程之-Unity光照贴图Lightmapping
- 我的Unity 3D之旅——第一人称射击游戏(3)
- 我的Unity 3D之旅——Hello World(1)
- 我的Unity 3D之旅——Hello World(2)
- 我的Unity 3D之旅——第一人称射击游戏(1)
- 我的Unity 3D之旅——第一人称射击游戏(2)
- 我的Unity 3D之旅——第一人称射击游戏(4)
- 我的Unity 3D之旅——第一人称射击游戏(5)
- 我的Unity 3D之旅——第一人称射击游戏(6)
- Unity 3D 光照贴图快速入门 Lightmapping Quickstart
- 我的Unity之旅
- unity自带LightMapping和3Ds Max烘焙贴图的小对比
- unity自带LightMapping和3Ds Max烘焙贴图的小对比
- 375. Guess Number Higher or Lower II
- 文章标题
- 网络流专题2
- Pro_1_UNIX下最简单的C_S程序_2016_8_5
- 文章标题
- 我的Unity 3D之旅——杂记之LightMapping和Light Probe
- java如何实现二叉树
- oracle安装配置
- 《深入理解Java虚拟机》笔记
- QRCode扩展
- Android日志系统
- java中如何实现链表
- 基于Spark和Hive进行的豆瓣电影数据分析
- 写壳手记(一)