第九集 地形的设置
我们已经学过了关于编辑器和引擎的基本知识，
现在我们来享受一下从草稿到建立真正level的乐趣。
那么作为开端呢，显然我们要打开编辑器， 全新的场景，打开file下面new，
输入名称，那么我就给它取名为eat3d_level， 把单位改成1，这个很重要。
heightmap resolution可以随意，如果选128 128， 得到的就是一个128平方米的岛，非常小。
所以呢大家需要大一点的，一般是在1024到4096平米之间，
1024平米还是有点小，我们建个2048平米的， 确认单位是1.
现在我们就有一个全新的场景了，除了基本的天空、 光线、海洋和地形之外，其他什么都没有。
把speed改成10，然后我们四处看看， 可以看到一个基本的平地，面积为20平米。
要确保地形的平铺分辨率尽可能的高， 打开rollupbar，edit标签，layerpainter，
找到tiles resolution，点击修改， 可以看到四个方形的分辨率都是512乘512，
所以这个越高越好，点击四个方形，把tiles的分辨率 改成248乘248，这样你的构造和材质会更加sharp和iress
我们刚才说到现在的地形是在一块平地上， Z轴为0，海洋就悬浮在它上面一点。
现在我们该修改这里的几个参数，更改水， 并画出岛的草稿图，
要做这些呢我们要确认编辑器打开 了工具栏的地形功能，可在空白处单击右键，
确认terrain toolbar前面打了勾。
点击terrain按钮，这个就是terrain editor， 这些蓝色表明地形是在海底，
我们也可修改，可以手工来画地形，增大缩小半径，
把它稍微增大一点，增加高度，现在就可以画一些岛屿了，
这些黑色的就是地形，先把这个放到一边。
现在我们有了几个基本的岛屿，有些不怎么像。
我们能做什么呢， 有几种不同的可能从草图来建一个level，
如果要创建一个典型的基于岛屿的level，如果已经有 一个只有axier的level，那么这些东西都不需要了。
但如果你用axier做了一个，那么有两个中可能，
要么由thirdparty 应用程序得到一个heightmap， 比如jellcontrol。
我们可以做一下试验，从那个应用程序输出heightmap 海拔图，确认把它输出到bitmap 8bit。
可以打开file的import heightmap， 要确认文件类型是这个，
16bitsPGMfiles也行但是有时候会出问题， 所以我还是建议选8bit bitmap。
所以这个过程非常直接明了。
现在我来讲讲这些功能， 要创建一座非常标准随机的岛屿，
可以点开tools下面的generate terrain， 在这之前我想把水平面调高一些，
目前的水平面是16，我们可以看到level和地 形的边界，我们要避免这样的情况。
modify下面的set water level， 现在水平面高度在Z轴是16米，
我们改成64，现在就看不到刚才的平面了。
现在我们来建一个基本的岛屿，这 些参数我们保持默认状态，不用改动。
可以看到现在我们这里有一个随机的heightmap， 看看场景，可以看到大致像山的一个东西
这些山都非常非常高，我们不想要这样， 打开modify的set maxheight，改成256，
现在山就变得很矮了，一般山的高度不要超过这个。
generate terrain里面还是保持默认值， 暂时把terrain editor放到一边。
现在可以看到非常平坦的岛屿，我们要大一点的东西，
把set maxheight下面改成400左右， 我们会用到随机的工具比如现在这个。
但有一点比较好，就是用它可以做出很棒的东西，
这个就是我们的岛屿，大概就是这样就 不需要做太多改动了。
我们可以进入游戏，把镜头转到地形附近， 确保layer不会立刻消失。
按ctrl+G进入游戏，所以我们做好了基本的地形， 不过明显还没有结构，
有水、海洋和山等等，所以我们现在打好了基础。
记住如果想要自己的heightmap，不想要像这样的随机 地形也可以的。
或者打开generate terrain，自定义这些参数， 可以让它更尖，更模糊，有更多细节，
可以改feature size，所以大家可随意更改再 点击ok，直到自己满意为止。
现在呢可以看到山变得非常陡， 因为sharpness设置的很高，
我们还是把它设置成默认的， 现在就有了这个看起来比较舒服的山，
这个控制板和rollupbar里一样，terrain下面的 modify，等下会讲到。
这里有很多用用的功能，都可以用到地形上， 如果觉得太安静的话可以放入noise声音，
或者觉得太喧闹可以把它变得更平滑。
这些是brush，要修改的话都可以，等等等等， 非常棒的东西。
要记住用到山的时候，除了set maxheight， 还可以点击smooth slope，
这个只能让山顶倾斜，还有这个smooth beaches/coast， 可以让level周围的东西变得平滑，下面我来演示一下。
smooth slope现在我们的山顶已经够圆滑了， 如果碰到很尖的山，就需要经常用这个。
smooth beaches/coast，大家可以自定义这个参数， 这里就用默认的，
现在这个非常平坦，不需要让周围地形变平滑。
所以这里有很多可以用的功能，可以得到不同的效果。
这个normalize功能很有用， 基本上可以让它看起来更逼真和赏心悦目。
所以我们至少要用一次这个normalize，这些山大了一些，
周边的区域变得更陡峭，这样就会让level看起来 更舒服。
如果用的是heightmap就应该用到这两个， 还可以让地形更加随机化，不过这个我们暂时不讲。
接下来我们浏览一下lighting，点开tools的lighting， 不知大家有没有注意到，
这三个跟工具栏的这三个按钮是一样的。
我们打开lighting，这里面都是标准的设置， 这个是heightmap，把时间改成早上9点，
还可以改变太阳的方向，还可以改变南北极，
比如现在就会有类似与瑞典的太阳， 而不是典型的月亮和太阳。
还可以修改黎明和黑夜的时间， terrain oclusion要设置成high，
这样具有更高质量的地形oclusion。
现在我们设置好了岛屿，还有非常基本的lighting、 海洋，我们放入一些构造来装饰一下。
关掉terrain editor，四处看看，太阳设置好了， 把镜头转动得快一点，
首先我要确定从哪里着手，可能这里，不知道。
这里看起来非常棒，我们选中这个小岛来创建场景，
背景有一些很好看的山，要确保不会丢失这些bot， 可以选择save for camera标签，按ctrl+F1，
在下面console可以看到point设置成1， 进入游戏看看，看起来非常棒。
我们先来创建一些材质构造等，点开texture按钮，
我们可以看到这个是黑白的棋盘格，这 是默认的地形结构。
在游戏里我们希望有至少三种地形材质， 比如尘土、草地，还有石头等材质。
我们把默认的 layer改成grass， 它用的是这个材质，要更改只要单击，
就打开了material editor， 把它放大一些，这儿有几种材质可以用，
选这个grass5看看什么样，确认这个选项加亮了， 点击assign material，可以看到material改变了，
我们还要更改地形纹理结构，因为现在还是默认的那个， 点开change layer texture，选择默认的灰色。
如果要让地形有更多差异，可以导入绿色的， 陡峭的的结构纹理，我们之后会讲到这些。
把这个放到一边，来看看，仔细看的话可以看到 草地结构不过还是白色的，就要在上面涂色。
点击layer painter，往下看， 很明显只有一个layer 就是grass，给它上点色，
比如深绿色，把半径稍微调大一些， 就可以开始涂色了，
现在起来有些像草地了，大家可以改成任 何颜色，愿意的话可以换成枚红色。
既然这是草地，我们还是用深绿色，把这些都涂成深 绿色。
应用了这个修改之后，要打开generate surface texture，在那之前我们还要多放几个terrain layer到这里。
我们来新建一个layer，命名为pebbles鹅卵石， 也要改材质，打开terrain，这里有很多材质，
我们选中pepples_3，点击assign material就可以了， 一定要确保material被选中了。
然后把layer换成灰色的，可以看到layer在这里， 现在我们有两个layer，开始涂色，
看起来太平坦了，要设暗一些 ，把颜色改成棕色，看起来不错。
现在我们有两个layer可以准备涂色，grass和pebbles。
对了顺便说一下，之前我犯了一个错误， 这个很容易会犯的。
点击grass，把半径缩小一点， 现在涂色的话是默认的白色而不再是绿色了，
这是因为选颜色和亮度的时候， 我们要点击apply来记录设置。
如果没有点apply的话，点击编辑起其他 的东西之后，之前的修改就会恢复到默认，
所以一定要确认保存了layer的修改。
pepples也是一样，现在涂色的话也是白色， 之前的修改都丢失了。
所以选深棕色，现在看起来就好多了， 已经有了一些关于结构和颜色的信息，
所以不用改动太多，要不然看起来会失真。
现在我们有两个terrain layers， 我们再创建一个layer，用来绘制背景的山，
所以命名为mountains，材质选cliff island，选中山， 点击assign material，texture换成灰色的，
在layer painter下面可以看到第三个layer， 现在就可以绘制山了，颜色有点太深了。
现在可以看到这个是斜坡石头的结构， 如果不想在平地绘制这样的结构，
可以更改slopedegree坡度， 现在我把最小的坡度改成45，
现在呢，在平坦区就不能绘制了，但是如 果在陡峭的边缘还是可以用的，把半径放大一些。
可以看到坡度在45度以上的都被绘制了 ，低于45度的就没有。
所以想让结构更多样化的话，这个功能就非常有用。 45太大了，我们改成15，这样更好。
把半径加得更大，因为我们要绘制整座山。把镜头 往后移动，现在我们用选择的结构绘制了这些山，
还是有一些空白处，因为它们都是平地， 坡度在15度以下。
现在要绘制岛屿的其他地方，半径改成1000， 会有一个超大的brush，可以一下绘制整座岛。
现在最好把这个保存，因为有时候会崩溃， 点击save，就保存这个项目了。
现在确保绘制了整个level，还是有这些白色的 blosh，明显坡度都是15度以下的。
我们想用草地来填充这些区域，坡度范围调 成0到15，现在只有这些空白区域被绘制成草地，
先点击apply，确保设置保存好了。
半径调到1000，确保刷到每个角落。 现在按shift+F1，跳回到场景开始的地方。
可以看到非常棒的场景，有草地和石头 相互相交错，甚至会受背景的山所影响。
我们打开generate surface texture， 分辨率越高就能看到更多的细节，设成4096。
terrain color multiply我们改成3， 因为一种太暗了，用这个会更标准，
点击high quality，现在所有的东西应该 都被baked，如果重启editor，加载这些level，
抓住这个机会我们打开explorer， 点开game，levels，这就是我们创建的level，
这个文件夹是自动保存的，打开里面有几个文件， 打开tags_txt，这就是之前我们保存的camera tag的坐标，
按ctrl+F1，shift+F1操作的， 现在我们只加载了第一个。
要记住在场景的任意一个地方， 按shift+F1可以回到同样的地方。
这个terraintexture_pak， 我们的texture就是bake在这里。
level_pak，所有level都在这里， ingame version exgitable会加载到这里。
cry文件本身就是一个加载的level，只能 被编辑器读取，game ingame只读pak文件。
大家要记住，如果在level操作， 想要所有的修改应用到游戏当中，
你可以按ctrl+E，或者进入export to engine， 快捷键是E，可能有什么警告，没有，很好。
现在我们设置好了AI，所有东西都输出去了， 这些level pak也会更新。
所以如果进入游戏，会读取我们这个level，所以要始终 记住这一点。by ranzon