灯光(Light)
灯光是组成游戏场景的重要元素,网格模型和材质决定了场景和物体的形状和质感,光源则决定了整体环境的明暗,色彩和氛围,而一个游戏效果的好与坏主要的感觉就是靠灯光来实现的,合理的使用光源能创造出完美的视觉效果。
Unity光源的种类
Unity提供了4种光源,只要设置合理几乎可以模拟真实环境中的任何光源。
- Directional Light:方向光源。该光源可以放置在任意位置无穷远都可以,位置不会影响光的强弱,可以照亮场景内的一切对象,就类似于自然界中的太阳光。同时方向光源也是最省资源的光源。
- Point Light:点光源。点光源是从一个位置向四面八方发射光线,影响所有该范围内的对象,类似于我们生活中的一个灯泡的效果,当然如果要计算点光源阴影的话比较耗费资源,不过一般手游我们一般都是使用烘培的阴影,几乎不需要点光源来计算阴影,实时阴影都使用的比较少。
- Spotlight:聚光灯。灯光从一个点发出,然后在一个方向,按照一个圆锥形的范围照射,处于锥形范围内的对象都会受到光线照射,类似汽车车灯或者手电筒的照射效果。
- AreaLight:区域光源。该类型的光源不能用于实时光照,主要用于光照烘培的时候使用
光源属性详解
光源的创建,基本Untiy中创建物体的方式都是相似的,直接右键在层级Hierarchy视图中弹出菜单中创建,还有就是直接在菜单栏中创建。
创建了过后我们来看看灯光组件的详细参数
(1)type 选择灯光的类型,即是刚才讲解的4种类型可选择 (2)Range 范围,用于控制点光源和聚光灯的光线从光源中心发射出去的距离,DirectionalLight没有。 (3)Spot Angle 聚光灯的角度,这个用于控制锥形的范围,只有聚光灯才有的选项。 (4)color 灯光的颜色,例如霓虹灯可以有各种颜色,大家可以根据光源实际情况来进行调节。 (5)Intensity 强度,用于调节灯光亮度大小,一般都会有一个默认值的 (6)Cookie 这个用于指定拥有alpha通道的纹理,是光线在不同的地方有不同的亮度。如果光源是聚光灯或者方向光的话,可以指定一个2D纹理,如果是点光源,则必须是一个cubemap的纹理。 (7)CookieSize 控制缩放Cookie投影
ShadowType 阴影类型(pro版本才支持)
- no shadow 没有阴影
- hard shadow 硬阴影,边缘锯齿会比较明显,当相对消耗较少资源
- soft shadow 软阴影,锯齿处理的比较好,阴影柔和真实,但是会消耗较多资源,而且一般手游也不会使用实时阴影。 默认设置下,只有directional light光源才可以开启阴影,其他两种类型的话默认情况下会弹出提示,方向光源在forward模式下才可以启用阴影。一般我们也不会推荐开启点光源,和聚光灯的阴影,如果想要开启的话需要在playerSetting把渲染模式改为deferred Lighting即可。
渲染的三种模式:
VertexLit:顶点光照。光照效果最一般的,不支持阴影,一般用于配置较差和配置受限制的移动终端机器。 Forward:正向着色,能够很好的支持光照效果,不支持点光源和聚光灯的阴影。一般采用烘培的方式来处理更多的阴影。 Deferred Lighting:延迟光照,支持最佳的光照效果以及所有类型的光照投影,但是需要硬件支持,pro模式才有。
阴影参数
- Strength 强度,就是控制阴影的强度,取值范围从0-1,0的时候没有阴影,1的时候阴影为纯黑色,这个根据实际的环境来调整即可。
- Resolution 分辨率,用于控制阴影的质量,有5种质量可以选择
- Bias 偏移值,用于设置灯光空间的像素位置与阴影贴图的值比较的偏移量,简单来说就是,阴影和物体之间的距离,取值范围是0-0.5,值太小的话对象表面会产生自阴影的错误,值过大的话阴影又会偏移的较远不符合实际的情况。
- Softness 柔化,这个用于控制阴影的模糊采样区的偏移量,只有方向光并且选择软阴影的时候才有效
- Softness fade 柔化淡出,控制阴影根据摄像机的距离进行淡出的程度。只有方向光类型为软阴影的时候才会启用。
- Draw halo 绘制光晕,开启光晕效果
Flare 耀斑,指定耀斑镜头光晕的效果
RenderMode 渲染模式
auto ,自动,根据光源的亮度以及运行时的质量设置,来确定光源的渲染模式 Important ,重要,光源进行逐像素渲染,一般用于非常重要的光源 Not Important ,不重要,光源总是以最快的速度渲染
- Culling Mask ,剔除遮蔽图,选中的层所关联的游戏对象将受到光源照射的影响,较为有用。特别是这里需要剔除掉已经进行了烘焙贴图的部分,特别是地形以及带了自发光的部分。