Unity基础(二)Light灯光系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity基础(二)Light灯光系统相关的知识,希望对你有一定的参考价值。

参考技术A Unity 提供的 4大光源之一 平行光 可以把它想象成 太阳

Unity4大光源之一 聚光灯 可以把它想象成 手电筒

我们来了解一下Spot面板里面有什么

Range :聚光灯的范围

Spot Angle :聚光灯的照明角度

其他的在1-1图中有介绍

Unity4大光源之一 聚光灯 可以把它想象成 路灯

Range :点光源的直径/范围

Unity4大光源之一 聚光灯 可以把它想象成 灯条

而 区域光  和前面3个有稍稍不同看翻译

Lens Flare平行光中,一项 Flare 可添加光晕文件

Flare : 光晕需要提供Flare文件

Color : 光晕的颜色

Brightness : 光晕的亮度

FadeSpeed : 光晕的淡化速度

lgnoreLayer : 需要忽略的图层

Directional : 是否是定向光

在Unity中控制我们的渲染的面板就是Lighting面板那么我们怎么打开他呢如图6-1

Window->Rendering->LightingSettings

点击Lighting Settings后我们就到了Lighting面板,在Environment中的Enviroment Lighting 的Source选择的是环境中的物体,受什么环境光的影响。我这里选的是SkyBox,就是说无体表面的颜色会跟随天空盒的影响而变化。

Skybox Material : 天空盒材质

Sun Source : 太阳光

Source :天空盒环境光/颜色

intensity Multiplier : 光的强度

Environment Reflecrions : 环境光反射

Lightingmapping Setting这个是对烘焙的设置(很重要),有两个模式Progressive(渐进式)和 Enlighten。默认模式是Progressive(渐进式)

indirect Resolution(间接光分辨率)

Lightmap Resolution(光照贴图分辨率)

Lightmap Padding(光照贴图间隔)

Lightmap Size(光照贴图尺寸)。最大为2048,越大烘焙的时间以及贴图的大小就越大

Compress Lightmaps(压缩光照贴图)

Ambient Occlusion(环境光遮蔽)

Final Gather(最终收集器)

Directional Mode(平行模式)

Indirect Intensity(间接光强度)

Albedo Boost(反照率增强)

Lightmap Parameters(光照贴图参数)

Fog :启用或禁用场景中的雾效,对于deferred rendering(延迟渲染)雾效并不适用,对于延迟渲染,后处理雾效可能能满足需要。

Color:雾的颜色。

Mode :设置雾效随着相机距离变化的累积方式。Exponential Squared(指数平方),Exponential(指数),Linear(线性)。

Density : 密度

Holo Texture(光晕贴图):在光源周围绘制光晕纹理。

Holo Strength:光晕的强度。

Flare Fade Speed:耀斑褪色速度。

Flare Strength:定义耀斑的可见度。

Spot Cookie:聚光灯cookie

Unity-LightMap

烘焙:把灯光信息写到贴图里 比如影子 AO 这样就可以不用实时灯光 是节省硬件资源的一种较好的方法

Realtime GI(Global Illumination),实时全局光照

首先来说说GI是干啥的,非常粗略的来描述下,如果说我们以前的光照系统就是由光源 - 物体 - 视点组成的话,那么全局光照系统就是由光源 - n多环境反射光 - 物体 - 视点。就是说GI额外包括了环境反射光的计算,它可以使得渲染出来的场景物体间的光影交互更为真实。

如果是离线烘焙的话,n多的环境反射光就是通过辐射度算法或者是光线追踪算法一点点计算出来的,但是实时渲染没有这么多的时间。为了实现实时的GI,简单的说来,Unity(Enlighten GI)需要预计算一些信息,这些信息大概包括场景间物体之间的位置、反射关系,以及一个环境反射树(这些都是我瞎猜的),在实时渲染时,利用这些信息Unity会动态生成一张间接光照贴图,像原先的Lightmap一样只不过上面记录的是物体表面受到间接光的信息,这样在实时渲染时就会看到物体受到反射光的影响了。

不过多数情况下如果说你的场景中不存在光线变化或是动态的自发光材质,还是固定镜头的话(没错,我说的就是RPG),GI对于游戏来说仍然是没有用处的,所有GI能做到的事情用简单的Lightmap就能达到同样的效果。现在问题来了,Unity配合GI又搞了一个新的烘焙系统,这个系统要怎么玩儿呢。

首先,现在当你说烘焙时一定要弄明白你想烘焙的是Realtime GI所使用的间接光照图和场景树信息还是Static Lightmap,然后以此决定使用光源的类型是Realtime/Mixed/还是Baked。首先来说烘焙的方式,在Lighting面板中Precomputed Realtime GI 与Baked GI分别对应Realtime GI与Static Lightmap的烘焙。

Unity在4.X版本里面使用的是Autodesk的Beast。

Beast的缺点:

Beast只能烘焙静态的光照贴图,而不支持动态光照。一般而言,使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来大家就可以喝喝咖啡,或者直接下班回家了,因为整个烘焙过程可能需要几分钟、几小时,甚至是更长的时间。这样的过程还不一定得到正确的结果,如果发现前面的烘焙结果存在问题,还要重新返回到第一步,直至得到满意的烘焙结果。这样的过程对于广大开发者来说肯定是一个不太友好的过程,势必会影响大家的工作效率。

表面信息(Albedo)和凹凸(Normals)信息

烘焙光照所产生出来的贴图,是无法在游戏运作的时候变更运算的,因此被定义为静态(Static),虽然仍可在这层贴图上继续迭加光源计算,但两者已无法交互运算,通常我们采用这光照法来让低阶的手机能顺利执行,解决光在游戏中运行的效能问题。

虽然传统的静态光照贴图无法在游戏执行时改变场景光照条件,但预先计算的实时全局光照系统能帮我们实时运算复杂的场景光源互动,透过这种方法,就能建立昏暗的环境带有丰富的全局光照反射,并实时反映光源的改变。好比做个日晷,阴影的位置和颜色会随着光源移动改变,这在原本的烘焙光照系统是无法达成的。

技术分享

 

 

 

 

 

参考资料

 

以上是关于Unity基础(二)Light灯光系统的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d_Light Probe使用方法

unity3d Light Probe不产生阴影。

Unity基础(四)Unity灯光

小白_Unity引擎_Light光照探针技术

Unity-LightMap

Unity-2017.2官方实例教程Roll-a-ball