Unity3D中的Grobal Illuminit…
来源:互联网 发布:vb.net 十秒后跳转 编辑:程序博客网 时间:2024/05/17 21:53
GrobalIlluminition,全局照亮,这个系统模拟了场景当中所有物体的表面对光线的反射,从而对其他物体造成的影响。普通的光照系统只是简单的计算光源对于某个表面的的影响,例如表面的颜色,表面对光线的吸收强度等,而GI在此基础上还要考虑来其他物体表面反射过来的光线,从而达到细致而真实的效果。
正如上图所示,两个光源之间的光线变化更加柔和真实。
如图,把球体设置成动态物体,不参与烘烤。明显可以看出球体和场景的脱节。
如图,黄色的小黄点就是场景中的光源探照。光源探照是可以附加在场景中任何一个物体上的,而且这些探照器是全局共享的。对于如何摆放探照器,总结的方法是,1)动态物体集中运动处放置比较密集的探照器,可以制造出更好的效果。2)探照器应该布置成一种层次结构,具体参考官方文档。
上图中,球体没有参加烘烤过程,但是使用了light probe系统,效果也接近参加烘烤。然而这时的球体是动态的。
上图可以看出来,关闭光源后,移动球体,球体表面会随着位置发生微妙的光照变化,这正是light probe系统的效果。
GI要计算物体之间的相互影响,这无疑要耗费大量的资源。所以最基础的GI方法是Bake。所谓烘烤,就是先设定好场景当中的staticlightmapping物体,这些物体在场景中是静态的,不会因为游戏运行而改变自身的状态。烘烤过后,物体表面因为漫反射而更加明亮,而且也会出现一些真实的细节。
正如上图所示,两个光源之间的光线变化更加柔和真实。
把光源关掉,可以观察bake的实际效果。
然而这种烘烤效果是一种precomputed的方法,也就是提前计算好的,只能作用于静态物体之间。此时移动球体,球体表面不会发生任何变化。
可是,真正的游戏场景中,往往出现大量动态的物体,例如玩家的人物。这些动态的物体出现在烘烤过的场景,往往会出现一些disconnected的效果,显得人物和场景非常格格不入。
如图,把球体设置成动态物体,不参与烘烤。明显可以看出球体和场景的脱节。
正是因为这种原因,unity提供了一种可以是物体动态参与GI的方法,lightprobe系统。光源探头系统,可以在场景当做布置非常多光源探头,这些探头可以感知烘烤过的场景中,特点位置以及周围的光线情况,从而记录在系统当中。当动态物体启用lightprobe属性后,就可以利用这些光照信息动态的参与GI。
如图,黄色的小黄点就是场景中的光源探照。光源探照是可以附加在场景中任何一个物体上的,而且这些探照器是全局共享的。对于如何摆放探照器,总结的方法是,1)动态物体集中运动处放置比较密集的探照器,可以制造出更好的效果。2)探照器应该布置成一种层次结构,具体参考官方文档。
上图中,球体没有参加烘烤过程,但是使用了light probe系统,效果也接近参加烘烤。然而这时的球体是动态的。
上图可以看出来,关闭光源后,移动球体,球体表面会随着位置发生微妙的光照变化,这正是light probe系统的效果。
总结:GI可以通过预先计算,从而烘烤整个场景中所有staticlightmapping物体,使他们的表面反射光源,相互影响,造成真实的效果。其中包括两种主要方法:
1)bake,对于场景中不变的物体,使用bake。bake只对静态物体生效,然后会造成静态场景和动态物体脱节。
2)light probe,对于场景中的动态物体,使用这个系统。布置好所有lightprobe之后,参与烘烤。然后对动态物体启用这个属性,物体可以基本达到动态的烘烤效果。
0 0
- Unity3D中的Grobal Illuminit…
- Unity3D中的Grobal Illuminit…
- [unity3d] iTween文档解析(3) (…
- 【转载】Unity3D 控制物体移…
- [unity3d] iTween文档解析(1…
- [unity3d] iTween文档解析(2…
- oracle 中的INTERVAL 函…
- android中的 gravity 和…
- java中的LinkedList 和 …
- compizconfig 中的方框…
- MATLAB中的eye() 函数 …
- Android 中的 Service 全面…
- OpenGL-ES 中的 mipmapping …
- About grobal variable--a tip
- unity3D中阴影渲染的shadow a…
- unity3D中阴影渲染的shadow a…
- inotify -- Linux 2.6 内核中的文…
- python中的web server 和 request …
- cocos2d-x中CCCallFunc系列动作
- cocos2d-x内存管理初步窥探之retai…
- cocos2d-x 使用 cocostu…
- coco2dx使用控制台输出LOG信息
- unity3D中阴影渲染的shadow a…
- Unity3D中的Grobal Illuminit…
- Unity3D中摄像机常用技巧Dolly&nbs…
- The Zen of Python / Python之禅
- python\split\join
- 8051寄存器
- java中Map集合总结
- tx标签配置事务却无法回滚
- 【Python]五分钟理解元类(Metaclasses)【转载】
- 作业7.10