【Unity】4.6 灯光

分类:Unity、C#、VS2015

创建日期:2016-04-11

一、简介

灯光(Light,也叫光源)是每一个场景的重要组成部分,用于照亮场景和对象,从而让游戏具有自己的个性和风格,比如利用灯光可模拟太阳、燃烧的火柴光、手电筒、炮火或爆炸等。

网格模型和材质纹理决定了场景的形状和质感。灯光则决定了场景环境的明暗、色彩和氛围。每个场景中可以使用—个以上的灯光,合理地使用灯光可以创造完美的视觉效果。

在 Unity 专业版中,所有灯光都可以有选择地投射立方体贴图纹理。立方体贴图 (Cubemap) 在所有方向都会被投射出阴影。

二、灯光类型

Unity 5.3.4中有 4 种灯光。创建灯光的方式同创建其他游戏对象的方式相似:

由于不同类型的光源属性相似,因此这里将其放在一起来介绍。

1、Type

光源类型。

(1)Directional

方向光源。这种类型的灯光可以被放置在无穷远处,可以影响场景中的一切游戏对象,类似于自然界中太阳光的照明效果。

方向光源是最不耗费图形处理器资源的光源类型。

方向灯主要用于模拟室外场景中的太阳光与月光。其会影响场景中所有对象的表面。它们的图形处理器成本最低。方向灯(对支持阴影的平台而言)投射的阴影在下图中得到了深入地解释。

在方向灯具有 Cookie 时,Cookie 会被投影到灯的 Z 轴的中心位置。Cookie 的大小是由Coikie 大小 (Cookie Size) 属性控制的。在检视器 (Inspector) 中将 Cookie 纹理的循环模式设置为重复 (Repeat)。

下图是投影云状 Cookie 纹理的方向灯:

Cookie 是在大型户外场景中快速添加细节的好方法。你甚至可以在场景中慢慢移动灯,制造出云在动的效果。

注意,当使用正向渲染时,会对具有 Cookie 的方向灯禁用阴影。然而,可以通过使用 fullforwardshadows编写自定义着色器 (custom shader) 来启用阴影。

(2)Point

点光源从一个位置向四面八方发出光线,影响其范围(Range)内的所有对象,类似灯泡的照明效果。点光源的阴影是较耗费图像处理器资源的光源类型。

(3)Spot

聚光灯。这种灯光从一点发出,在一个方向按照—个锥形的范围照射,该锥形是由聚光灯角度 (Spot Angle) 和范围 (Range) 界定的。

聚光灯是较耗费图形处理器资源的光源类型。

这种灯只影响它照射区域内的对象,适用于模拟汽车的前灯、手电筒、舞台场景中的射灯、……等照明效果。下图是聚光灯效果:

聚光灯也可以有 Cookie - 锥形光照投射下来的纹理。这很适合用于制作光照穿过窗户的效果。纹理的边缘是黑色非常重要,也就是要启用边框多层贴图 (Border Mipmaps) 选项,而且其循环模式 (wrapping mode) 要设置为拉伸 (Clamp)。

下图是具有一个 Cookie 的聚光灯:

(4)Area

区域光/面光源。该类型的光源无法应用于实时光照,仅适用于光照贴图烘焙 (lightmap baking)),这种光能从各方向照射一个平面的矩形截面的一侧。

区域灯。能从各方向照射一个平面的矩形截面的一侧的灯。矩形是由宽度 (Width) 和高度 (Height) 属性定义的。区域灯仅可于光照贴图烘焙 (lightmap baking) 期间使用,且在运行时对对象没有影响。

区域灯从一个平面的矩形截面的一侧投射灯光。

灯光被投射在灯光范围内的所有对象上。矩形的大小是由“宽度”(Width) 和“高度”(Height) 属性决定的,且平面的法线(例如灯光投射到的一侧)与灯光的正 Z 方向相同。灯光从矩形的整个表面发出,因此受其影响的对象的阴影比受点灯或方向性灯影响的对象的阴影更柔和。

由于光照计算需密集使用处理器,所以区域灯在运行时无法使用,且只能烘焙到光照贴图 (lightmap) 中。

2、Range

范围。用于控制光线从光源对象的中心发射的距离。该属性仅适用于点光源(Point Light)或者聚光灯(Spot Light)。

3、Spot Angle

聚光灯角度。决定锥形的角度。仅适用于聚光灯 (Spot)。

4、Color

颜色。所发射的光的颜色。

5、Intensity

强度。光的亮度。点灯 (Point)/聚光灯 (Spot)/区域灯 (Area) 的默认值为 1。方向灯 (Directional) 的默认值为 0.5。

6、Cookie

该项用于为光源指定拥有alpha通道的纹理,使光线在不同的地方有不同的亮度。如果果光源是聚光灯或方向光,只能指定—个2D纹理。如果光源是一个点光源,该项必须指定—个Cubemap(立方体贴图)。

您可以创建一个含有 alpha 通道的纹理,并将其分配给灯光的 Cookie变量。Cookie 会被灯光投影。Cookie 的 alpha 遮蔽图调节光量,在表面生成亮点和黑点。这种方法非常适合用于大大增加场景的复杂性和氛围。

Unity 中的所有内置着色器都可与每一类型灯光无缝配合。然而,顶点光照 (VertexLit) 着色器无法显示 Cookie 或阴影 (Shadows)。

7、Cookie Size

缩放 Cookie 的投影。仅方向灯 (Directional) 才有此参数。

8、Shadow Type

阴影类型(仅限专业版)。为光源选择阴影类型。可以选择No Shadows(关闭阴影)、Hard Shadows(硬阴影)以及Soft Shadows(软阴影)。

注意软阴影会消耗更多的系统资源。

默认设置下,只有方向光源才可以开启阴影。

如果希望开启点光源或者聚光灯光源的阴影(只有发布为Web版或单机版才支持),可通过菜单栏中的【Edit】→【Project Settings】→【P!ayer】选项,然后在检视器视图中通过Rendering Path(渲染路径)进一步设置Deferred Light类型。

Rendering Path的选项有:

(1)VertexLit

顶点光照。这种光照效果最差,不支持阴影。一般用于配置交叉的机器或受限的移动平台。

(2)Forward

正向着色。能很好地支持光的照射效果,但不支持点光源、聚光灯。

(3)Deferred Lighting

延迟光照(仅Pro版才支持)。支持最佳的光照效果及所有类型光源投射的阴影,但需要一定程度的硬件支持。

9、Strength

阴影强度。阴影的暗度。其值介于 0 和 1 之间。

10、Resolution

分辨率。控制阴影分辨率的质量。有5项可供选择:使用质量没置、低质量、中等质量、高质量、更高质量。

11、Bias

偏移。该项用于设置灯光空间的像素位置与阴影贴图的值相比较时使用的偏移量。取值范围是0~0.5。如果该值过小,游戏对象表面会产生sele-shadow,即物体的表面会有来自于自身阴影的错误显示;如果该值过大,阴影就会较大程度地偏离投影的游戏对象。

12、Softness

柔化。控制阴影模糊采样区的偏移量。仅适用于方向灯 (Directional)。

13、Softness Fade

柔化淡出。控制阴影与摄像机的距离淡出的程度。仅适用于方向灯 (Directional)。

14、Draw Halo

绘制光晕。如果勾选此项,光线的球形光晕将被绘制,该光晕的半径与范围 (Range) 相等。有关更多详细信息,另请参阅光晕文档和渲染设置文档。

15、Flare

耀斑/眩光。可选择指代为将在光的位置被渲染的光斑。

16、Render Mode

渲染模式。此种光的重要性。这会影响光照保真度和性能,请参阅下面的性能注意事项。选项包括:

Auto:自动。在运行时根据附近灯光的亮度和当前的质量设置确定渲染方法。

Important:重要。灯光总是逐个像素被渲染。请仅将此功能用于非常重要的效果(例如,玩家汽车的前灯)。

Not Important:不重要。灯光总是在更快的顶点/对象光模式下被渲染。

17、Culling Mask

剔除遮蔽图。用于有选择地使某些对象组不受灯光影响;请参阅双光照贴图。

18、Lightmapping

光照贴图。该项用于控制光源对光照贴图影晌的模式。

RealtimeOnly:仅实时灯光计算,不参与光照贴图的烘焙计算。

Auto:自动。

Bakedonly:仅作用于光照贴图的烘焙,不进行实时灯光计算。

19、Width、Height

宽度 (Width) (仅适用于区域灯)矩形光照区域的宽度。

高度 (Height) (仅适用于区域灯)矩形光照区域的高度。

三、性能注意事项

灯光有两种渲染方式:顶点光照和像素光照。

顶点光照仅计算游戏模型顶点处的光照,且将光照插入到模型的表面上。

像素光照在屏幕的每个像素处被计算,因此更消耗资源。

一些较旧的显卡只支持顶点光照

尽管像素光照渲染得更慢,但它能够实现一些顶点光照不能实现的效果。法线贴图 (normal mapping)、灯光Cookie (light Cookie) 和实时阴影(realtime shadow) 都是仅能在像素模式下渲染。在像素模式下,聚光灯的形状和点灯高光效果也更好。

在顶点灯光模式下渲染时,以上三种灯的光的效果如下。

下图是顶点光照模式下点光源(Point)的照射效果:

下图是顶点光照模式下聚光灯(Spot)的照射效果:

下图是顶点光照模式下方向灯(Directional)的照射效果:

灯光对渲染速度有非常大的影响 - 因此必须在光照质量和游戏速度之间加以权衡。由于像素灯光比顶点灯光耗费的资源要多得多,因此Unity仅仅逐像素渲染需要“最亮的光”时的效果。可在质量设置中为网络播放器和单机版编译目标设置像素灯光的实际数量。

您可以使用渲染模式 (Render Mode) 属性来明确地控制光是否应渲染为顶点或像素灯光。默认情况下,Unity将基于对象受光影响的程度自动将光分类。哪些灯光实际上被渲染为像素灯光是由具体的对象决定的。

时间: 2024-11-13 09:35:58

【Unity】4.6 灯光的相关文章

Unity实现刺客信条灯光的思路探究

灯光需求 类似刺客信条的开场CG动画,场景中打着酷炫的灯光,玩家在场景中行走可以感受到灯光很真实. 参考视频:http://www.iqiyi.com/w_19rqytbmvt.html 运行环境 安卓/IOS手机平台,所以对性能有一定要求. 初期原型 思路分析 1.引擎自带灯光组件,变换颜色,变换transform 2.lineRenderer画线组件,模拟灯光效果,linerenderer打到人物身上效果逼真么? 3.Mesh+shader或者粒子系统进行模拟 light beam/shaf

Unity Lighting - Lighting overview 照明概述

Lighting overview 照明概述 In order to calculate the shading of a 3D object, Unity needs to know the intensity, direction and color of the light that falls on it. 为了计算3D物体的阴影,Unity需要知道落在它上面的光的强度,方向和颜色. These properties are provided by Light objects in th

Unity3D ShaderLab 静态贴图光照模型

其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果. 下面是在unity中关闭灯光和打开灯光的对比效果.所以这类着色器的缺点就是不会随着光源变化效果. 接下来,我们开始创建,首先通过软件MaCrea来制作我们的2D光照贴图,MaCrea软件 通过该软件可以快速制作一个完整的发光球体平面图. 软件地址:http://pan.baidu.com/s/1bnD7wkv 软件视频教学地址:http://pan.baidu.com/s/1c0rQDva 完成静态光

The Lab Renderer学习笔记

前言 Unity Vision VR/AR Summit来到中国了(http://www.bagevent.com/event/197605?bag_track=http://www.bagevent.com/event/197605   ),最近也关注了一下Unity的VR开发. 大概是6月份看到新闻:Steam发布了The Lab所使用的渲染器的所有源代码.我一直挺好奇的,对于Unity3D这样不开源的引擎,如果搞一个渲染器呢?今天有时间读一下代码,一探究竟. 相关链接: - 官方帖子:ht

unity灯光Lightmapping

1.为什么要用Lightmapping? 简单来说就是实时灯光计算十分耗时,随着光源越多,计算耗时会倍增.使用Lightmap模拟灯光带来的效果,便不用去计算灯光,会带来性能上的大大提升.当然你不用灯光效果也是没问题的,具体还是看项目需求.最简单的直接在3dmas或maya里面烘培完贴图顶点色也行.或者使用unity自带的Lightmaping去烘焙贴图也行,两者方式选择一个即可!都差不多! 烘培完成之后,其实场景里的灯光可以删除了,但是有可能我们还要向场景里添加模型,所以先保留,等到发布的时候

[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights

[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights 既上一篇分享了中文字幕的摄像机介绍Cameras后,本篇分享一下第2个已完工的视频,即<beginner Graphics – Lessons系列之灯光介绍Lights>.听译.时间轴.压制者均为本人.请勿将视频用于非法目的. 有需要高清视频的同学麻烦点个赞并留下你的Email~ 有视频有真相 视频中的重点 类似现实世界,Unity中用灯光照亮场景 没有灯光,场景中的物体在

从Unity学UE(一)之蓝图类的使用----制作一个可控灯光

新学期开始了,我又来更博了,自从UE4免费以来,每天都很兴奋有木有!于是博主从家乡花了一天时间到达学校后的第一时间就又开始学习起了UE4,联系上回内容,这次我们继续体会Unity引擎和UE4相似之处.在这片文章中,我们将分别在两个引擎中创建一个可以控制开关的灯,来对比一下两个引擎,同时我们将会学到,如何在UE4中使用蓝图创建一个可以交互的物体.好了,废话不多说,开始吧 首先申明,本文章内容适合有Unity引擎基础的童鞋享用,如果不了解Unity引擎,请跳过第一部分即可,内容较为基础,大神们可以绕

【Unity灯光与渲染技术】Global Illumination全局光照

本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering,同时会加上一点个人实践过程和理解. ========================================== 分割线 ========================================== 这篇文章主要讲全局光照,在看教程的时候就有一个点不是很理解,就是作者开启物体的static这个选项.在网上查找一些资料,有的说"static表示物体时静态的,多用于静止不动的物体,此外

Unity灯光详解

Lights will bring personality and flavor to your game. You use lights to illuminate the scenes and objects to create the perfect visual mood. Lights can be used to simulate the sun, burning match light, flashlights, gun-fire, or explosions, just to n