《Unity着色器和屏幕特效》——1.3 加载飞船维修场景并在场景中漫游

1.3 加载飞船维修场景并在场景中漫游

第一个游戏场景位于星球“Ridley VI”附近。宇航员停下飞船进行一些基础维修,为登陆星球做好准备。

在这里我们先简单地基于Unity的标准着色器来创建不同的材质,从而使得不同的物体表面拥有相近的显示质量。

1.在项目(Project)面板上找到PACKT_Scenes文件夹,并单击文件夹的图标,以便使它的内容显示在资源(Assets)面板上。

2.在资源(Assets)面板上找到名为Chapter1_Start的资源。

3.双击该资源,以便将它包含的场景加载到项目中。

在场景(Scene)视图中会看到如下的场景画面。

初始状态的场景看起来有些简陋,其中只有默认外观的飞船、宇航员,以及远处的星球和它的卫星。

场景已经由Unity的默认光源照亮,因此当我们对标准着色器进行设置时,可以同时观察和对比不同材质在光源下的外观。

接下来将从宇航员的材质开始设置。

1.3.1 为宇航员创建材质

宇航员的模型由许多不同的表面构成,比如,她的脸、玻璃头盔以及由金属和布料制成的太空服等。Unity的标准着色器可以表现所有这些不同之处,开发者只需通过图形界面设定一些参数及纹理即可定义出具有金属光泽或者高光效果的表面。

下面从创建材质资源开始做起。

1.在项目(Project)面板上找到PACKT_Scenes文件夹,并单击文件夹的图标,以便使它的内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。
新材质资源将会在PACKT_Materials文件夹下面产生。

3.将新产生的资源重命名为“Astronaut”。
Unity 5为新材质默认指定标准着色器,并使用金属光泽工作流。这是一种能够适用于多种不同物体表面的万能着色器。

4.在资源(Assets)面板上单击“Astronaut”材质将它的属性显示在检阅(Inspector)面板上。

在材质初始的空白状态下,“Astronaut”材质具有白色的单色反光以及一定量的平滑度,使得该材质的外观略微显得闪亮。

5.单击反光(Albedo)右侧的白色方框并选择其他颜色。

在为一种材质设定更多纹理素材之前,临时为其设定一种比较显眼的单色反光颜色是一个比较实用的技巧。因为这样便于观察该种材质正在应用于场景中的哪些物体表面。

具体的做法是,为材质设定某一种单色反光颜色后(如正红色),在Unity界面的顶端中部单击场景(Scene)卡片将显示切换到场景视图。通过在场景中观察并寻找特定颜色(如寻找正红色),便可以方便地知道我们的修改正在影响场景的哪些部分。

6.用摄像机控制功能将镜头向宇航员拉近一些:“Alt+鼠标左键”为旋转摄像机,“Alt+鼠标中键”为平移摄像机,“Alt+鼠标右键”为拉近或拉远摄像机。

7.从资源(Assets)面板上将“Astronaut”材质拖放到场景视图中的宇航员模型上。

模型的外观将产生相应变化,这表明“Astronaut”材质已经应用到模型上。

从现在起对该材质所做的修改将会直接在场景视图中体现出来。

8.在项目(Project)面板上单击PACKT_Textures文件夹左侧的灰色小三角形,使子文件夹显示出来。

9.找到并单击“astronaut_suit”子文件夹,将它的内容显示在资源(Assets)面板上。

10.在资源(Assets)面板上找到“astronaut_albedo”纹理。

11.将该纹理拖放到检阅(Inspector)面板上的反光(Albedo)槽上。

该纹理是一个没有alpha通道的TGA图片文件,里面保存了宇航员模型的表面颜色信息。

12.再次单击反光(Albedo)右侧的白色矩形方框并将颜色重新设定为白色。

到目前为止,宇航员模型的其他部分,如脸和太空服的布料等部分,在场景的光照下看起来还没有区别,并且模型各部分的金属光泽和平滑度参数都相等。

13.在资源(Assets)面板上找到“astronaut_metal”纹理并拖放到检阅(Inspector)面板上的金属光泽(Metallic)槽上。

场景视图中的宇航员模型外观应当再次产生相应变化。

在金属文理贴图中,金属光泽(metallicity或metalness)参数值存储在RGBA纹理文件的红色通道内。红色值越高则金属光泽越明显。其他通道,如绿色或蓝色通道没有使用,将被忽略。请注意,当我们将“astronaut_metal”纹理拖放到了材质中后,原来检阅(Inspector)面板上的平滑度(smoothness)滑动条将变为不可用状态。

平滑度由金属文理贴图的alpha通道数据指定。如果纹理文件没有alpha通道,平滑度则默认为最大值。

14.在资源(Assets)面板上找到“astronaut_normal”纹理并拖放到检阅(Inspector)面板上的法线贴图(Normal Map)槽上。

法线贴图(Normal Map)取代原模型表面的法线,重新定义表面反射光线的方向。这种技术常用于在精度较低的模型表面上模拟产生高精度的模型细节。法线贴图(Normal Map)槽使用RGB贴图,贴图中的三个彩色通道被用于定义法线方向向量。

15.在资源(Assets)面板上找到“astronaut_suit_ao”纹理并拖放到检阅(Inspector)面板上的遮挡(Occlusion)槽上。

环境光遮挡(Ambient Occlusion,AO)有时简称为遮挡(Occlusion),是一种作用于模型凹陷处的光照效果。在模型上有时会出现腔孔或者布料皱褶等通常难以接收到足够光照的凹陷部分。环境光遮挡效果使模型的这种特殊部分显得比其他正常部分更暗些。这种效果与法线贴图(Normal Map)和金属光泽(metallic)效果结合在一起,可以使复杂模型显得非常真实。在标准着色器里,遮挡(Occlusion)使用灰度RGB贴图。

默认情况下材质会将环境光遮挡贴图的效果全部应用于显示,但有时候效果可能过于强烈从而影响显示质量,所以我们需要将效果适当减弱。

16.在检阅(Inspector)面板上的遮挡(Occlusion)右侧有一个滑动条和一个数值输入框。请将数值由默认的1改为0.5。该调整将轻微地减弱默认的遮挡效果。

在场景(Scene)视图中,此时的宇航员模型将拥有一套看起来更加真实的表面。

模型中的一些部分目前仍然保持默认的灰白色,因为它们要么没有使用前面设置的材质要么属于子模型。

在游戏场景中,角色的眼睛模型一般与身体其他部分的模型分开,这样眼睛就可以相对于身体独立运动。在本书的示例中,宇航员的眼睛也使用单独的子模型,但与身体的其他部分共享同一个材质。

在接下来的步骤里,我们将“Astronaut”材质应用于眼睛子模型。

1.在层次(Hierarchy)视图里,单击宇航员(astronaut)游戏对象左边的灰色小三角形,将该游戏对象展开。展开后该游戏对象下面的子游戏对象eye_L和eye_R将被显示出来。

2.再次找到“Astronaut”材质,并将其分别拖放到eye_L和eye_R游戏对象上,以便为这两个子游戏对象设定材质。

此外宇航员还有一套额外的材质将被设定到她的背带和金属装备上。这些材质使用专用的纹理素材。

实际上,更加复杂的模型,如游戏角色,往往会使用不止一套材质。这样便可使同一个模型上不同部分的表面具有不同的光照特性。

我们将在接下来的步骤中为宇航员设定更丰富的材质。

1.3.2 为宇航员的装备创建材质

现在需要为宇航员的背带和其他装备创建第二个材质。我们将通过相同的方法创建新材质。

1.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。

3.将新产生的材质重命名为“Astronaut_equipment”。

4.在层次(Hierarchy)视图里单击astronaut游戏对象,使其属性显示在检阅(Inspector)面板上。

5.在检阅(Inspector)面板上找到网格渲染器(Mesh Renderer)。

在网格渲染器(Mesh Renderer)下面的材质(Materials)区显示有一个材质数组,目前包含了三个材质元素。

6.将我们在资源(Assets)面板上新创建的“Astronaut_equipment”材质拖放到网格渲染器(Mesh Renderer)下面的材质(Materials)区内的元素1(Element 1)位置。

拖放后元素1(Element 1)位置默认的默认_材质(Default_Material)将被替换为“Astronaut_equipment”材质。并且在场景(Scene)视图中也会看到相应变化。

7.双击出现在元素1(Element 1)位置的“Astronaut_equipment”材质名称,将其属性显示在检阅(Inspector)面板上。

在检阅(Inspector)面板上,现在可以重新看到贴图槽和滑动条等界面元件。

8.在项目(Project)面板上找到PACKT_Textures文件夹,单击它左侧的灰色小三角形,使子文件夹“astronaut_suit”显示出来。

9.单击子文件夹“astronaut_suit”使其内容显示在资源(Assets)面板上。

10.在资源(Assets)面板上找到“equipment_albedo”纹理素材。

11.将其拖放到检阅(Inspector)面板上的反光(Albedo)槽上。
宇航员的背带会改变颜色,这意味着纹理素材已经应用到背带的材质中。

12.用同样方法为金属光泽(Metallic)、法线贴图(Normal Map)和遮挡(Occlusion)拖放纹理素材。

13.为遮挡(Occlusion)设置到纹理素材后,请确保将它的参数修改为0.5,以便与模型的其他部分保持一致。

接下来我们将为这个材质多设置一个纹理,因为宇航员的背带上有灯光。我们可以为自发光(Emission)设置纹理,从而使模型的一部分亮起来。

14.在资源(Assets)面板上找到“equipment_emissive”纹理素材。

15.将该纹理素材拖放到检阅(Inspector)面板上的自发光(Emission)槽上。

在场景(Scene)视图中宇航员背带上的灯现在将会亮起来。

标准着色器的自发光(Emission)特性使用RGB贴图。该贴图还可以进一步指定一个颜色,以便对自发光颜色进行修改。我们将在第3章学习标准着色器的这一特性的更多细节。

宇航员游戏对象的材质数组的第三个元素用于模型的头发。这个材质与前面两个材质使用相同的工作流,并用类似的方式设置纹理素材。为避免重复,这一次我们使用现成的素材。

16.在项目(Project)面板上找到PACKT_Materials文件夹以及它下面的Final_Materials子文件夹。单击子文件夹,并在资源(Assets)面板上找到“Astronaut_hair”材质。

在最终版本的材质中,读者还可以找到现成的“Astronaut”材质和“Astronaut_equipment”材质。

17.在层次(Hierarchy)视图里单击宇航员(astronaut)游戏对象。

18.将资源(Assets)面板上找到“Astronaut_hair”材质拖放到检阅(Inspector)面板上的材质(Materials)区内的元素2(Element 2)位置。

在继续学习之前我们还有一件事要做。宇航员的太空服有一个透明头盔。为了方便设置前面的其他材质,头盔初始时处于隐藏状态。接下来我们就处理它。

使物体透明

在加工和处理模型的过程中,一个模型可能被设置多个材质,即材质组。前面,我们在设置宇航员模型的装备时已经遇到了这种情况:她的装备使用一个具有自发光纹理的专用材质。

在接下来的例子中,宇航员的透明头盔拥有独立的UV壳和自己专属的材质组,基于此我们可以为它设置与众不同的材质。

头盔模型所在的游戏对象是宇航员游戏对象的子游戏对象,目前处于隐藏状态。在下面步骤中我们需要先将它设置为可见状态,然后才能看到后续修改为它的外观带来的改变。

1.在层次(Hierarchy)视图里单击头盔(helmet)子游戏对象。

如果无法找到头盔游戏对象,请单击宇航员(astronaut)游戏对象左侧的灰色小三角形,将其子游戏对象展开。

2.在材质拖放到检阅(Inspector)面板上找到头盔(helmet)子游戏对象,并单击勾选其左侧的复选框将其激活。

与宇航员父游戏对象相似,头盔子游戏对象在网格渲染器(Mesh Renderer)下面的材质(Materials)区中也有包含两个材质的材质数组。

材质数组中的第一个元素是“Astronaut_equipment”材质,它用于绘制头盔与太空服接口处不透明的部分。数组里的第二个材质元素用于绘制头盔整体的透明部分。我们暂时简单地使用默认灰色材质。

在下面步骤中,我们再一次使用标准着色器创建材质。

1.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。

3.将新产生的材质重命名为“Helmet”。

4.在层次(Hierarchy)视图里单击头盔(helmet)子游戏对象,使其属性显示在检阅(Inspector)面板上。将刚创建的“Helmet”材质拖放到网格渲染器(Mesh Renderer)下面的材质(Materials)区里的元素1(Element 1)位置。

5.双击元素1(Element 1)位置上的“Helmet”材质名称,将其属性显示在检阅(Inspector)面板上。

我们可以让大部分属性保持使用默认值,但这次需要修改渲染模式(Rendering Mode)。

6.单击渲染模式(Rendering Mode)下拉选单,选择透明(Transparent)选项。

7.单击反光(Albedo)右侧的白色方框,在弹出的颜色选择器中,将A值设定为92。

Alpha通道的透明度取值范围在0~255,与其他RGB通道的取值范围相同。在本例中我们希望头盔可以看到,但是要有一定的透明度。

实际上也可以直接用纹理贴图来指定透明度。我们将在第5章中进一步学习这种方法。

在场景(Scene)视图中,宇航员的头盔现在具有了一定透明度。接下来我们对头盔的材质再多进行一项修改。

1.在资源(Assets)面板上再次单击“Helmet”材质。

2.在检阅(Inspector)面板上拖拽平滑度(smoothness)滑动条将其值修改为0.65。

半透明的头盔表面有了一定的高光效果。

在后续步骤中,我们将使用标准着色器的更高级特性来为飞船创建材质。

1.3.3 为飞船创建材质

在为宇航员设置材质时,我们只使用了一套由反光(Albedo)、金属光泽(Metallic)和法线贴图(Normal Map)等参数定义的材质。接下来我们将用稍微不同的方法来设置飞船的外观。因为飞船模型相对比较大,并且几乎是作为宇航员的背景出现的,所以我们需要保证其表面具有足够的细节。我们将为这个物体的网格渲染器(Mesh Renderer)增加额外的材质。

1.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。

3.将新产生的材质重命名为“Spacecraft”。

4.像前面为宇航员设置材质那样,通过将“Spacecraft”材质拖放到场景视图中的飞船表面来为该模型设置材质。

5.在项目(Project)面板上找到PACKT_Textures文件夹,单击它左侧的灰色小三角形,使子文件夹“Spacecraft_surface”显示出来。

6.单击子文件夹“Spacecraft_surface”使其内容显示在资源(Assets)面板上。

7.在资源(Assets)面板上找到“Spacecraft_albedo”、“Spacecraft_metal”、“Spacecraft_ao”和“Spacecraft_normal”纹理素材,将它们拖放到检阅(Inspector)面板上对应的属性槽中。

观察场景(Scene)视图,可以看出这些贴图赋予了飞船模型基础的外观的立体感。

接下来我们将为飞船创建第二个材质,并将它叠加到第一个材质的上面。
创建飞船贴花的材质

我们将用类似的方法为飞船再创建一个额外的材质。

1.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。

3.将新产生的材质重命名为“Spacecraft_decal”。
这次我们同样需要材质以透明方式绘制。

4.在检阅(Inspector)面板上将渲染模式(Rendering Mode)修改为透明(Transparent)。

5.在项目(Project)面板上找到PACKT_Textures文件夹,单击它左侧的灰色小三角形,使子文件夹“Spacecraft_surface”显示出来。

6.单击子文件夹“Spacecraft_surface”使其内容显示在资源(Assets)面板上。

7.在资源(Assets)面板上找到“Spacecraft_decal”纹理素材,将它们拖放到检阅(Inspector)面板上的反光(Albedo)属性槽中。
这个透明纹理有alpha通道。我们将在下一步将这个新材质设置到飞船表面模型上。

8.在层次(Hierarchy)视图里单击飞船_表面(Spacecraft_surface)游戏对象。

该游戏对象的属性将显示在检阅(Inspector)面板上。

9.在检阅(Inspector)面板上,找到在网格渲染器(Mesh Renderer)下面的材质数组。

10.在尺寸(Size)输入框里输入数字2,将材质数组的元素扩充为两个。

11.单击元素0(Element 0)位置上的“Spacecraft”材质名称,将它所在的文件的内容显示在资源(Assets)面板上。

12.在资源(Assets)面板上找到“Spacecraft_decal”材质并将其拖放到元素1(Element 1)位置。

在场景中,贴花纹理将叠加在飞船表面的第一层纹理上面。

当我们将多个材质设置到同一个模型上时,一个材质会覆盖在另一个上面。只有将上层材质的渲染模式设置为透明、剪裁或混合时,下层材质才可见。

请注意检阅(Inspector)面板上材质数组下面出现的警告信息。

警告:“为渲染器设置的材质数量对于当前模型的子模型数。将多个材质设置到同一个模型上会影响运行效率。考虑使用多遍着色。”

在本例中组合材质的确无法获得良好的运行效率。我们将在第6章中进一步学习通过自定义着色器更高效的混合纹理的方法。

现在第二个材质已经显示出来了,我们需要调整它的UV参数以便使更多的细节与飞船表面完美匹配。

1.在资源(Assets)面板上找到并单击“Spacecraft_decal”材质。

标准着色器的UV缩放倍数(Tiling)和UV起始位置(Offset)参数就在主贴图(Main Maps)设置区的最下面。

2.设置材质的UV缩放倍数的X值为-7,Y值为7。

这将会使纹理的显示尺寸缩小为原来的1/7。

纹理比物体表面小时,并不会以平铺的形式重复出现。这一特性由纹理的性中的缠绕模式(Wrap Mode)决定。

3.设置材质的UV起始位置的X值为3.03,Y值为-0.34。

这将会把贴花纹理放置在模型的恰当位置上。

接下来我们将为星球设置材质。

1.3.4 为星球创建材质

远处的Ridley VI星球是一个不毛之地。危险的氮气风暴终日在星球表面肆虐。为了表达这个场景,我们将为星球创建一个基于标准着色器的材质。标准高光参数是Unity标准着色器的一个可变量,它直接控制物体表面的高光程度而不是定义其金属光泽程度。

实际应用中,这一参数给予了我们多一些的自由度。我们可以用它来定义物体表面高光区域的光斑大小以及强度,并且为其指定一个与表面反光和光源不同的颜色。

我们将通过如下步骤创建该材质。

1.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。

3.将新产生的材质重命名为“Planet”。

4.在资源(Assets)面板上单击一次Planet,就可以在检阅(Inspector)面板上查看它的属性。

5.在项目(Project)面板上找到并单击PACKT_Textures文件夹,是其内容显示在资源(Assets)面板上。

6.在资源(Assets)面板上找到纹理贴图Planet001,将其拖放到在检阅(Inspector)面板上的反光(Albedo)属性槽中。

为了表现Ridley VI星球的崎岖表面,我们将为其设定一系列纹理素材。这是其中的第一张。

7.在层次(Hierarchy)视图里找到并双击“Ridley VI”游戏对象,以便将其选中并且置于场景视图正中。

8.在项目(Project)面板上单击PACKT_Materials文件夹,将资源(Assets)面板上的“Planet”材质拖放到场景中的星球上。

设置材质后,星球的外观将发生变化。

为了使其表面看起来更像一个星球,我们还有一些调整要做。

9.再次单击资源(Assets)面板上的“Planet”材质。在检阅(Inspector)面板上,将着色器(Shader)类型设置为标准高光设置(Standard(Specular Setup))。

标准高光设置着色器与普通标准着色器相似,但它允许我们指定物体表面的颜色(通过反光设置)、反射程度以及闪亮程度(通过平滑度和高光设置)。该着色器的关键不同之处是它可以为反射光线设置RGB颜色。

10.在检阅(Inspector)面板上单击高光(Specular)设置右侧的灰色矩形,在弹出的颜色选择器中,将RGB通道设置为61、63和92,使星球的表面发出轻微的蓝光。

11.将平滑度(Smoothness)设置为0.1。

减小平滑度值将使物体表面对环境的反射程度降低,高光区域的尺寸增加,从而表面显得更加粗糙。

当我们设置了天空盒并调节了场景亮度后,上面对星球的调整将会看起来更加明显。接下来我们为场景设置天空盒。

1.3.5 设置天空盒

到目前为止,我们的场景一直使用Unity默认的天空盒,它只设置了天空和地面的颜色。这种天空盒对于陆地场景比较合适,但难以用于太空场景。因此我们将创建一个新天空盒。

1.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

2.右键单击资源(Assets)面板上的任一空白位置,在弹出的菜单上单击创建(Create) | 材质(Material)命令。

3.将新产生的材质重命名为“Startf?ield”。

Unity有一系列天空盒专用的着色器,接下来我们选择其一使用。

4.在检阅(Inspector)面板上单击着色器(Shader)下拉选单并选择天空盒|六面(Skybox | 6 Sided)。

六面天空盒着色器可以为各个方向共设置六个纹理素材。

5.在项目(Project)面板上找到并单击PACKT_Textures文件夹,使其内容显示在资源(Assets)面板上。

6.在资源(Assets)面板上找到名为“starf?ield_front”的纹理素材,将其拖放到在检阅(Inspector)面板上的第一个纹理槽中。

7.重复这个操作将另外五个星空纹理拖放到检阅(Inspector)面板上的其他纹理槽中。

在检阅面板的底部有一个组装好的天空盒的预览图。如果六个面中有某两个面用错了纹理,则可以从预览图中看到不匹配的接缝。

在Unity 5中天空盒在光照(Lighting)面板上设置。该面板默认为隐藏状态。

8.为打开光照(Lighting)面板,在界面顶部的菜单栏里单击窗口(Window) | 光照(Lighting)命令。

光照(Lighting)面板将浮在主窗口上面。

9.请将光照(Lighting)面板并排停靠在检阅(Inspector)面板旁,或者其他不影响观看场景(Scene)的位置。

10.在项目(Project)面板上找到并单击PACKT_Materials文件夹,使文件夹内容显示在资源(Assets)面板上。

11.将“Starf?ield”材质拖放到光照(Lighting)面板上的天空盒(Skybox)槽,替换原来的默认天空盒(Default-Skybox)。

现在天空盒会显示在场景中了。

Unity的默认光照设置使用天空盒的明亮区域来照亮场景。在检阅(Inspector)面板上,我们可以在材质级别调节曝光值,并且可以旋转天空盒。

接下来,我们将调节场景光照并且添加一些额外效果。

1.3.6 调节场景光照并添加效果

对于当前场景,我们可以继续沿用默认的有向光源。该种光源能够支持实时阴影效果。我们需要调节光源的位置和朝向以便使它看起来更像一个被挡在星球身后的太阳。

1.在层次(Hierarchy)视图里单击有向光源(Directional Light)游戏对象。

2.在检阅(Inspector)面板的顶部可以找到变换(Transform)组件。将位置X(Position X)的值设置为10.8,位置Y(Position Y)的值设置为15.75,位置Z(Position Z)的值设置为97。
这将使光源的位置位于星球的后面。

接下来我们将旋转光源的朝向,使其面向宇航员和飞船。

3.继续在检阅(Inspector)面板上将变换(Transform)组件的旋转X(Rotation X)的值设置为8.7,旋转Y(Rotation Y)的值设置为-174,旋转Z(Rotation Z)的值设置为-153。

这将使光源朝向宇航员,并且只能照亮飞船的一个侧边。

在这里我们可以添加更多的效果使场景看起来更接近电影级别。

在检阅(Inspector)面板的底部附近,找到并勾选绘制光晕(Draw Halo)复选框。这个特性会在光源位置上创建一个可见的发光区域。继续找到并单击闪光右侧的小圆按钮。

在弹出的闪光选择窗口里,选择太阳(Sun)。

现在场景中的光源的周围有了一圈闪光。

场景光源的设置已完成。在第3章中我们将更加深入地学习光照效果。

时间: 2024-10-12 15:09:27

《Unity着色器和屏幕特效》——1.3 加载飞船维修场景并在场景中漫游的相关文章

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.7 创建透明材质

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.7节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.7 创建透明材质 到现在为止,我们见到的着色器都有一个共同点-都用在实心材质上.如果你想提升游戏视觉效果,某些时候透明材质是个不错的选择,比如火焰效果或者窗户玻璃等.透明材质的制作相对复杂一点.在渲染实心物体之前,Uni

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.4 给着色器添加纹理

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.4节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.4 给着色器添加纹理 在模拟现实效果方面,纹理可以让着色器迅速生动起来.为了高效使用纹理,我们需要理解二维图像是如何映射成三维模型的.这个映射过程称为纹理映射.为了进行纹理映射,我们需要在着色器和想要应用纹理的三维模型上

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.6 法线映射

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.6节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.6 法线映射 三维模型中的每一个三角形都有一个面朝方向(facing direction),顾名思义指的是三角形的朝向.这个方向通常用一个从三角形中心出发垂直于三角形表面的箭头表示.面朝方向对于光线在物体表面反射的时候起

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.9 打包和混合纹理

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.9节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.9 打包和混合纹理 纹理不仅在存储许多像素颜色数据的时候非常有用,同时还可以用来存储x和y方向的一堆像素集合以及其RGBA通道.可以将几个图像打包成一个RGBA纹理,然后通过着色器代码来提取每一个R,G,B,A组件作为单

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.5 通过修改UV值来滑动纹理

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.5节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.5 通过修改UV值来滑动纹理 在物体表面滑动纹理是现代游戏行业中一种非常常用的纹理技术.通过滑动纹理可以创建出诸如瀑布.河流.熔岩等诸多生动的特效.这种技术也是制作精灵特效的基础,关于这部分内容会放在本章另外一小节中.首

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一1.3 从Unity 4向Unity 5迁移

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第1章,第1.3节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 1.3 从Unity 4向Unity 5迁移 不可否认,电子游戏中的图像技术在过去的10年中发生了翻天覆地的变化.每一个包含前沿技术的新游戏的面世,带给我们的都是无与伦比的实时超现实体验.同样,在Unity中着色器及其相关技

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一第2章表面着色器和纹理映射2.1 引言

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.1节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 第2章 表面着色器和纹理映射 在这一章中,会研究表面着色器.我们会从一个非常简单的无光材料开始,最后做出一个全息投影和高级地形混合特效.我们还可以用纹理来制作动画.混合或者其他一些特效.在这一章中,你会学到如下内容:漫反射着

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.10 在地形周围创建圆环

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.10节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.10 在地形周围创建圆环 很多即时战略游戏需要通过在某个选定单位周围绘制圆环来显示一些距离(比如攻击范围.移动距离.视野范围等).如果地形是平整的,可能只需要在四边形上画一个圆形纹理就可以了.但是如果地形不是平的,则四

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.2 漫反射着色

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.2节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.2 漫反射着色 在开始学习纹理映射之前,我们需要先理解漫反射着色是怎么工作的.某些物体的颜色比较均匀,表面很光滑,但是又不是光滑到那种像镜子一样光亮的程度.这种非反光材料最好的渲染方式就是使用漫反射着色器.虽然在真实世界

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.3 使用包装数组

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.3节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.3 使用包装数组 简单来讲,着色器中的代码需要在屏幕的每一个像素上执行,这也是为什么GPU现在都需要优化成并行计算的.同样的道理,在Cg中的标准变量类型和操作符也得考虑这些优化.理解这些原理不仅有助于正确使用着色器,而且