Unity3D中的Grobal Illuminit…
2015-06-29 12:13
274 查看
Grobal
Illuminition,全局照亮,这个系统模拟了场景当中所有物体的表面对光线的反射,从而对其他物体造成的影响。普通的光照系统只是简单的计算光源对于某个表面的的影响,例如表面的颜色,表面对光线的吸收强度等,而GI在此基础上还要考虑来其他物体表面反射过来的光线,从而达到细致而真实的效果。
GI要计算物体之间的相互影响,这无疑要耗费大量的资源。所以最基础的GI方法是Bake。所谓烘烤,就是先设定好场景当中的static
lightmapping物体,这些物体在场景中是静态的,不会因为游戏运行而改变自身的状态。烘烤过后,物体表面因为漫反射而更加明亮,而且也会出现一些真实的细节。
正如上图所示,两个光源之间的光线变化更加柔和真实。
把光源关掉,可以观察bake的实际效果。
然而这种烘烤效果是一种precomputed的方法,也就是提前计算好的,只能作用于静态物体之间。此时移动球体,球体表面不会发生任何变化。
可是,真正的游戏场景中,往往出现大量动态的物体,例如玩家的人物。这些动态的物体出现在烘烤过的场景,往往会出现一些disconnected的效果,显得人物和场景非常格格不入。
如图,把球体设置成动态物体,不参与烘烤。明显可以看出球体和场景的脱节。
正是因为这种原因,unity提供了一种可以是物体动态参与GI的方法,light
probe系统。光源探头系统,可以在场景当做布置非常多光源探头,这些探头可以感知烘烤过的场景中,特点位置以及周围的光线情况,从而记录在系统当中。当动态物体启用light
probe属性后,就可以利用这些光照信息动态的参与GI。
如图,黄色的小黄点就是场景中的光源探照。光源探照是可以附加在场景中任何一个物体上的,而且这些探照器是全局共享的。对于如何摆放探照器,总结的方法是,1)动态物体集中运动处放置比较密集的探照器,可以制造出更好的效果。2)探照器应该布置成一种层次结构,具体参考官方文档。
上图中,球体没有参加烘烤过程,但是使用了light probe系统,效果也接近参加烘烤。然而这时的球体是动态的。
上图可以看出来,关闭光源后,移动球体,球体表面会随着位置发生微妙的光照变化,这正是light probe系统的效果。
总结:GI可以通过预先计算,从而烘烤整个场景中所有static
lightmapping物体,使他们的表面反射光源,相互影响,造成真实的效果。其中包括两种主要方法:
1)bake,对于场景中不变的物体,使用bake。bake只对静态物体生效,然后会造成静态场景和动态物体脱节。
2)light probe,对于场景中的动态物体,使用这个系统。布置好所有light
probe之后,参与烘烤。然后对动态物体启用这个属性,物体可以基本达到动态的烘烤效果。
Illuminition,全局照亮,这个系统模拟了场景当中所有物体的表面对光线的反射,从而对其他物体造成的影响。普通的光照系统只是简单的计算光源对于某个表面的的影响,例如表面的颜色,表面对光线的吸收强度等,而GI在此基础上还要考虑来其他物体表面反射过来的光线,从而达到细致而真实的效果。
GI要计算物体之间的相互影响,这无疑要耗费大量的资源。所以最基础的GI方法是Bake。所谓烘烤,就是先设定好场景当中的static
lightmapping物体,这些物体在场景中是静态的,不会因为游戏运行而改变自身的状态。烘烤过后,物体表面因为漫反射而更加明亮,而且也会出现一些真实的细节。
正如上图所示,两个光源之间的光线变化更加柔和真实。
把光源关掉,可以观察bake的实际效果。
然而这种烘烤效果是一种precomputed的方法,也就是提前计算好的,只能作用于静态物体之间。此时移动球体,球体表面不会发生任何变化。
可是,真正的游戏场景中,往往出现大量动态的物体,例如玩家的人物。这些动态的物体出现在烘烤过的场景,往往会出现一些disconnected的效果,显得人物和场景非常格格不入。
如图,把球体设置成动态物体,不参与烘烤。明显可以看出球体和场景的脱节。
正是因为这种原因,unity提供了一种可以是物体动态参与GI的方法,light
probe系统。光源探头系统,可以在场景当做布置非常多光源探头,这些探头可以感知烘烤过的场景中,特点位置以及周围的光线情况,从而记录在系统当中。当动态物体启用light
probe属性后,就可以利用这些光照信息动态的参与GI。
如图,黄色的小黄点就是场景中的光源探照。光源探照是可以附加在场景中任何一个物体上的,而且这些探照器是全局共享的。对于如何摆放探照器,总结的方法是,1)动态物体集中运动处放置比较密集的探照器,可以制造出更好的效果。2)探照器应该布置成一种层次结构,具体参考官方文档。
上图中,球体没有参加烘烤过程,但是使用了light probe系统,效果也接近参加烘烤。然而这时的球体是动态的。
上图可以看出来,关闭光源后,移动球体,球体表面会随着位置发生微妙的光照变化,这正是light probe系统的效果。
总结:GI可以通过预先计算,从而烘烤整个场景中所有static
lightmapping物体,使他们的表面反射光源,相互影响,造成真实的效果。其中包括两种主要方法:
1)bake,对于场景中不变的物体,使用bake。bake只对静态物体生效,然后会造成静态场景和动态物体脱节。
2)light probe,对于场景中的动态物体,使用这个系统。布置好所有light
probe之后,参与烘烤。然后对动态物体启用这个属性,物体可以基本达到动态的烘烤效果。
相关文章推荐
- unity3D中阴影渲染的shadow a…
- UnityC# MD5验证
- Unity3D学习笔记第一课
- unity, List namespace
- unity5, UGUI刺穿问题解法
- unity架构原则(摸索、增补中)
- (译)Cg Programming/Unity(Cg编程/Unity)
- Unity3D之AssetBundle学习:Android上运行笔记
- [Unity-24] Unity的四种加载场景的方法
- unity手游《摩卡世界online》全套源码(服务端+客户端+数据库)
- unity资源管理
- Unity炸弹爆炸伤害(群攻伤害)
- 学习笔记:Unity战斗卡牌游戏(一)-----NGUI基础组件使用及代码修改获取
- 游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
- unity, remove a scene from build settings
- Unity 脚本学习总结
- Unity3d之A*算法在游戏中的应用(一)
- unity, read text file
- Unity 脚本优化
- Unity性能优化