欢迎光临散文网 会员登陆 & 注册

MMD联动Unity学习笔记 Vol.6 天空盒

2019-03-29 16:05 作者:NXL2  | 我要投稿

前言

    Skybox(天空盒)是整个3D场景的一个包裹,它可以显示角色场景之外的世界。你可以使用天空盒来模拟无限的天空,山脉,海洋等等。在Unity里面可以轻松实现效果很赞的天空盒效果。这回我们共同学习天空盒的实现和实用。

何为天空盒?

    默认情况下,相机的背景颜色为深蓝色。通常,颜色填充在视图的任何空白区域(例如,在该场景的墙壁上方),但是可以将天空的图片渲染为背景。这就是“天空盒"的用武之地。

    定义天空盒是围绕摄像机的立方体,每侧都有天空的图像。无论相机朝哪个方向,它都会看着天空的照片。

    新场景实际上已经分配了一个非常简单的天空盒。这就是为什么天空具有从浅蓝到深蓝的渐变,而不仅仅是一个扁平的深蓝色。如果打开照明设置窗口(菜单Window>Rendering> Lighting Settings),则第一个设置是Skybox Material,该设置的插槽显示为default。此设置位于Environment(环境)面板中。这个窗口有许多与Unity中高级照明系统相关的设置面板,但是现在把注意力放在第一个设置。

天空盒着色器

天空盒Shader的四个种类


    在Assets文件夹里面创建新的文件夹命名为Skybox,在里面新建一个材质球(通常是右键单击Create(创建)),从菜单中选择Material(材质),然后选择它以查看Inspector(检查器)中的设置。接下来,需要更改此材质使用的着色器。材质设置的顶部有一个Shader(着色器)菜单。天空球的Shader一共有四个种类6 Sided(六边),Cubemap(盒形贴图),Panoramic (全景化),Procedural(程序化)。下面我将它们分别进行说明。(这里不对Shade进行过多说明,以后再进行详细解释)

6 Sided  在此着色器处于活动状态时,材质现在具有六个大纹理槽(而不仅仅是默认着色器具有的小Albedo纹理槽)。这六个纹理槽对应于立方体的六个边,因此这些图像应在边缘匹配以显得无缝。

Tint Color 整体色调。

Exposure 曝光度。

Rotation 贴图旋转度。

    Front,Back,Left,Right,Up,Down。天空球贴图。这个Shader需要6张不同方向的贴图。按照范例是里面提供贴图的顺序加上纹理贴图就可以了。 这埯需要更改一个微妙的导入设置, 单击导入的纹理以在Inspector中查看其属性,将Wrap Mode(环绕模式)选项的Repeat(重复)改为Clamp(钳制),通常,纹理可以在表面上重复平铺。为了使它看起来无缝,图像的相对边缘实际上会一起渗透。然而,这种边缘的混合可以在图像相遇的天空中产生模糊的线条,因此Clamp设置将限制纹理的边界并消除这种混合。

将Wrap Mode选项的Repeat改为Clamp

Render Queue(渲染队列)可选择从着色器,几何体,阿尔法测试和透明体。

Double Sided Global Illumination(双面全局光照)

效果

范例:在Asset Store搜索cope下载Cope!Free skybox pack下载并导入。在导入的Cope!Free Skybox Pack文件夹中找到materials,里面有三个六边的天空球材质。在tiff文件夹中有这三个材质的具体贴图。

Cubemap  这个着色器相当于上面着色器材质的合成升级版。它将着色器所需要的六张贴图整合成了一张贴图。这样使用起来也更加方便。

Tint Color 整体色调。

Exposure 曝光度。

Rotation 贴图旋转度。

Cubemap(HDR)盒形贴图。这里要使用到类似十字架形状的贴图。有3D贴图经验的同学应该马上就能明白这种贴图的原理。这种贴图是用六张各个方向的图片拼接而成的,用PS类软件很容易制作出来,它的缺点也是容易出现接缝。(需要注意的是,盒形贴图在导入Unity时,它的Inspector里面的Texture Shape(纹理形状)默认选项是2D,这时要将它拖入贴图中,必须先将纹理形状改为Cube才能使用。还有多一句,改完之后点击右下的Apply按钮,新手经常会忘记这个步骤。)

将Texture Shape 选项的2D改为Cube

范例:使用搜索引擎搜索Skybox cube,在图片中可以找到类似下面的图片,将它导入Unity。

Cubemap贴图

Panoramic 

Tint Color 整体色调。

Exposure 曝光度。

Rotation 旋转度。

Spherical(HDR) 球形贴图。基本都是指(球形)全景贴图,是比较推荐的一种天空盒类型,它是由全景像机拍摄或多张图片合成。一般来说JPG,HDR,EXR格式的全景图都可以使用。JPG的优点是文件小,但是动态范围和色彩数都比较低,HDR和EXR的动态范围,色彩数都较高,但EXR的图片的精度要高于HDR图片, 而HDR图片的亮度范围要高于openEXR图片,文件比EXR要小一些。那么如何取舍,具体选择哪种格式,还是要看个人或项目的需求而定。

Mapping 有两个选项,6 Frames Layout(6帧层级)和Latitude Longitude Layout(

Image Type 可选择360度和180度。选择180度的话,天空球只对场景一半产生作用。还会出现Mirror on Back的勾选框,勾选后会镜像前面的天空球映射到后面。

范例:使用搜索引擎搜索Skybox Panoramic,在图片中可以找到类似下面的图片,将它导入Unity。

Procedural 这种天空盒着色器不能导入贴图,只能使用参数设置,所以实现的效果相对简单。

Sun 参数有三个选项None(没有),Simple(简单),High Quality(高质量)。

Sun Size 太阳的大小。

Sun Size Convergence 在选择高质量的时才会出现的参数,可以调节太阳的聚散程度。

Atmosphere Thickness 大气的厚度。

Sky Tint 天空的色调。

Ground 地面的颜色。

Exposure 曝光度。

应用天空盒的两种方法

 1.在当前摄像机上添加skybox   

首先选择hierarchy下面的main camera(主摄像机),然后点击component->Rendering->skybox。给主摄像机添加一个天空盒,这是我们就可以在摄像机的属性栏看到 skybox 属性。 

两个需要注意的点

这里有两个位置需要注意。第一点,摄像机Inspector下面camera组件的clear flags(清除标记)必须选择skybox,否则天空盒是不会显示出来的,这点要注意。第二点,这就是需要设置的天空盒材质。点击custom skybox属性后面的小圆点图标,在弹出的选择栏中选择刚刚想要的天空盒材质 (直接把天空盒材质拖到这个位置也可以),然后可以在摄像机高预览窗口中看到效果。

2.在当前场景上添加skybox


    将配置好的天空球材质直接拖到场景中的空白处。或者打开照明设置窗口(菜单Window>Rendering> Lighting Settings),Scene选项卡的Environment(环境)的第一个设置就是Skybox Material(天空盒材质),点击后面小圆点添加或者直接拖入材质球都可以。

(两种方式的结果是一样的。第一种方式的优势在于,假如世界中有多个摄像机的话,切换摄像机 需要看不同的天空,就可以使用第一种方式来实现。)

天空球对材质的影响

Material中Metallic代表环境光对物件的影响,Smoothness代表对天空盒子的反射值的影响。

点选Windows > Lighting > Settings

环境光在Environment Lightings/Source改成Color,Ambient的颜色就会影响环境光

Environment Reflection/Source改成Custom,Cube map的贴图就会变成天空盒子反射贴图。

使用太空场景制作天空球

    下载软件Spacescape,下载地址alexcpeterson.com/spacescape/

Spacescape界面

    下载完成后,点击File > Open,Export Skybox,保存为PNG文件,图像大小设为1024, Export For设为UNITY。

    将图像文件导入Unity的Assets中,新建材质球,命名为skybox_20171012,将Shader设为Skybox/6 Sided,将右上角的窗口锁上,将对应方向图像拖进材质贴图中。如果图像边缘出现接缝的情况,有以下几种解决办法,按住Shift选中六张图片,Wrap Mode由Repeat改为Clamp,Filter Mode由Bilinear改为Piont(No Filter),Compression由Normal Quality改为None,以上三个参数某一个改变即可修复天空盒问题。Exposure调整好亮度,注意过高可能使天空盒出现明显的锯齿,Rotation调整天空盒的角度,Tint Color使天空盒变色。

  傅老师的教程有介绍过天空盒的简单用法

    官方的Standard Assets里面有天空盒的包,在Assets Store里面也可以搜索到丰富的天空盒资源。也可以试试自己制作天空盒材质。

    场景里面有一个漂亮天空盒效果非常棒,可以营造出玩家周围广阔氛围的错觉。现在就来试一试,给空荡的场景添加一个漂亮的天空盒吧。


MMD联动Unity学习笔记 Vol.6 天空盒的评论 (共 条)

分享到微博请遵守国家法律