Unity3D自带功能:灯光及光照烘焙.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Unity3D自带功能:灯光及光照烘焙.pdf》由会员分享,可在线阅读,更多相关《Unity3D自带功能:灯光及光照烘焙.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Unity3D 自带功能:灯光及光照烘焙 这一篇比较偏重于功能介绍,具体的实例操作请参考其他文章:未完成 游戏场景中灯光照明的构成 现实生活中的光线是有反射、折射、衍射等特性的。对这些基本特性的模拟一直以来都是计算机图形图像学的重要研究方向。在 CG 中,默认的照明方式都是不考虑这些光线特性的,因此出来的效果与现实生活区别很大。最早期的时候,人们利用各种方式来模拟真实光照的效果,比如手动在贴图上画上柔和阴影,或者用一盏微弱的面积光源去照明物体的暗部以模拟漫反射现象等等。然后出现了所谓的高级渲染器,用计算机的计算来代替我们的手工劳动来进行这个“模拟”的工作.在漫长的发展过程中,出现过很多很多计算
2、方案,总体上分为这样几类:直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的 GI(Global Illumination);不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的 FG(Final Gathering);完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的 AO(Ambient Occlusion);将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的 Lightmap。不论是 GI 还是 FG,计算量都是非
3、常大的,一帧图片需要几十分钟甚至几十小时来渲染,所以很难被应用在游戏设计领域.因此在游戏设计领域,光照贴图技术依然是目前的主流方式.由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object),而我们的游戏场景中几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。随着技术的发展以及计算机计算能力的提高,也许在未来,我们能够直接在游戏场景中进行动态的全局光照模拟
4、也说不定呢。新版 Unity3D 中就已经出现了 Realtime Global Illumination,虽然这个技术还处于雏形阶段,所需要的计算量依然庞大,但确实为我们展示了一个令人激动的前景。当然,技术是技术,产品是产品。技术是为产品服务的,再先进的实时全局光照系统,对于像素风格的游戏场景的提升也是几近于 0。“选择合适的技术来完善我们的产品和制作流程”,以及“根据现有技术来设计产品和制作流程”,说的其实是同一个意思。1.直接照明(Direct Lighting)Unity3D 中的直接照明主要来源于各种灯光物体,而灯光物体本质上是空物体加上灯光组件.直接照明可以产生阴影,但光线不会反射
5、、也不会折射,但可以穿透半透明材质物体。1.1 灯光类型(Lights)Unity3D 中默认可以创建这么几种灯光:聚光灯、点光源、平行光、面积光,另外还可以创建两种探针(Probe):反射探针(Reflection Probe)和光照探针组(Light Probe Group)。Unity 中可以创建的灯光类型物体 平行光 平行光通常用来做阳光,Unity3D 新建场景后会默认在场景中放置一盏平行光。平行光不会衰减。unity_lighting04。pngType:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的。Color:灯光颜色 Mode:灯光照明模式,每种模式对应 Ligh
6、ting 面板中一组设定 Realtime:对应 Realtime Lighting Mixed:对应 Mixed Lighting Baked:对应 Lightmapping SettingRealtime Lighting 是新出现的一种烘焙光照技术,它并不像传统的烘焙技术一样直接烘焙间接光照颜色和亮度信息到光照贴图上,而是烘焙物体和物体之间的关系信息,比如 A 面对 B 面有漫反射效果,B 面对 C 面有漫反射效果等等。这样一来,只要物体之间的关系不变(也就是所有的静态物体都不移动位置),就不需要重新烘焙,从而使得我们可以在场景中随意运用动态光源(dynamic lights)。而传统的
7、 Lightmapping 光照贴图方式则不支持动态光源效果(改变光源不会改变场景光照).Realtime Lighting 比 Lightmapping 要更耗费系统资源,所以手游上就不要考虑了.Intensity:灯光强度 Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘 Shadow Type:阴影贴图的类型 No Shadows:无阴影贴图 Hard Shadows:硬阴影贴图 Soft Shadows:光滑阴影边缘(也就是阴影模糊效果)Baked Shadow Angle:烘焙阴影的角度 Realtime Shadows Strength:实时阴影强度
8、 Resolution:阴影贴图分辨率 Bias:阴影偏移,通常适当增加这个值来修正一些阴影的artifact Normal Bias:法线偏移,通常适当减少这个值来修正一些阴影的 artifact(不同于 Bias 的使用场合)Near Plane:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影 Cookie:Cookie 相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果 Cookie Size:调整 Cookie 贴图大小 Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的 Flare:Flare 可以使用一张黑白贴图来模拟灯光在
9、镜头中的“星状辉光”效果 Render Mode:渲染模式 Culling Mask:点光源 点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减unity_lighting01.pngRange:光线射出的范围,超出这个范围则不会照亮物体 聚光灯 聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减unity_lighting02.pngSpot Angle:灯光射出的张角范围 面积光 面积光模拟一个较大的发光表面对周围环境的照明效果,通常面积光的灯光亮度衰减很快,阴影非常柔和。Unity3D 的面积光仅在烘焙光照贴图
10、时有效,并不像 Maya的 Area Lights 一样能动态照亮场景。unity_lighting03.pngWidth:面积光宽度 Height:面积光的高度 总的来说,Unity3D 中自带灯光比较简单,根据我们在 Maya中使用灯光的经验,可以很快熟悉这些灯光类型的使用。1。2 阴影类型(Shadow)Unity3D 的灯光可以设置不同的阴影类型,分别是:无阴影、硬阴影、软阴影。要注意的是,不论是硬阴影还是软阴影,本质上都是用阴影贴图模拟的阴影效果,而不是真实光照而自然形成的暗色区域。unity_lighting05.。png 灯光上阴影设置部分会随着 Mode 参数的不同而变化,Re
11、altime Lighting Mode 对应的选项很多,而 Baked Mode 仅对应 Baked Shadow Angle 一项.无阴影 灯光不产生阴影,新建场景后默认生成的平行光就是无阴影的。硬阴影 阴影边缘清晰 软阴影 阴影边缘柔和,有过渡效果 阴影质量设置 虽然我们在灯光的阴影设置中可以调节 Resolution 以提高阴影质量,但真正的阴影质量调节应该在 Quality 面板中来进行,灯光中的阴影 Resolution 参数默认设置是 Use Quality Settings,就是从 Quality 面板的设定中来选择。unity_lighting06.png 从菜单 Edit
12、Project Settings Quality 打开 Quality 面板,这里可以针对不同质量等级设置不同的参数.unity_quality02。png 我们现在先不在这里对 Quality 面板做全面介绍,仅介绍关于阴影的那一部分设置内容:Shadows:在当前质量下是不渲染阴影,还是只渲染硬阴影,还是软硬阴影都渲染 Shadow Resolution:在当前质量下阴影贴图分辨率,这就对应了灯光面板中的 Resolution 参数。Shadow Projection:阴影贴图的投影方式,Close Fit 方式会优化近处的阴影质量,缺点是运动状态下可能会出现一些波动,Stable Fit
13、 方式不会有波动,但质量比较差 有的时候阴影贴图会出错,比如无缘无故多出一条亮缝之类,通常可以选择切换到 Close Fit 方式来解决,如果不想切换的 Close Fit 方式,可以适当降低灯光阴影参数中的 Normal Bias 参数,或者将对应场景物体设置成双面显示。Shadow Near Plane Offset:很近处不渲染阴影 Shadow Cascades:阴影贴图叠加方式,可以是单层、2 层或者 4 层 Cascade Splits:不同层所对应场景区域的比例分配划分Shadow Cascades 是一种阴影贴图算法,比如我们选择 4 层叠加,那么实际上会计算 4 次阴影贴图,
14、每次对应距离摄影机一定距离范围以内的场景物体,而这个距离范围的划分就通过 Cascade Splits 中所显示的紫、绿、黄、红四种颜色区域所占比例来区分.紫色代表最近处的区域,而红色代表最远处的区域。紫色条越窄代表其对应的那一层阴影贴图所对应的场景区域越小,这样一来该区域的阴影贴图精度就很高了。我们可以看到这里的 Shadow Resolution 就对应了灯光面板中的 Resolution 参数。unity_lighting07。png 1.3 渲染路径(Rendering Path)Unity3D 提供两种渲染路径(Rendering Path),对于初学者来说,渲染路径这个概念不是很好
15、理解,大家可以理解成是两种不同的渲染器,分别有利弊就好了。1.3。2 Forward 在 Forward 渲染路径下,每个物体会被每个光源渲染成一个“通道,因此物体受到越多灯光的影响,其渲染次数就会越多。Forward 渲染路径的优势在于,在灯光比较少的情况下,Forward 方式的渲染速度会非常快,处理透明贴图也非常快,还可以使用诸如“多重取样抗锯齿(MSAA)”这样的硬件处理技术技术.但 Forward 渲染路径的渲染速度会随着灯光的增多而迅速变慢,在一些有很多灯光照明的特定场景中(比如高科技室内环境)并不适合使用 Forward 渲染路径。1.3。1 Deferred 使用 Deffer
16、ed 渲染路径,渲染时间不会随着灯光的增多而提高,而是会随着受整体光照影响区域的扩大而提高(也就是说,场景中越多像素被照亮,渲染速度就越慢,但全屏被照亮的情况下,灯光设置复杂度不会进一步影响渲染速度了).Deffered 渲染路径在整体上需要更多的计算量,对于一些移动设备,Deffered 渲染路径还不能支持.新版 Unity3D 的默认渲染路径是 Deffered 渲染,如果场景非常简单,或者希望使用 MSAA,可以自行修改成 Forward 渲染路径。2。间接照明 天光,也就是环境光(Ambient Light),特指来自于天空的漫反射.在 Unity3D 中可以继承“天空球”的颜色作用环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity3D 功能 灯光 光照 烘焙
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内