Unity 光照

本文详细介绍了Unity中的光照系统,包括Directional Light、Spotlight、Area Light和Reflection Probe等,以及全局光照(GI)的概念和设置,强调了光照贴图在游戏设计中的重要性,探讨了Lightmapping Settings和全局光照对场景的影响。

一、光照

       然后出现了所谓的高级渲染器,用计算机的计算来代替我们的手工劳动来进行这个“模拟”的工作。在漫长的发展过程中,出现过很多很多计算方案,总体上分为这样几类:

  1. 直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的GI(Global Illumination);
  1. 不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的FG(Final Gathering);
  1. 完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的AO(Ambient Occlusion);
  1. 将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的Lightmap。
  1. 对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;
  1. 对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。

不论是GI还是FG,计算量都是非常大的,一帧图片需要几十分钟甚至几十小时来渲染,所以很难被应用在游戏设计领域。

因此在游戏设计领域,光照贴图技术依然是目前的主流方式。

由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object),而我们的游戏场景中几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。

     unity3D光照系统Lighting菜单中,一共有6个选项,分别为Directional Light(平行光),Point Light(点光源),Spotlight(聚光灯),Area Light(区域光),Reflection Probe(反射探头),Light Probe Group(光照探头组) 其中前四个为unity中的灯光,如图:


 1.Directional Light(平行光) 

平行光通常是用来做阳光的,unity的默认在场景里放置平行光。平行光不会衰减。


  • Type:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的。
  • Directional(方向光):灯光放在无穷远处,它影响着场景里所有物体。
  • Color:灯光颜色。
  • Mode:灯光照明模式,每种模式对应Lighting面板中一组设定。
    • Realtime:对应Realtime Lighting。
    • Mixed:对应Mixed Lighting。
    • Baked:对应Lightmapping Setting。
Realtime Lighting是新 出现的一种烘焙光照技术,它并不像传统的烘焙技术一样直接烘焙间接光照颜色和亮度信息到光照贴图上,而是烘焙物体和物体之间的关系信息,比如A面对B面有漫反射效果,B面对C面有漫反射效果等等。这样一来,只要物体之间的关系不变(也就是所有的静态物体都不移动位置),就不需要重新烘焙,从而使得我们可以在场景中随意运用动态光源(dynamic lights)。而传统的Lightmapping光照贴图方式则不支持动态光源效果(改变光源不会改变场景光照)。Realtime Lighting比Lightmapping要更耗费系统资源,所以手游上就不要考虑了。
  • Intensity:灯光强度
  • Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘
  • Shadow Type:阴影贴图的类型
    • No Shadows:无阴影贴图
    • Hard Shadows:硬阴影贴图
    • Soft Shadows:光滑阴影边缘(也就是阴影模糊效果)
Hard Shadow和No Shadow对性能消耗的比较小。选择伊宁之后,会出现新的小菜单。Strength代表阴影的强度,数值在0~1之间,1时阴影最明显,0时无阴影。Resolution代表阴影的分辨率,Use Quality Setting表示在游戏开始时根据玩家的选择来设置阴影质量,其他四个依次代表从低分辨率到高分辨率。
  • Baked Shadow Angle:烘焙阴影的角度
  • Realtime Shadows Strength:实时阴影强度
  • Resolution:阴影贴图分辨率
  • Bias:阴影偏移,通常适当增加这个值来修正一些阴影的artifact
  • Normal Bias:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias的使用场合)
  • Near Plane:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影
  • Cookie:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果
  • Cookie Size:调整Cookie贴图大小
  • Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的
  • Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果
  • Render Mode:渲染模式
  • Culling Mask这个用来照亮选择性的部分场景。
2.Point Light(点光源)

          点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减

  • Range光线射出的范围,超出这个范围则不会照亮物体。
3.Spotlight(聚光灯)

聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减

### Unity 光照设置、效果与优化 在 Unity 中,光照的设置和优化是实现高质量视觉效果的关键部分。以下是对光照相关问题的详细解析: #### 1. 全局光照插件 Radiant Global Illumination Radiant Global Illumination 是一款强大的全局光照插件,它能够显著提升场景的真实感和沉浸感[^1]。通过结合实时和烘焙解决方案,该插件能够在不牺牲性能的情况下提供高质量的间接光照效果。对于需要高精度光照的游戏、建筑可视化、VR/AR 和动画项目来说,这款插件是一个理想的选择。 #### 2. Unity 内置光照烘焙 Unity 的内置光照烘焙功能允许开发者将光源的效果预先计算并存储为静态数据。这一过程通过 Lightmapper 完成,Lightmapper 使用材质上的纹理值来评估光线透过物体的方式[^2]。通过这种方式,可以有效减少运行时的计算负担,从而提高性能。 #### 3. 点光源烘焙步骤 为了烘焙点光源(Point Light),可以按照以下方法操作: - 在场景中创建一个点光源(Point Light)。 - 将其 Mode 属性设置为 Baked[^3]。 - 打开 Lighting 设置窗口(Window → Rendering → Lighting),确保 Lighting Settings 中有有效的配置文件。 - 对需要参与烘焙的物体启用 Contribute GI,这些物体将被标记为静态物体,无法动态移动或旋转。 #### 4. 性能优化建议 在 Unity 场景中,优化光照性能可以从以下几个方面入手: - **减少动态光源数量**:动态光源会显著增加渲染开销,因此尽量减少场景中的动态光源数量[^3]。 - **合理使用混合模式**:对于不需要高精度光照的区域,可以使用更简单的光照模型以降低计算成本。 - **调整光照贴图分辨率**:根据物体的重要性调整光照贴图的分辨率,避免不必要的资源浪费。 - **利用 LOD(Level of Detail)**:对于远离摄像机的物体,可以降低其光照质量或细节水平。 ```python # 示例代码:设置光源模式为烘焙 import UnityEngine def SetBakedLight(lightObject): lightObject.mode = UnityEngine.LightMode.Baked ``` #### 5. 效果调整技巧 - **间接光照强度**:通过调整 Indirect Multiplier 参数,可以控制全局光照的整体亮度。 - **环境光探针**:使用 Environment Probes 来捕捉和反射周围的光照信息,从而增强物体表面的真实感[^3]。 - **后处理效果**:结合 Post Processing Stack 插件,添加如 Bloom、HDR 和 Color Grading 等效果,进一步提升画面质量。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值