本节书摘来异步社区《精通Unreal游戏引擎》一书中的第4步,作者: 【英】Ryan Shah(沙哈)译者: 王晓慧 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
第4步 使用BSP创建地图
精通Unreal游戏引擎
首先,前往Modes(模式)窗口(通常在项目主窗口的左上角),如图19所示。
注意:
该工具栏会根据您屏幕的分辨率隐藏一些选项。拖拉工具栏的底部和侧面边框扩展它,就可以看到所有选项!
下面使用BSP刷子创建一些几何体。在此之前,让我来解释一下什么是BSP,使用BSP的好处和注意事项。
BSP是可编辑的几何体,可以用来充实项目的场景。想一下,您在使用可定制的乐高玩具创建关卡时,可以很快得到雏形,但是乐高玩具并不适用于制作最终产品。为什么呢?因为BSP非常占用资源。BSP的主要功能是帮助您勾勒出一个关卡的轮廓,和正常的静态网格相比,它们在渲染的时候会消耗更多的内存和资源。
读到这里,您肯定要问“为什么一开始还要使用BSP呢?”因为BSP可以在Unreal Engine 4中快速简单地创建一个游戏关卡。在30秒之内,您就能创建一个可以自由行动的房间。
此外,您可以将任意的BSP(或者一些BSP的集合)转换为一个静态网格,然后将这个静态网格导出到您喜欢的3D建模程序中,进而以它们为基础创建最终的游戏关卡。一旦创建完毕,还能将该网格导回Engine来代替BSP,给您节省了大量的时间和不必要的努力。
关于BSP的更多信息,推荐您到Unreal Engine网站上或者在Unreal Engine 4的窗口中单击F1查看相关文档。
现在我们在场景中创建两面墙,把大块空间分割成几个小块,让我们的地图显得更有深度,也更有趣。
前往Mode(模式)工具箱(记得调整窗口大小以看到所有选项),选择类别BSP,如图20所示,单击Box(盒子)并拖拽它到项目场景视图中。
现在场景中在您放置BSP的地方已经有了一个大小合适的盒子。需要注意的是,如果您的盒子有一半陷在了地板里,或者有一半嵌入了墙中,可以使用Transform(平移)工具(由3个箭头组成,分别是蓝色、红色和绿色)移动盒子让它刚好坐落在地面上。如果您没有看到平移工具,在场景中直接单击盒子即可,如图21所示。
注意:
为了让您看清图像中的盒子,这里对地面添加了材质。如果书中图像的分辨率不高,可以从http://content.kitatusstudios.co.uk网站上下载本书中所有图像的高清版本。
这个盒子看起来不错,但是我们需要的是在当前场景中建一面墙。类似前面的操作,可以很容易地把盒子变成一面墙(记住:直接单击盒子,平移工具就出现了),先把盒子移动到地图中间,如图22所示。
注意:
当移动盒子的时候,您可能不经意地把它放在了场景中某个物体的上面,这个物体看起来像一个操控杆或者一面旗,且会从中出来一个蓝色的箭头。其中,这个操控杆是玩家的初始位置, 箭头是玩家面朝的方向。如果操纵杆在盒子内部,情况会很糟糕,因为玩家将出现在盒子内部,所以在移动盒子的时候请注意这一点。
您可以单击它,使用平移工具将操纵杆移出去,或者在Scene Outliner(场景大纲视图,通常在工作区的右上方)中找到Player Start,单击Player Start并用平移工具将其移出去。
现在,盒子已经在地图中间了,但是它看起来并不像一面墙。再次前往Modes(模式)工具箱(我们创建盒子的地方),您会发现Modes(模式)窗口的上方有5个按钮,如图23所示。
图 #1 Place (放置)—图标是一个立方体,前面放着一个灯泡。该工具可以实现把光照、BSP、触发器等对象放置到场景中。
图 #2 Paint (描画)—图标是一个画刷。该工具可以实现在静态网格上绘制顶点信息,例如在岩石上添加苔藓(您需要有带有苔藓的岩石材质,这是后续的内容,这里不再赘述)。
图 #3 Landscape (地貌)—图标是被雪覆盖的群山。该工具可以生成地貌(类似Far Cry编辑器)或者通过heightmaps(高度图工具)将事先创建好的地貌导入进来。
图 #4 Foliage (植被)—图标是几片忧郁的叶子。该工具可以实现同时放置许多网格,如草和树木。
图 #5 Geometry Edit (几何体编辑)—图标是被削去了四分之一的盒子。该工具可以实现编辑BSP对象的顶点。例如,您可以让盒子的一面变大或者变小;让盒子的两个顶角汇合等。
我们要把立方体变成一面墙,所以使用第五个工具—Geometry Edit(几何体编辑)。直接单击该工具按钮,Modes(模式)工具箱内的选项会发生变化。该工具会自动加载默认设置—Edit(编辑)模式,如图24所示。在这5个按钮下方有一些单选框,直接单击来实现模式的切换。
这里我们需要Edit(编辑)模式,所以不改变任何设置,但是有必要了解这些模式选项,方便以后使用。
小提示:
直接单击Geometry Edit(几何体编辑)按钮来激活该工具。Unreal Engine 4的大部分工具,会有一个明显的激活提示,通常工具按钮会变成橘黄色。Modes(模式)工具栏有一点不同,这里为什么要介绍这个呢?因为很多时候,当您想把一个BSP从位置A移动到位置B时,有可能不经意的选中了盒子的一面然后把盒子变大了。如何阻止这种情况发生呢?很简单!时不时地查看Modes(模式)窗口,以确定当前选中的是Place(放置)工具,而不是其他工具。
现在已经选中了Geometry Edit(几何体编辑)工具,下面单击选中场景视图中待编辑的BSP。因为我们想编辑之前创建的盒子,所以单击盒子。这时盒子的边缘被黄色和蓝色高亮显示(盒子的顶角上出现蓝色方块),如图25所示,表示盒子已经被选中,就可以进行编辑了。
注意:
单击盒子,Gizmo(小工具,选中对象中央的红绿蓝箭头组合)变成了椭圆形状?还是箭头变成了立方体?一旦出现了这两种情况,表示当前处于错误的Gizmo mode(编辑模式)。我们可以在Gizmo Selector(编辑模式选择器)中选择正确的编辑模式。Gizmo Selector(编辑模式选择器)在主场景视图中,位于屏幕的中间或者是右上方(这取决于您屏幕的大小),如图26所示。
黄色底的选项表示当前选中的编辑模式。一共有3个选项:左边的表示Transform(平移),可以在XYZ平面上移动对象;中间的表示Rotator(旋转),可以沿着XYZ坐标旋转对象;右边的表示Scale(缩放),可以使对象变大或者变小。
为了借助Geometry Edit(几何体编辑)工具将盒子变成一面墙的形状,我们使用最左边的Transform(平移)模式。如果该模式当前没有被选中,直接单击Gizmo Selector(编辑模式选择器)左边的按钮将编辑模式切换为Transform(平移)。
现在我们可以编辑盒子的大小了,但是如何精确地控制呢?一旦盒子被选中,可以选择盒子的一个面来编辑。所以首先要确定盒子处于选中状态,然后单击任意一面。正处于编辑状态的面会被黄色高亮显示,您可以准确定位它,如图27所示。
对于这个面,我们需要把墙变得窄一点。虽然厚墙也可以,但是窄墙看起来更加美观!在Transform(平移)编辑模式下,单击绿箭头,按住鼠标左键拖拽箭头直到盒子的厚度是原来的一半,如图28所示。
下面就使用上述方法创建一面墙。选中您刚刚编辑的那个面左边的面,拖拽其直至与外墙(首次创建项目时自动生成的)重合,如图29所示。
墙的一侧已经编辑完毕,单击这面墙的另一侧,拖拽其直至与另一面外墙重合,这时游戏场地被分割成了两部分,如图30所示。
如何让墙变得高一点?选中最上面的面,拖拽其与外墙的高度一致即可,如图31所示。
我们已经有了一面墙,把场景分割成了两部分。但是在完成之前,还有一些操作。退出Geometry Edit(几何体编辑)工具,前往Modes(模式)窗口,单击Place(放置)按钮(Modes窗口的最上面,其图标是一个立方体,前面放着一个灯泡),如图32所示。
然后单击选中刚刚创建好的墙,如图33所示。
同时按Ctrl+C组合键复制这面墙,然后同时按Ctrl+V组合键粘贴得到墙的一个副本。也可以右键单击这面墙(Mac上是Ctrl键+鼠标左键),在下拉菜单中选择Edit(编辑),在弹出的二级菜单中选择Duplicate(复制)。
此时您可能看不到复制得到的墙。到场景视图的中间或者中间偏右的位置找到Gizmo Selector(编辑模式选择器),选择中间的Rotator(旋转)模式。将这面墙向左或向右(使用出现的标示符中的蓝色区域)旋转90°,这时在地图中间出现了一个大大的X或+号,如图34所示。
如何使得新建的墙与外墙恰好吻合呢?使用之前学过的方法调整墙的长度,即使用Geometry Edit(几何体编辑)工具进行缩放得到合适的尺寸。
现在场景中已经有4个完美分割好的房间让我们来创建一个很酷的项目。但是您有没有注意到哪里有些不对劲,好像忽略了很重要的东西?
由于这两面墙的缘故,这些房间之间不能穿梭。如何解决这一问题呢?下面我们将学习Subtraction Volume(减法体)。