交互媒体设计教案

Gaia for Unity完全攻略(3):深入解析

2019-12-26  本文已影响0人  shimmery

三、功能详解

跟着做完上一部分内容的朋友肯定有很多疑惑,什么叫Stamper?什么叫Spawner?为什么会Spawn出这么多东西来?为什么有时候又Spawn不出东西来?这一章我们就详细看一下,Gaia到底是怎么帮我们创建场景的。


Gaia Manager

首先谈一下Gaia Manager的默认设置。

Gaia Manager除了这些设置以外,还有4个分栏:


地形图章(Terrain Stamper)

接下来谈谈Terrain地形的创建。

Gaia是使用“Stamp”来塑造地形的。所谓“Stamp”,就是一张黑白高差图。默认安装Gaia时会送给我们不少这种图,有些据说还是来自于真实的卫星地图数据。

安装完Back Woods Gaming的8套附加Stamps之后还会有更多这种图。

我们可以利用这些Stamps来手动创建我们所需要的Terrain地形:

直接在“Gaia Manager”的Standard栏中点击“1. Create Terrain & Show Stamper”,Gaia会在场景中创建一个平整的Terrain,并附带了一个Stamper游戏对象。

选择这个Stamper,从Assets中选择一张Stamp图片拖到“Stamp Preview”的图片框内,场景中就会预览出这张Stamp图片所能产生的地形地貌。

我们可以调节这个Stamper的位置、旋转、大小,设置最大起伏程度,来将这个地形地貌“放置”到我们所需要的地方。场景中的蓝色半透明平面代表“海平面”,如果未来创建了水体,水体将会处于这个海平面的位置。去掉“Ground Base”选项,我们甚至可以通过上下移动来升高/降低整个地形。

点击底下的“Stamp”按钮,便可将这个“图章”应用于我们的Terrain。

这里说明一下相关的选项和按钮:

不断重复上面的过程,我们就可以利用各式各样的Stamps去“塑造”出我们想要制作的地形地貌了。

这里强调几个比较重要的参数设置:

Operation Type

Operation Type决定了这次Stamping会对当前Terrain产生什么影响,可以选择Raise(拉高当前Terrain)、Lower(降低当前Terrain)、Blend(按权重比例与当前Terrain相融合)、Stencil(取代范围内当前Terrain的高度数据)、Difference(计算出于当前Terrain高度的差值)等五种类型。

Distance Mask

Distance Mask可以设置一个边缘衰减曲线,使得Stamp能更好地与已有Terrain相融合。

另外,还可以专门设置Area Mask来决定在哪些区域以何种权重来应用Stamp,这里的Area Mask就是一个Alpha贴图,可以从图片读取某个色彩通道,也可以用程序噪波(Noise)来自动生成。

下面就是我手动混合了几个不同的Stamps之后得到的效果:

更厉害的是,我们还可以把这个效果保存成一个自定义的Stamp,以供未来使用!

在Gaia Manager的Advanced栏中选择“5. Handy Utilities... > Show Scanner”,场景中会出现一个“Scanner”游戏对象:

然后将场景中的Terrain物体拖进Scanner的“Drop Here To Scan”栏内,在Feature Type中选择一个分类,调整下Base Level值(也可以不调整),点击“Save Scan”,Gaia就会将当前的Terrain高差数据保存为一张16bit的黑白Stamp图。

然后我们就可以利用这张Stamp图来重建出这一特定的地形地貌,甚至还可以将其与其他Stamp图混合使用,以得到更复杂的地形地貌!

悄悄告诉大家,使用“Handy Utilities...”中的“Show Mesh Exporter”功能,还可以将当前Terrain导出成一个obj模型给其他软件使用哦!


全分辨率obj导入Maya

生成器(Spawner)与资源配置文件(Resource Data)

这一部分呢,我们来看看各种Spawner的使用以及如何为这些Spawner配置资源。

生成器(Spawner)

在Gaia Manager的Advanced栏的第三项中,我们可以手动创建各种Spawner。

这些Spawner其实都大同小异,使用的都是Gaia的Spawner组件。

Spawner组件分为这么几块内容:

使用“GR NatureManufacture”配置文件和“GR GameTexturesDotCom”配置文件所生成的地貌分别是这样的:

GR NatureManufacture GR GameTexturesDotCom

大家在切换资源配置文件的时候一定要注意,必须先手动将Terrain上所使用的贴图都删光,再去Spawn出新的配置文件中的贴图资源。

接下来,让我们手动把其他的Spawner都生成一遍,大家这时应该能够读懂每个Spawner的真实含义了吧!比如:

让我们来看一下究竟Spawn了哪些东西:

从这张Hierarchy的截图可以看出来,Gaia的文件结构还是非常清晰的。在“Gaia”下有Session Manager、Stamper、各种Spawner等等,然后每个Spawner所生成游戏对象就都放在这个Spawner的下面。对比下这个文件结构和Spawner Rules不难发现,每条Rule都对应一组游戏对象,有的Rule并没有生成任何物体,因此对应的游戏对象是个空组,有点Rule生成了很多物体,因此对应的游戏对象包含很多子物体。

资源配置文件(Resource Data)

如果大家认真读到这里并真的有所思考的话,一定会发现,Spawner中的规则设置根本就不完全嘛!这些参数根本不可能搞出岩石贴图贴在山体上,沙土贴图贴在平地上,草坪贴图混在中间这样的结果啊!其实,另外还有很大一部分的规则设置是被设置在资源配置文件里的,资源配置文件才是Gaia的核心魔力所在!!!

新建GR配置文件

让我们新建一个场景,并在Gaia Manager中新建一个GR配置文件,改名为“GR-MyResources01”。选择GR-MyResources01,并将其指定给Terrain Resources和GameObject Resources。

这个新建的GR配置文件中目前没有任何资源:

我们可以按照自带的GR配置文件里的设置来为GR-MyResources01设置Texture、Detail、Tree和GameObject。

配置Terrain Texture

在Texture Prototypes栏下,我们添加多个Texture类型的资源。以T_Ground_Sand_02_A_Sm为例:

可以看到,这里的Spawn Criteria就非常非常细致了。可以根据高度、坡度、贴图来“智能”地决定某一个位置是否适合生成该项资源。

配置Terrain Detail

Detail的资源配置与Texture的非常接近:

配置Terrain Tree

Tree的配置和Detail几乎一模一样,也是先设置与Terrain Tree相对应的内容,再设置Dna,最后设置Criteria。

配置GameObject

GameObject的设置是最复杂的,Dna和Criteria和前面讲的没有什么区别,但每个GameObject资源都包含有多个Instances,而每个Instance都可以被单独设置。

比如自带的“GR 3D Forge Exteriors”配置中,有一个叫“fi_vil_GaiaFenseFull”的Instance:

下面我们来自己配置一个GameObject资源:

在场景中先创建一个Plane来当做参考地面,然后添加一些模型来组成一个小院子的样子。这些模型都不要做父子连接。

选择一个GR配置文件,在Inspector中将其锁定,这样我们选择其他游戏对象时,Inspector中依然是显示的这个GR配置文件的内容:

在Hierarchy中选择除地面以外所有的模型,然后拖到GR配置文件的“Drop Game Objects / Prefabs Here”框中,就会自动将这些模型变成一个GameObject资源,并自动起了个名字。

我们可以把两颗树的“Rotate To Slope”选项关闭,设置随机Y轴旋转,设置较明显的缩放,增加大约0.3的“Failure Rate”。

我们还可以设置那一丛草随机多次复制,并沿着X/Z轴有一定的偏移,勾选“Virgin Terrain”。

创建一个Clustered GameObject Spawner,使用这个GR配置文件,设置每500个可行位置创建一群最多不超过6个的聚落,点击“Spawn”,Terrain的平地区域就会出现多个小院子,而且每个小院子还有所区别。

修改GR配置文件中的Spawn Criteria中的Max Slope值为25,再次“Spawn”,这次小院子就会出现在有一定坡度的位置了。

可以看到,在坡度上,只有树和草不会随着坡度而旋转。

小结:

不可否认,Gaia的GR配置文件确实非常强大,也非常具有扩展性,但整个配置过程真的谈不上“方便”。比起利用自带的GR文件和素材来“一键生成”整个场景,要配置好一个完全自定义的GR文件至少需要对Gaia有较高的熟悉度以及至少大半天时间的耐心调试。当然啦,配置完成之后的创建工作就非常爽快了。因此,是不是有必要去做这项工作,真的取决于你的项目复杂程度和实际需求。

个人建议,刚开始玩GR配置文件的时候,还是多多利用并学习自带的那几个GR配置文件吧。可以将其复制之后再修改,总比从零开始创建要方便一些。

上一篇 下一篇

猜你喜欢

热点阅读