欢迎大家继续 Unity 游戏编程进阶 本节我们主要介绍
Unity 中的四种基本光源和它们的属性 本节将采用
PPT 讲解加项目演示的方式介绍光源的属性
项目演示环节,我们演示了光源类型和属性在《慕课英雄2》的具体应用
希望大家可以根据自己的专业基础和学习能力,从以下方法中选择一种来学习 第一种方法,先看
PPT 讲解,对相关知识要点有一个系统的了解 然后观看项目演示视频,学习知识要点的运用。
第二种方法,先看项目演示视频,了解知识要点的具体应用 再回到 PPT 讲解阶段,有针对性的学习相关的知识要点。
第三种方法,跳过 PPT 讲解,直接进入项目演示 通过理解项目中的知识要点的运用,完成相关知识要点的学习 不需要回顾 PPT 讲解。
下面进入 PPT 讲解阶段 Unity
提供了 四种基本光源,分别是点光源、 方向光、 聚光灯、
面光源 我们将在接下来的课程中一一介绍
点光源从光源位置向所有方向发射出强度相等的光线 光的强度在传输过程中不断衰减
当传输距离达到我们预先为它设定的极限距离时,强度衰减为 0
点光源适合用来模拟灯笼、 火把等局部光照 方向光不会衰减
它以相同的强度和方向照亮空间中的所有物体。
方向光的位置 没有任何意义。
我们将方向光对象放置场景中任何位置 方向光通常用来模拟那些体积较大
距离游戏场景非常远的光源,比如日光和月光
聚光灯从光源位置开始向某个特定的方向照射
照射一个圆锥的空间区域,在传播过程中不断衰减 聚光灯通常适用模拟人造光源,比如手电、
车灯、 探照灯 面光源使用一个矩形来定义
光线从矩形的正面出发,照亮矩形前面的一片区域 面光源可以从多个方向照亮一个物体,能产生更加柔和的照明效果
通常用于模拟广告灯箱,或者靠近玩家的一组灯光 面光源需要大量的计算资源,无法作为实时光源适用
我们只能通过烘焙光照贴图的方式来使用面光源 关于面光源的具体使用方法,我们会在后续的课程进行介绍
为了模拟现实 世界中各种各样的光源,Unity
为光源组件提供了很多配置参数 接下来,我们对这些参数逐个进行介绍。
首先是光源的类型 我们可以在 Tape 属性中将光源设置为方向光、
点光源、 聚光灯或者面光源 不同光源种类的相关属性也略有差别。
点光源和聚光灯需要设置光照范围 聚光灯除了范围外,还需要设置光斑夹角。
面光源需要设置宽度和高度 Baking 属性。
Baking 的意思就是烘焙 可以选择的属性包括实时──Realtime、
烘焙——Baked 以及 Mixed——混合 Baking
属性和全局光照有关,我们将在后续课程进行详细讲解 光源的 Color
属性,用于设置光源的衍射 Intensity
用于设置光源的强度,Bounce Intensity 用于设置间接光照的强度
我们用一个例子来说明光源 Intensity 和 Bounce Intensity
之间的关系 本页 PPT 所示场景中,我们用一个方向光来模拟太阳光 我们通过更改
Intensity 属性的值,来控制光源直接照射区域的亮度 通过改变
Bounce Intensity 属性的值,来控制光源无法直接照射,但能够间接影响区域的亮度
[空白_音频] Shadow Type
用来设置光源产生的阴影类型 可选的取值包括无阴影——No
Shadows、 硬阴影——Hard Shadows 和软阴影——Soft
Shadows Cookie 属性
通过给光源添加一层遮罩纹理,来改变光源照射光斑的形状 一个比较形象的例子就是蝙蝠侠电影中,蝙蝠侠在探照灯前面
增加了一个遮罩,在云彩上打出了蝙蝠的形状 这里需要注意,方向光和聚光灯的
Cookie 使用普通纹理; 点光源的 Cookie 使用
Culling Mask 纹理 第一人称射击游戏,通常使用
Spot Light 来模拟玩家的手电筒效果 真实世界的手电筒由于做工等原因,打出的光斑并不是完全均匀的
为了模拟真实的光斑,我们可以用一张带 α 通道的贴图 设置聚光灯的 Cookie 属性。
这样,当光线照射到物体表面时 引擎会根据贴图的 α 通道,生成明暗变化的效果
接下来是 Halo 属性
勾选 Draw Halo 后,Unity 会在光源所在的位置绘制一个球形光晕 本页
PPT 图中,淡蓝色的点光源勾选了 Halo 属性 Flare
属性用来设置光源产生的镜头光晕效果 如本页
PPT 中的橘黄色光源所示 Render Mode
用于设置光源的渲染方式,可选的值包括 自动——Auto、
重要——Important、 不重要——Not Important 对于重要的光源
Unity 会以逐像素的方式渲染被照射到物体
这种渲染更加精细,能够产生阴影,但需要消耗较多的计算资源 对于不重要的光源
Unity 会以逐顶点,或者逐对象的方式来渲染被照射到的物体
这种渲染方式速度较快,但是质量不如逐向式的渲染方式 不能产生阴影。
Unity 会自动为重要程度为 Auto 的光源
选择渲染方式 Culling Mask
设置光源所能照射到物体类型 可选项为当前项目中的 Layer。
只有被选中 Layer 包含的游戏对象
才能受到这个光源的影响 下一节我们将介绍
Unity 中的阴影 下面是演示环节
我们将演示如何为玩家添加手电筒效果