计算机系统应用  2019, Vol. 28 Issue (12): 112-117   PDF    
基于Minecraft的虚拟漫游系统
秦红志1, 刘雪红2     
1. 延安大学 数学与计算机科学学院, 延安 716000;
2. 延安大学 生命科学学院, 延安 716000
摘要:针对当下校园虚拟漫游系统的推广情况和高校信息化建设战略的重要意义, 基于Minecraft平台, 采用SketchUp、MCEdit、WorldPainter等为场景构筑建模设计, 结合Minecraft中的命令方块指令和游戏模组来实现系统的交互, 通过上传地图至服务器, 完成系统的开发.最终研究的结果表明, Minecraft有极佳的展示效果和丰富的动态交互功能, 开发难度较低可推广, 是虚拟平台建设的一个有力工具.
关键词: 虚拟漫游系统    Minecraft    命令方块    虚拟校园    交互设计    
Virtual Roaming System Based on Minecraft
QIN Hong-Zhi1, LIU Xue-Hong2     
1. College of Mathematics and Computer Science, Yan’an University, Yan’an 716000, China;
2. School of Life Sciences, Yan’an University, Yan’an 716000, China
Abstract: The campus virtual roaming system is the important content of college information system development strategy, but universities do not widely use it currently. By reducing the cost and technical difficulty, taking a university as the virtual space, the system based on Minecraft platform is constructed by using SketchUp, MCEdit, and WorldPainter to build the scene, and taking command block instruction and Game Mod to implement the function of interaction. Through the upload the map to the server, the system is established. This system has perfect scene and strong dynamic interaction, which is convenient for users to develop and access the system. Experiment proves that Minecraft is a very useful tool for designing a virtual platform.
Key words: virtual roaming system     Minecraft     command block     virtual campus     interaction design    

随着硬件设备性能的提升, 促使虚拟现实技术迅猛发展. 虚拟校园作为虚拟现实技术的一类应用, 是当下数字化校园建设的重要组成. 目前国内外许多高校、科研机构和公司都在从事虚拟场景漫游的研究, 目前的虚拟漫游系统主要分为基于全景摄影技术和基于三维模型实时渲染技术的两种主流类型[1]. 全景摄影技术所制作的虚拟场景拥有较强的真实感、沉浸感, 成熟的技术平台使之技术难度相对简单, 但对硬件的投入和依赖程度较大, 交互性也极低. 三维模型实时渲染技术所制作的虚拟场景拥有更好的沉浸感, 高自由度的交互性与跨平台访问等特性也使之成为目前开发主流技术, 同时以基于Unity3D开发的虚拟漫游系统更是占据着主流, 但面临着开发难度大、相关硬件设备价格高昂、交互存在局限性等问题, 使其大范围的推广面临阻力. 本文参考当下各高校基于不同平台建设的虚拟校园系统, 给出新的基于Minecraft的三维虚拟校园建模设计, 借助Minecraft的超高自由度和优质的渲染效果进一步增强用户使用虚拟校园系统的交互性与沉浸性体验, 可跨平台的在电脑、手机上访问, 与全景摄影技术和主流开发软件Untiy3D相比, 其开发过程无需设计登录界面、无需添加物理碰撞检测、无需构造虚拟天气操控, 无需复杂代码实现交互, Minecraft本身提供登录界面, 可自由切换创造、旁观者模式开启或关闭物理碰撞, 更自带雨、雪、雷暴、晴4种天气, 用户有新的需求只需添加相应模组即可实现, 便于维护. 相较于全景摄影技术使用的高昂的全景摄影设备, Unity3D在不同平台时多版本的大量开发成本, 基于Minecraft平台的虚拟漫游系统构建只需要具备摄影功能的普通设备如手机来实现信息采集, 只需要对地图格式转换即可在手机上电脑上实现访问. 终由于其较低的开发难度与低廉的价格, 使其可大范围推广虚拟场景漫游技术的应用. 研究以某大学为例, 通过校园实景数据收集、蓝图构造、三维建模、模型导入转化、材质细节设计、渲染输出等环节实现, 以全新的角度展现了校园全貌, 起到良好的宣传与展示效果.

1 虚拟漫游系统

虚拟漫游系统[2]是虚拟现实技术的重要应用之一, 虚拟现实又称VR, 近年来智能化VR设备和相关平台的发展正旺, 人们得以将数据转为可视化, 可操作, 可交互的虚拟环境. 目前, 建设虚拟漫游系统的工具种类繁多, 目前主要以基于Unity3D[3]的平台为主, 而当下一款沙盒建造类游戏软件Minecraft凭借高自由度玩法在国内外备受欢迎, 最终的研究表明, Minecraft是一款优秀的建造工具, 低成本低门槛的开发也使得普通高校也得以推广使用, 丰富的自然环境和优质的渲染效果使得用户有极佳的用户体验.

2 Minecraft平台

Minecraft[4,5]是一款基于Java开发的高自由度的沙盒建造类游戏, 其开源的属性致使其可以添加大量模组, 特别是1.4.2版本之后命令方块的开发, 使得其一跃成为了一款优秀的打造系统的软件. Minecraft最大的优势是开发难度低, 由于可以实现多人互联, 使得用户们可以轻松的联合打造期望中的“世界”. Minecraft支持物理逻辑上的红石电路系统, 支持JSON、Python等脚本语言, 兼容各类操作系统, 实现跨平台的使用.

2.1 开发流程

开发过程基于软件工程思想[6], 分析需求得到可行性报告, 进而设计各个功能. 图1所示, 首先通过实地照片拍摄、校园内街景地图采集等方式, 搜集构建虚拟校园所需的建筑外观、位置分布和园林植被等基本数据. 然后基于SRTM数据库[7], 使用Microdem[8]导出校园的地形分布灰度图, 并进一步通过WorldPainter[9]软件制作校园地形模型. 基于此地形模型, 利用SketchUp[10]构建校园建筑的三维模型并以特定格式导入MCEdit做园林植被、校园设施等细节修饰. 然后在Minecraft中打开地图并构建红石电路, 利用命令方块代码实现交互设计, 完成后进行测试并加载在服务器上.

图 1 虚拟校园系统开发流程

2.2 关键技术 2.2.1 场景地形建模技术

对于处于复杂地形的校区, 采取直接利用现有的地形数据做建模. 用由美太空署NASA和美国防部国家测绘局NIMA以及德意航天机构联合测得的陆地数字高程模型DEM数据库SRTM, 导入数据到MicroDem当中, 根据已知经纬度得到校区地形灰度图, 并将所得灰度图导入WorldPainter修饰细节, 从而建立起地形模型. 图2给出了DEM数据库导出的地形模型灰度图与卫星地形地图的对比图, 结果显示前者符合真实地形的样貌.

2.2.2 场景建筑建模技术

首先使用SketchUp对建筑进行三维建模, 并将.3ds格式的模型导出到poly2vox[11]当中, 将三维模型转化为体素模型, 并进一步导出.kv6格式文件, 运行kv6ToSchematic.jar程序, 依次选择使用默认调色、使用彩色黏土, 将.kv6文件转换成schematic格式文件并导入到MCEdit当中, 并对地图物体材质、光源、植被等进行细节修饰. 图3所示给出建模的整体效果图.

图 2 导出地形灰度图与卫星三维地图对比

图 3 建设完成的校园模型鸟瞰图

其中建筑的3DS模型向体素模型的转化过程, 结合现有研究方法[1214], 采用OpenGL对三维模型的数据进行读取, 得到如表1的数据块, 由此得到三维模型顶点坐标 ${P_{\rm{min}}}\! = \!\left( {{{{X}}_{\rm{min}}}, {Y_{\rm{min}}}, {{{Z}}_{\rm{min}}}} \right)$ ${P_{{{\rm{max}}}}} \!=\!( {{{X}}_{{{\rm{max}}}}}, {Y_{{{\rm{max}}}}}, {{{Z}}_{{{\rm{max}}}}}) $ , 计算得到模型的AABB包围盒的中心质点坐标Pcenter、边长LXLYLZ和体积Vsize等数据并建立虚拟包围盒.

表 1 三维模型数据块

${P_{\rm{center}}} = \left( {\frac{{{{{X}}_{{{\rm{max}}}}} + {X_{\rm{min}}}}}{2}, \frac{{{Y_{{\rm{max}}}} + {Y_{\rm{min}}}}}{2}, \frac{{{{{Z}}_{{\rm{max}}}} + {Z_{\rm{min}}}}}{2}} \right)$ (1)
${L_x} = {X_{\rm{max}}} - {X_{\rm{min}}}$ (2)
${L_y} = {Y_{\rm{max} }} - {Y_{\rm{min}}}$ (3)
${L_z} = {Z_{\rm{max} }} - {Z_{\rm{min}}}$ (4)
${V_{\rm{size}}} = {L_x} \times {L_y} \times {L_z}$ (5)

随后将模型中其他的点P=(X, Y, Z)与顶点坐标进行比较, 当点P坐标值满足如下条件:

${X_{\rm{min}}} < X < {X_{\rm{max}}}$ (6)
${Y_{\rm{min}}} < Y < {Y_{\rm{max} }}$ (7)
$ {Z_{\rm{min}}} < Z < {Z_{\rm{max} }} $ (8)

添加点P至包围盒中. 部分代码如下:

//读取顶点坐标

float [] pmin = new float []{0, 0, 0};

float [] pmax = new float []{0, 0, 0};

//添加点至包围盒

void add(float []p) {

if (p[0] < pmin[0]) pmin[0] = p[0];

if (p[0] > pmax[0]) pmax[0] = p[0];

if (p[1] < pmin[1]) pmin[1] = p[1];

if (p[1] > pmax[1]) pmax[1] = p[1];

if (p[2] < pmin[2]) pmin[2] = p[2];

if (p[2] > pmax[2]) pmax[2] = p[2];

}

建立三维数据包围盒后, 输入分辨率N, 将包围盒划为N×N×N个大小为 ${{{L_x}} / N} \times {{{L_y}} / N} \times {{{L_z}} / N}$ 的列表, 随后遍历列表对其中的三角面片体素化. 将得到的体素化数据进一步渲染材质, 颜色并导出体素模型. 算法流程图如图4所示.

2.2.3 交互技术

该系统使用Minecraft提供的交互底层作为运行机制, 可通过WASD实现前左后右的行走, shift和空格分别实现下落和浮空, 鼠标拖动实现自由移动视角. 到达特定建筑时, 通过红石电路和命令方块代码实现如图5所示的文字讲解功能. 可以依照需求实现白天至黑夜特定时段的切换, 雨、雪、晴 3种天气的自由切换和不同建筑间传送切换等交互功能, 下面列举以上交互命令:

#设置文字讲解内容及显示时间与持续时间

/title @a times 0 100 0

/title @a title {“text”:”先锋广场”, ”color”:” gold”}

#设置时间为日出至午夜时间段

/time set 0~24 000

#设置天气

/weather [rain]|[clear]|[thunder]|[snow]#【雨天】【晴天】【雷雨天】【雪天】

/tp 用户id <x><y><z> #将用户传送至特定的坐标处

图 4 算法流程图

图 5 到达不同位置的文字介绍界面

2.2.4 地图权限保护技术

加载地图至服务器时, 需设置不同的权限, 管理员有对地图的包括插件、模组、地图本身的全部的修改权以及对访问地图用户的管理、封禁等权限, 普通用户无法使用包括TNT、熔岩、高频红石等在内破坏地图样貌的方块. 通过服务器管理命令和相关检测插件保证正常访问的用户的使用.

/OP [User ID] #设置该用户为管理员

/ban [User ID] #禁止该用户登录

/unban [User ID] #解除该用户封禁

/ban [IP] #禁止该IP下的所有用户登录

/tempban [ID/IP] [time] #封禁该用户或者IP一段时间

/mute [ID] [time] #禁止该用户发言

/lava-fire-spread: true #阻止岩浆引起的火焰传播

/flint-fire: false#阻止打火石产生火

/lighting-fire-spread: true#阻止闪电引起的火焰传播

3 系统实现 3.1 总体规划

本漫游系统不仅仅提供一般漫游系统单纯的浏览参观, 还可以让用户实现在现有建筑群里构造自己的寝室、花园等个性功能, 多模式的操控性和自由添加模组的特性方便系统可根据新的需求来增加新的功能, 不同的光影材质包使得该漫游系统沉浸感和代入感更强也更具个性化, 将大大提升用户的使用感官. 由于开发难度较低, 所需硬件设备相较于其他系统无需投入高昂费用, 使其可以广泛推广应用. 要的设备包含拍照设备, 拥有4 GB及以上内存和四核处理器的电脑一台, 软件包括SketchUp、MicroDem、WorldPainter、poly2vox、kv6toSchematic、MCEdit、Minecraft. 漫游系统的开发总体规划和具体工作步骤如下, 开发完成的漫游系统要实现以下功能:

(1)可以实现网络在线互联浏览, 多平台的可移植性访问;

(2)按比例缩小或放大真实校园, 场景尽量保证还原的真实性;

(3)提供自动游览和手动游览模式;

(4)设置缩略地图和快捷传送功能;

(5)设置信息交互功能和生态环境交互功能;

(6)设置加载在服务器上.

3.2 场景建模的实现

场景建模的实现包括数据采集和三维建模过程. 可以通过卫星地图和实地拍摄获得具体的建筑体态数据. 地形环境模型则可以使用现有的地形数据导入软件自动生成.

3.2.1 数据采集

本系统的关键在于对校园更具真实性的还原上, 因此数据的采集和数据的分类将使建模过程更为高效和细致. 通过街景地图、卫星地图、实地拍摄等方式获得建筑的分布、外墙材质等基础数据; 通过依照建筑外观、墙面贴图、建筑信息等属性归类以上数据, 增强后期拼合和渲染模型的效率.

3.2.2 三维建模

三维建模是指对建筑、地形和环境的建模. 获得具体的数据后, 可以选择在SketchUp构建基础模型, 在将多边形模型转为体素模型后在MCEdit中进一步实现细节上的建模与修饰, 环境部分包括天空和植被, Minecraft中提供了多种植被模型和材质光影可供选择. 注意的是, 由于Minecraft加载和实时渲染的机制为设置区域边界内所有实体方块的加载, 因此需要将转化后的体素模型去除不影响整体显示的无用方块, 利于用户更快速的加载与浏览. 其中SketchUp中的部分多边形模型以及转化后的对应体素模型如图6所示.

图 6 多边形模型和转化后的对应体素模型

3.3 系统交互设计与实现

本系统中主要的交互设计包括漫游导航设计, 用户可以通过手机端和电脑端的Minecraft平台直接登录进入该地图, 地图中提供自动观赏和自由观赏两种模式, 自动观赏模式用户可通过乘坐地图中的矿车按照既定轨道实现自动漫游, 同时两种模式都可激活红石信号, 触发校园信息简介在屏幕中显示; 系统设置了可任意调节时间、天气的功能, 实现真实的环境体验. 通过添加旅行地图插件, 启动按下J键即可显示如图7所示的地图, 并可对建筑设定快捷传送点. 同时可以和其他在线游览地图的用户实现交流, 在线建造自己的寝室等, 以此增强沉浸感.

图 7 导航地图

4 系统优化

该系统基于Minecraft上开发使用, 对硬件的CPU和显卡有较强要求, 运行卡顿和掉帧将会很大影响用户的使用体验, 因此, 系统的优化从设计之初就应考虑周全, 本研究通过对物体建模和Minecraft中的配置上进行优化, 来实现系统上的进一步优化.

4.1 建模优化

Minecraft显示图像运用的是区块加载技术, 区块加载的越多消耗的系统资源就越大, 因此将不影响观看的无用方块删除, 同时尽量减少不同材质的区块的使用, 从而进一步加快加载的速度.

4.2 配置优化

Minecraft中可设置视距, 动态光影, 阴影精细程度等参数, 用户可根据自己设备的性能自行调节合适的参数进行优化, 以便较好的运行.

5 结束语

本系统利用Minecraft软件自身的优势, 结合各类开发软件为同学们构建了一个可以更好的探索了解学校的途径, 对学校本身起到了重要的宣传作用. 此系统开发难度低, 玩法多样性使其可以更好的推广, 这表明基于Minecraft构建虚拟环境的极大便捷性和更高的交互性、沉浸性.

参考文献
[1]
徐诚. 虚拟校园漫游系统的研究[硕士学位论文]. 武汉: 华中师范大学, 2006.
[2]
袁雪. 虚拟现实技术在现代大学校园设计中的应用研究[硕士学位论文]. 邯郸: 河北工程大学, 2018.
[3]
易巧玲, 何家勇. 基于Unity3D的虚拟校园漫游系统设计. 计算机产品与流通, 2019(1): 246, 250.
[4]
钱胜男, 王云帆, 彭稳, 等. 关于应用Minecraft软件建造3D校园的实用性研究. 福建电脑, 2016, 32(5): 56-57.
[5]
徐翔. 基于Minecraft的游戏化协作学习的设计与实践研究[硕士学位论文]. 南充: 西华师范大学, 2017.
[6]
齐治昌, 谭庆平, 宁洪. 软件工程. 北京: 高等教育出版社, 2002.
[7]
Jarvis A, Reuter HI, Nelson A, et al. Hole-filled seamless SRTM data V4. http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp. [2018-11/2019-01-01].
[8]
Guth P. Geomorphometry in MicroDEM. Developments in Soil Science, 2009, 33: 351-366. DOI:10.1016/S0166-2481(08)00015-9
[9]
Craft J. Rebuilding an empire with Minecraft: Bringing the classics into the digital space. The Classical Journal, 2016, 111(3): 347-364. DOI:10.5184/classicalj.111.3.0347
[10]
陈睿. 基于SketchUp和Unity3D的虚拟校园漫游系统. 科技与创新, 2019(6): 33-34, 37.
[11]
Jiang BC, Xia Q, You X. The application research on voxel-based expression of the virtual geographical environment. Advanced Materials Research, 2012, 588-589: 1287-1291. DOI:10.4028/www.scientific.net/AMR.588-589.1287
[12]
施珂奕, 邓春健, 邹昆. 基于OpenGL的三维模型点坐标拾取方法. 液晶与显示, 2016, 31(7): 708-713.
[13]
王旭, 卿侯, 林天义, 等. 基于体素模型的体绘制算法. 西北工业大学学报, 2000, 18(1): 78-82. DOI:10.3969/j.issn.1000-2758.2000.01.019
[14]
解祥荣, 徐海黎. 三维模型的读取与体素化. 南通大学学报(自然科学版), 2011, 10(1): 29-34. DOI:10.3969/j.issn.1673-2340.2011.01.007