对于每一个场景灯光是非常重要的部分。网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。你很可能需要在每个场景中设置多个灯光。让他们一起工作需要一点练习但是结果是非常惊人的。
可以通过从菜单中选择 GameObject->Create Other并将其添加到你的场景中。有三种类型的灯光。一旦添加了一个灯光你就可以像操作其他物体一样操作它。此外你还可以通过选择 Component->Rendering->Light为选中的物体添加一个灯光组件。
简单的两个灯光
· 在灯光的检视面板中有许多不同的选项
检视面板中灯光的属性
· 通过简单地改变灯光的颜色(Color),你可为场景添加完全不同的气氛。
明亮,太阳光
黄昏,中度光
诡异的夜光
光照灯光将使你的游戏具有个性和情趣。使用灯光来照亮场景和物体以便创建一个完美的可视氛围。灯光可以用来模拟太阳,燃烧的火光,闪光,炮火或者爆炸,下面给出几个例子。
灯光的检视面板
在 Unity中有三种不同类型的灯光:
• 点光源(Point lights)从一个位置向所有方向发射相同强度的光,就像灯泡一样。
• 方向光(Directional lights)放置于无穷远处并影响场景中所有的物体,就像太阳一样。
• 投射光(Spot lights)从一个点向一个方向发光,像一个车灯一样照亮一个锥形的范围。
属性
• 类型(Type):当前光照物体的类型
• 方向(Directional):一个放置在无穷远的光源。它将影响场景中的所有物体并不会衰减。
• 点(Point):一个从它的位置向所有方向发光的光源,将影响位于它的范围内的所有物体。
• 投射(Spot):照亮一个锥形(Spot Angle)的范围(Range),只有在这个区域中的物体才会受到它的影响。
• 颜色(Color):光线的颜色。
• 衰减(Attenuate):光照是否随着距离而减弱?如果禁用,物体的亮度将在进入或离开它的光照范围时突变。可以用来制作一些特殊的效果。如果是方向光这个参数将被忽略。
• 范围(Range):光线将从光源的中心发射多远
• 投射角(Spot Angle):如果是投射光,这个参数将决定圆锥的角度。
• 阴影(Shadows)(Pro only):将被该光源投射的阴影选项
• 类型(Type):Hard或 Soft阴影,Soft阴影更加的费时。
• 分辨率(Resolution):阴影的细节
• 强度(Strength):阴影的浓度。取值在 0到 1之间
• 投影(Projectio):方向光阴影的投影类型
• 恒定偏移(Constane Bias):世界单元的阴影偏移
• 物体大小偏移 (Object Size Bias):依赖于投影大小的偏移。缺省的值为投影者大小的 1%
• Cookie:你可以为灯光附加一个纹理。该纹理的 alpha通道将被作为蒙版,以决定光照在不同位置的亮度。如果光源是一个投射或方向光,这个必须是 2D纹理。如果光源是点光源,就需要一个 Cubemap。
• 绘制光晕(Draw Halo):如果选择了该选项,一个球形的光晕将被绘制光晕的半径等于范围(Range).
• 闪光(Flare):可选的用于在光照位置上渲染的闪光
• 渲染模式(Render Mode):选择光源是作为顶点光,像素光还是自动的渲染方式。详细信息参考性能考虑部分。参数包括:
• 自动(Auto):渲染方法将在运行时确定,依据附近光照的亮度和当前的品质设置 (Quality Settings)来确定
• 强制像素(Force Pixel):光照总是以每像素的品质来渲染。只将其用于非常重要的效果(例如,玩家汽车的前灯)。
• 强制顶点(Force Vertex):光照总是以顶点光来渲染。
• 裁剪蒙版(Culling Mask):用于将一组物体从光照的影响中排除;参考层部分。
细节在 Unity中有三种类型的光照,每一种都可以调整以适应你的要求。
你可以创建一个包含 alhpa通道的纹理并将它赋给光照的 Cookie变量。这个 Cookie将从光源处投影。Cookie的 alhpa蒙版乘以光照强度,在表面上创建亮的和暗的斑点。这是一种非常好的添加大量复杂效果的方法。
Unity中所有内置的 shader都可以与任何光照类型无缝融合。然而顶点光(VertexLit)shader不能显示 Cookie或阴影。
在 Unity专业版中,所有的光照都可以随意的投射阴影。通过从阴影(Shadows)属性中选择 Hard Shadows或者 Soft Shadows来完成它。参考阴影部分。
点光源
点光源从一个点向所有方向发光。这是最普通的一种光照类型,典型的用于爆炸,灯泡,等等。它们在图形处理器上花费平均成本(尽管点光源阴影是昀花费成本的)
点光源可以具有 cookie-带有 alpha通道的 Cubemap纹理。这个 Cubemap将在所有方向上投影。并且带有 Cookie的点光源将不会随着距离而衰减。
点光源
带有 Cookie的点光源
投射光
投影光只能在一个方向上照亮一个圆锥范围内。者可以完美的模拟手电筒,车前灯或者是光柱,在大多数显卡上这是最费时的。
投射光
投射光也可以有一个 cookie,一个纹理投影到光的圆锥上。这可以用来创建透过窗口的光照。非常重要的是纹理的边缘必须是黑色的,需要打开 Border Mipmaps选项并且环绕模式 (wrapping mode)被设置为 Clamp。参考纹理部分。
带有 Cookie的投射光
方向光
方向光通常用于室外场景的阳光和月光。光照将影响场景中物体的所有表面。在大多数显卡上这是昀快的。
方向光
如果一个方向光具有一个 cookie,它将投影到光源 Z轴的中心。 Cookie的大小由 Spot Angle属性控制。在检视面板中设置 cookie纹理的缠绕模式 (wrapping mode)为重复(Repeat)。
方向光投影一个云状的 cookie
Cookie是一个非常好的方法为室外场景添加一些细节。你甚至可以在场景的上方慢慢移动光源以模拟移动的云。
性能考虑光照可以使用两种方式来渲染:顶点(vertex)光和像素(pixel)光。顶点光仅仅在游戏模型的顶点上计算光照,并在模型的表面进行插值。像素光将计算屏幕中每个像素,因此非常费时。一些老的显卡只支持顶点光。
虽然像素渲染比较慢,但是它允许实现顶点光照不能实现的效果。凹凸贴图, cookie和实时阴影只能用像素光。透射光形状和顶点光高亮昀好使用像素模式。上诉三种类型的光使用顶点光模式时看起来如下:
顶点光照模式的点光源
顶点光照模式的透射光
顶点光照模式的方向光
光照对于场景的渲染速度具有很大的影响,因此必须在光照质量和游戏速度之间进行折中。因为像素光比顶点光更加费时,Unity只以像素质量来渲染昀亮的光。实际的像素光数量可以在质量设置(Quality Settings)中设置。
你可以使用渲染模式(Render Mode)属性显示的控制使用顶点光照(Vertex)或是像素(pixel)光照。缺省情况下Unity将基于有多少个物体被光照影响来自动使用光照模式。
实际上使用像素光照是由不同场合确定的。具有高光的大物体将全部使用像素光(根据品质设置)。如果玩家距离它们很远,附近的光将使用顶点光。因此,昀好将大物体从小物体中分离出来。
创建 Cookie参考教程部分的如何创建投影光照 Coolie部分
提示
• 带有 cookie的投影光在制作从窗口投射的光线是非常有用的。这种情况下,禁用衰减,并设置范围为正好到达地面。
• 低强度的顶点光可以非常好的提供景深效果。
•