张玉婷
(金肯职业技术学院 人工智能与信息工程学院,江苏 南京 210000)
随着三维技术和虚拟现实技术的发展,现实场景的数字化可以更好、更便捷地展示特定的区域、场馆、风景。其科技性、艺术性和身临其境的观感,可以给人们提供跨越时间和空间的沉浸式体验。近年来,国内外各大高校一直努力进行硬件、软件的数字化、智能化、信息化的建设。在以往传统的校园场景三维建筑动画的基础上,融入新的虚拟现实技术,增加体验效果。本文以金肯职业技术学院为例,介绍基于虚拟现实技术的三维校园漫游系统的设计与实现。
首先确定了应用虚拟现实技术实现三维校园漫游的方案。使用CAD、3ds max制作三维模型,在三维软件中对建筑物、地形、实体对象进行模型的创建和优化、展开UV,再导出FBX文件到Unreal Engine 4(以下简称“UE4”)中进行整合和搭建场景。在其中完成植被、灯光、材质、碰撞等设置。通过蓝图可视化脚本或者C++语言,添加有趣、恰当的交互设计,最后与VR硬件设备进行打包安装、测试发布,完成虚拟校园的三维漫游系统的设计与制作[1]。
真实场景的数字化还原要有准确的校园各场景建筑物分布信息。金肯学院有南、东、西3个校区,已有的CAD图纸不完整。通过实地勘测与拍照结合的方式,采集、整理了地形图和建筑设计图等数据,绘制了校园内的各教学楼、体育馆、图书馆、宿舍区、食堂、办公楼、实训楼等区域分布图,划分出主干道和建筑小品的区域[2]。
在前期绘制的CAD图纸的基础上,通过照片建模的方式,在三维软件3Ds Max中,1∶1还原各主要建筑物的外观模型。由于整个场景数字化数据较大,因此在创建过程中,务必要做好模型面数的控制,及时优化、处理错漏面,最后导出 为FBX格式的文件。
打开UE4,在新建项目中选择蓝图,选择第一人称,创建空白项目。点击导入命令按钮,将FBX文件导入引擎中。
第一次导入的时候,通常需要选择设置选项卡。可以根据系统要求设置“自动创建碰撞体”“创建灯光UV视图”“合并模型”等项目内容。此外,还可以选择“新建材质”或者“导入纹理”来决定导入模型时,是否创建材质球和附带相关的材质素材。
将地形、建筑物等模型依次导入后,UE4会对导入有问题的部分进行提醒,通常要一一查看模型、材质球、纹理贴图等效果是否需要修改。必要的时候,要返回到三维模型软件中进行调整。解决问题后,对各个文件进行分类整理,方便以后调取使用。
由于整个校园的建筑外立面设计独特、风格统一,系统采用了大量拍摄的实景照片,使用Photoshop软件进行后期处理,Substance Painter软件绘制纹理,作为建筑的贴图使用。此外,使用UE4虚幻引擎自带的材质系统为模型添加外观效果[3]。
打开UE4虚幻引擎,在内容浏览器空白处单击鼠标右键,选择创建新材质。双击材质球,打开UE4的材质编辑器,在界面中空白位置按下数字键3,创建一个三维数组。点击Constant色块可以设置具体的RGB颜色。按住鼠标左键不松手,拖拽连接到基础颜色的节点上,完成材质颜色的创建。同样的原理,按住数字键1,创建一个一维数组,设置参数在0~1的任意数值,再拖拽到粗糙度或者高光度的节点上,就可以设置相对应的效果。之后返回场景中,将材质球附在模型上,就可以看到实际效果。漫游系统中,可以通过复制已有的材质球,在编辑器中修改其中的某些参数,来得到另一个新的材质。基础材质如图1所示。
图1 基础材质
在系统中,有些模型需要添加纹理贴图。可以在材质编辑器界面中,按住U键的同时单击鼠标左键,就会创建新的节点纹理坐标。在其中导入处理好的贴图,将输出端连接到UV引脚上。在左下角的界面中输入数量,可以调整贴图的比例以适应模型的大小。
本系统设置了第一人称的视角,带上VR眼镜之后,仿佛置身于现实场景中。参观者通过对手柄的控制,实现走、跑、跳跃、转向、瞬移等运动效果,模拟真实场景中人的基本运动动作。
系统添加了对话系统。当人物走进特定的区域,或者点击场景中的某个道具,画面中会出现相关的校园介绍。为了增加参观者的体验感,这些内容以动态文字、动画视频结合的方式呈现,伴以适合的音乐,提升氛围感和视觉效果。
系统设计了自动导航,默认情况下顺着设计好的路线进行漫游。通过右上角的同步小地图,体验者可以一目了然地掌握所在位置。同时,考虑到校区区域范围大,在制作系统时,设计了通过快捷键或者操作VR设备配套的手柄,可以跳转到不同的校园区域,精准定位到各场景,实现空间的交互。
为了添加趣味性,系统特地增加了一些交互小游戏。比如在漫游到湖心亭的时候,体验者通过手柄射线点击UI界面上的按钮,开启材质贴图的样式和颜色的切换功能,欣赏由“一键换装”带来的春夏秋冬不同的风景。
高职院校各类实训室、工作室的建设,也体现学院的成果和特色。系统特意增加了室内漫游的内容,因此系统需要实现360°室外场景自由旋转查看的功能和用于室内漫游的角色,以及两种角色相互切换控制权的设置。
在UE4中选择蓝图类创建Pawn,创建一个能被操控的角色。在编辑界面中,添加组件里面新建弹簧臂组件。以这个点做一个牵制,以弹簧臂组件为父类,添加摄像机组件为子类,弹簧臂就能牵制摄像机进行360°的旋转查看。接着点击弹簧臂组件,在细节面板中勾选使用Pawn控制旋转,弹簧臂会跟着鼠标进行旋转。
接下来,通过蓝图输入一些控制逻辑,来实现鼠标输入的事件。在事件列表界面中,输入Turn,调取“输入轴Turn”;再输入LookUp,调取“输入轴LookUp”。将“输入轴Turn”里面的Axis Value连接关联的“添加控制器Yaw输入”,其中Yaw设置的是Z轴。将Lookup连接关联的“添加控制器Pitch输入”,Pitch对应的是Y轴。设置完成之后,摄像机就可以跟随鼠标旋转。接着把蓝图类放置在场景中,调整位置、高度。可以通过调整摄像机的目标臂长度的数值,将视角调整得远或者近一些。设置完成回到场景,在细节面板中,自动控制玩家选择“玩家0”。保存文件进行编译,查看设置效果。如果旋转生硬,可以在蓝图类中选择弹簧臂组件,启动摄像机旋转延迟。这样旋转角度时,就会更加丝滑自然。
接下来继续创建第二个用于室内场景漫游的角色。在内容浏览器中单击鼠标右键,选择蓝图类,创建一个有碰撞的Actor角色,用来模仿人在场景中真实漫游。
先添加弹簧臂组件和摄像机。摄像机放在弹簧臂组件的子类里面,但弹簧臂长度要改成0,用来模拟人的头部旋转查看场景。在右侧的编辑面板中,勾选“使用Pawn的控制旋转”。在设置完Z轴Y轴坐标后,还需要设置角色前后左右的移动。在场景漫游角色的事件图表界面中,添加“输入轴Move Forward”和“输入轴Move Right”,再调出“获取控制旋转”,在Return Value右键引出“分割结构体引脚”,使用Z轴Yaw创建旋转体,Return Value中获取向前向量,再获取向右向量Add Movement,添加移动输入。系统已经封装好能够让角色移动的蓝图节点,只要传入对应的参数即可。设置完成之后,当按下键盘W,就会返回数字+1,按下S就会返回数字-1,如果没有输入,就会返回数字0。有数值之后,角色就会移动。当按下W键,传入的是+1,移动的方向就会参考向控制器正前方移动;当按下S键,传入的是-1,向前的向量乘以-1,变成向后的向量,就会向后移动。同样的原理,按下A键输入的是-1,向左移动;按下D键输入的是+1,向右移动。将设置好的Actor角色拖动到场景中编译测试。如果角色移动速度或快或慢,可以在Character Movement组件中设置最大行走速度,改成适合的数值即可。
最后,设置两个角色控制权的切换。为了能够快速地实现功能,可以把这些蓝图写在关卡蓝图里面。
打开关卡蓝图界面,先创建两个自定义事件,一个是切换到场景漫游,另一个是切换到360度自由查看。接下来将两个蓝图类拖拽到关卡蓝图界面。新建“获取玩家控制器”节点,连接“使用混合设置视图目标”,引脚连到“切换到场景漫游”,再将“场景漫游角色”连接到New View Target,Bland Time(混合时间)设置成2.0。设置的效果是经过2 s时间,将当前的画面,混合到新的画面。Bland Func(混合函数)选择“VT混合交叉缓动”,就会有缓动效果。
再用同样的方法,完成从另一个角色的跳转设置,实现2个镜头之间的混合。之后,在事件图表界面中输入F键、空格键和键盘,直接跳转到键盘事件,用FlipFlop制作一个流程控制。按下F走A,再按一下走B,再按一下再走A,往复循环的功能。实现由A引出切换到场景漫游,由B切换到360°全景漫游。
为了更好地展示和介绍学院信息,系统在场景中设置了几处通过屏幕播放视频的组件。
先提前制作好相关的mp4格式的视频文件。在内容文件夹里面创建新文件夹存储相关文件。在空白处单击鼠标右键,在弹出的快捷菜单中选择Media里面的Media Player。再次单击鼠标右键,在弹出的快捷菜单中选择创建蓝图类,选择Actor角色,命名之后双击打开编辑界面。在左侧的组件中选择Cube,调整尺寸大小,做成类似显示屏的模型,用来播放视频使用,再根据需求设置材质。
在关卡蓝图中,调出Event BeginPlay事件。创建变量,选择Media Player中的Object Reference对象引用。在默认值中选择创建的Media Player。再将Media Player拖入编辑区,拖出引脚连接Open Source打开源。在下方选择需要播放的视频。再将创建的Actor拖入场景,并编译保存。此时场景中可以播放视频画面,但缺少声音。这是因为这种播放视频的原理是将视频作为材质附在模型上。因此需要再设置声音。双击打开Actor编辑界面,在Cube组件中找出Media Sound组件。在编辑器的Media Player里面找到创建的播放器。再次编译,视频画面和声音都同步出现了。
本系统使用了三维软件、虚幻引擎和VR设备,创建了校园的虚拟现实漫游系统,对现实场景数字化构建、虚拟交互体验,进行了实践操作。由于相关技术难度较大,更新换代较快,目前国内的研究还需要学习和补充一些国外的技术和思维。随着技术的发展,还会有更多的虚拟数字化应用,适用于更多不同的领域,拓展时间和空间的范围[4]。