Unity 中的照明基础知识

Unity 中的光照可能会让人望而生畏,因为有很多方法可以为您的游戏提供光照,具体取决于您的目标结果。从光照贴图到点光源和聚光灯,很难决定在游戏中使用哪一个。

虽然 Unity 可以轻松地在您的游戏场景中放置动态灯光并使您的游戏看起来很棒,但当您在 Unity 的许多灯光类型之间进行选择时,它可能会变得有点复杂,每种灯光类型都具有独特的属性和效果。

本文将介绍 Unity 中的照明基础知识,并帮助您掌握 Unity。事不宜迟,让我们直接进入。

在本文中:

  • 直接照明和间接照明

  • Unity 中的灯光类型

    • 定向光

    • 点光源

    • 聚光灯

    • 区域光

  • Unity 中的灯光模式

    • 实时照明

    • 混合照明

    • 烘焙照明

先决条件

本文假设读者至少对 Unity 有基本的了解和经验,但如果您是 Unity 新手,它仍然会提供价值。如果您是新手,可以在此处下载 Unity。

直接照明和间接照明

要了解 Unity 中的光照,首先必须了解直接光照和间接光照的概念。

在 Unity 中,直射光是具有零或一反射的光。当直视光源或凝视直接接收光源的物体时,通常会观察到直接照明。

另一方面,间接照明是在到达观察者眼睛之前有两次或多次反射的光。这是两种灯类型的图片描述。

在 Unity 中,具有四次及以上反射的间接光称为全局照明 (GI)。GI 是一个模拟一个表面的光如何影响另一个表面的系统,它是 Unity 照明的重要组成部分,有助于为场景提供逼真的外观。


超过 20 万开发人员使用 LogRocket 来创造更好的数字体验了解更多 →


您可以通过转到Window > Rendering > Lighting > Lightmap Settings来设置和控制场景中的反弹次数。

现在我们了解了 Unity 中的直接光和间接光,让我们看看游戏引擎中不同的光类型。

Unity 中的灯光类型

Unity中有四种类型的光。要访问它们,您所要做的就是右键单击您的层次结构。这是它的外观:

如您所见,Unity 中的四种灯光是:

  • 定向光

  • 点光源

  • 聚光灯

  • 区域光

现在,我们将详细研究这些灯光类型。为了测试它们,我创建了一个示例场景。正如您在下面看到的,场景完全黑暗,因为所有默认照明都已被移除。

定向光

定向光代表来自游戏世界范围之外的位置的大而遥远的光源。这种类型的光用于模拟太阳对场景的影响。下面是一个示例,说明在向其添加定向光时前一个场景如何变化。

定向光的位置在 Unity 中无关紧要,因为定向光对场景中的所有游戏对象施加相同的影响,无论它们与灯光的位置相距多远。

您可以使用定向光上的变换工具来改变光的角度,模仿日落或日出。

点光源

与定向光不同,点光源位于空间中的一个点,并且向各个方向均匀地发出光。点光源也有一个指定的范围,只影响这个范围内的物体,用黄色圆圈表示。

物体离点光源越远,受光的影响就越小。如果你把一个物体带出圆圈,它根本不会受到光线的影响。

Unity 中的点光源是根据平方反比定律设计的,该定律指出“辐射的强度与距离的平方成反比”。这意味着从光源到观察者的光强度与观察者到光源的距离的平方成反比。

点灯可用于创建街灯、篝火、审讯室中的灯,或任何您希望灯光仅影响特定区域的任何地方。

聚光灯

点光源和聚光灯是相似的,因为与点光源一样,聚光灯有一个特定的位置和范围,光线会在该位置和范围内落下。

然而,与向所有方向均匀发射光的点光源不同,聚光灯向一个方向发射光并被限制在一个特定的角度,从而产生一个锥形区域的光。


来自 LogRocket 的更多精彩文章:

  • 不要错过来自 LogRocket 的精选时事通讯The Replay

  • 使用 React 的 useEffect优化应用程序的性能

  • 在多个 Node 版本之间切换

  • 了解如何使用 AnimXYZ 为您的 React 应用程序制作动画

  • 探索 Tauri,一个用于构建二进制文件的新框架

  • 比较NestJS 与 Express.js

  • 发现TypeScript 领域中使用的流行 ORM


聚光灯可用于制作灯、路灯、手电筒等。我喜欢用它们来制作汽车的前照灯,如下图所示。

区域光

与聚光灯一样,区域光仅投射在一个方向上。但是,它们以矩形形状发射。与前面提到的三种灯光不同,Area Lights 需要烘烤才能生效。我们稍后会详细讨论烘焙,但这里有一个区域光在场景中使用时的示例。

现在我们已经了解了不同的灯光类型,让我们看看 Unity 中的不同灯光模式。

Unity 中的灯光模式

Unity 中有三种主要的灯光模式:

  • 即时的

  • 混合

实时照明

在 Unity 中,所有对光的计算,即阴影、亮度、位置等,都是在每一帧中计算和更新的。使用实时灯光模式意味着场景中与该灯光相关的所有内容都是动态的,并且会随每一帧更新。

简而言之,实时光照模式为场景提供直接光照并更新每一帧,因此,当光照和游戏对象在场景中移动时,光照会立即更新。这种灯光模式对于照亮角色或其他可移动的几何图形很有用。

默认情况下,平行光、聚光灯和点光源是实时的,但它们始终可以更改为烘焙和混合。实时灯光具有很高的计算价值,并且可能是 CPU 和 GPU 密集型的。

烘焙照明

与实时光照不同,在烘焙光照模式下,编辑器对编辑器中的光照执行所有光照计算,并将数据(作为纹理)作为光照数据存储在系统磁盘上。然后,当在运行时重新应用时,它会使用保存的纹理照亮表面。

烘焙光照用于模拟场景的真实光照,同时降低运行游戏的 CPU(中央处理器)或 GPU(图形处理器)成本。Baked Lighting 是轻量级的,用于不需要实时光照计算开销的手机游戏或场景。

当您在 Unity 中将灯光设置为烘焙模式时,您会告诉 Unity 灯光在运行时不会移动。因此,如果您将烘焙光投射到可移动或可破坏的物体上,当物体移动或被破坏时,灯光将保持不变,从而创建一个不真实的场景。为了避免这种情况,所有受烘焙灯光影响的对象都必须在检查器中标记为“静态”。

这是一个很棒的视频,它进一步解释了 Unity 中的光照烘焙。

混合照明

顾名思义,混合光照模式结合了实时光照和烘焙光照。混合光照允许灯光具有烘焙灯光的所有优点,同时保持实时灯光提供的移动物体的动态阴影,所有这些都来自同一个光源。

如果这对您来说难以理解,可以这样想:混合照明允许单个光源同时提供直接和间接光。与 Baked 或 Real-time Light 相比,使用混合光涉及每个场景的更多操作计算,因此不建议使用它来构建轻量级的东西,例如手机游戏。

极简简历(polebrief.com),免费建立制作网站,超多优质简历模板!

结论

如果您正在阅读本文,那么恭喜您!您现在了解了 Unity 中照明的基础知识。全面了解 Unity 中有关照明的所有内容是一段复杂的旅程,但既然您了解了基础知识,那么您已经成功了一半。我希望你喜欢这篇文章。下一篇见!

LogRocket主动显示和诊断您的应用程序和网站中最重要的问题

成千上万的工程和产品团队使用LogRocket来减少了解技术和可用性问题的根本原因所需的时间。使用 LogRocket,您将减少与客户来回对话的时间,并消除无休止的故障排除过程。LogRocket 让您可以花更多时间构建新事物,而减少修复错误的时间。

你可能感兴趣的:(unity,游戏引擎)