汪俊峰 王星东 姚婷婷
摘 要:本系统以河南工业大学的3号和4号教学楼为模版,先对建筑物进行拍照,获得纹理信息,并对建筑物进行测量,获得相应的尺寸信息;然后以CAD的二维校园图作为模型制作底图,进而以3ds Max建模软件建立三维模型,并进行纹理贴图;最后将三维模型导入到Unity3D交互软件实现教室分布的三维快速定位查询及教室属性信息的显示。
关键词:3ds Max;三维建模;Unity3D;教室查询
中图分类号:TP31 文献标识码:A 文章编号:1003-5168(2018)04-0038-03
Research on Classroom Three-dimensional Query Based on Unity3D
WANG Junfeng WANG Xingdong YAO Tingting
(College of Information Science and Engineering, Henan University of Technology, Zhengzhou Henan 450001)
Abstract: The system of Henan University of Technology, No. 3 and No. 4 teaching building for the template, the first to take pictures of the building, access to texture information, and the building measurements, access to the appropriate size information; then the CAD two-dimensional campus map as a model and then the three-dimensional model into the Unity 3D interactive software, texture mapping; finally, the 3D model is imported into Unity 3D interactive software to realize the 3D quick positioning query of classroom distribution and the display of classroom property information.
Keywords: 3ds Max;3D modeling;Unity 3D;classroom inquiry
1 研究背景
自從虚拟现实被提出后,在国内外得到了迅速发展。美国是研究虚拟现实技术最早的国家,美国航天局(NASA)模拟太空的真实环境为宇航员创建了虚拟太空空间,为宇航员提供训练[1]。中国展示的第一个含有历史文化韵味的虚拟漫游系统是IBM与故宫博物馆联合推出的“故宫VR《紫禁城 天子的宫殿》”[2]。清华大学的虚拟漫游系统满足用户了解校园的需求,三维模型能展示出校园环境,使用者可以漫游其中,并与虚拟对象进行交互,实现了对虚拟校园环境中对象的查询和信息显示[3]。上海交通大学基于360°全景技术实现了虚拟校园,提供漫游、景观信息查询和显示功能[4]。
本系统是基于3ds Max的三维建模技术和Unity3D三维引擎开发技术构建的,可实现对河南工业大学莲花街校区3号和4号教学楼教室的快速定位及属性查询。具体功能为:①用户可通过第一人称角色控制器在三维教学楼场景中漫游;②用户可与系统交互,通过选择教室编号对教室进行定位和展示,并显示教室的基本属性信息。
2 三维场景的构建
2.1 模型制作
教学楼模型利用3ds Max三维建模软件制作而成,也是本系统开发的基础。为了能更加逼真地还原教学楼,事先对教学楼建筑物信息进行实地拍摄和信息收集,主要包括教学楼外观轮廓、内部结构、每层教学楼的平面图、教学楼的纹理。用单反相机拍摄到的照片经过Photoshop软件处理后可以作为三维建筑物模型的纹理贴图,照片的质量将直接影响整个虚拟漫游环境的用户体验效果,所以需要注意拍摄时间、光照条件、拍摄位置、相机的倾斜角及拍摄的手段。
2.2 模型导入
不同软件建立的模型导入到Unity3D中都要求一定的格式,3ds Max软件建立的模型要以FBX文件格式才能导入。模型导入可能会造成模型贴图的丢失,所以,将模型从3ds Max中导出时需要注意以下三个问题。
①嵌入的媒体。如果不选择该项,3ds Max对模型的导出不包括贴图资源,只有贴图路径的引用,不能真正地导出含有贴图的模型,贴图的资源路径和名称也不能是中文。
②单位设置。默认情况下,3ds Max软件导出的模型再导入Unity3D中模型尺寸放大了100倍。因此,可以在Unity3D下Inspector面板中修改Scale Factor的值进行调整,还可以在3ds Max建模时设置基本单位为厘米。
③轴心设置。3ds Max导出的模型导入到Unity3D中总会出现轴向不符合要求的情况,因此,要对其进行一定的旋转[5]。查阅相关资料发现,模型导入后轴向会自动偏转,在Unity3D中y轴是朝上的,所以在导出时选择轴转向为z轴向上。
2.3 场景构建
2.3.1 地形创建。通过Unity3D提供的地形编辑器组件,可方便地模拟真实地形效果。首先,获取地形资源包后导入Unity3D中,点击视图中的Terrain组件,创建出地形,然后调整教学楼模型的位置。之后,在地形编辑器中编辑树木、花草贴图。选择地形组件属性框中Paint Texture按钮,给“白膜”绘制上草、花的贴图,单击Edit Textures按钮选择贴图,利用画笔在地形上绘制。
2.3.2 添加角色控制器及其碰撞实现。导入角色资源包,把第一人称控制器组件拖入到网格层次面板中,调整角色的位置和视角,以便场景进入到角色的视野中。主要用到的组件有Transform、Rigidbody、Capsule Collider。在这些组件中,修改前进的速度、爬坡的高度等参数,使角色能在场景中漫游。另外,角色控制器组件默认情况下移动鼠标会旋转视角,这在某种情况下会给我们的操作带来很多困扰,所以要修改角色控制器下的Mouse Look脚本,实现检测到鼠标按下时才旋转视角,在Look Rotation( )方法中当按下鼠标左键时执行函数。
3 系统开发
3.1 界面和菜单设计
本系统的界面设计采用Unity3D的NGUI插件,首先下载NGUI插件后导入,导入成功后菜单栏会增加NGUI菜单。
3.1.1 界面设计。选择NGUI菜单下面的Create,在场景中创建Sprite将其命名为main,再创建main子节点index,在子节点下创建Lable和Sprite,分别作为系统的标题和按钮,标题上添加Tween组件,以动画的效果显示,界面设计如图1所示。
在工程面板中创建Resource及子文件夹prefab,把设计好的主界面直接拖到prefab文件夹下生成预制体,使界面在运行时才被实例化,设计的界面预制体必须放在Resource文件下,在Inspector面板中,物体是由预制产生的。
3.1.2 查询菜单设计。由于河南工业大学3号和4号教学楼的教室编号是四位数字,所以这里设置4个下拉列表提供用户选择,然后是查询按钮和详细信息按钮的设计。
3.2 查询功能实现
该系统是通过设计下拉框选择教室编号实现查询。根据收集的教室编号信息,对下拉列表的值进行设置,由于3号和4号教学楼教室编号不同,不同的下拉列表的值会根据用户选择的值而显示。由于设计了在未选中下拉列表的值时后面下拉列表的值不能选择,动态添加列表内的值是通过把值存储在集合中,在设计列表框时添加Box Collider,所以在鼠标选中当前列表值时会获取当前选中的值。用户在选择楼层编号后会实现画中画的效果,在屏幕的右下角显示该楼层的平面图。
当选择完教室的编号后,会对教室查询的结果以一定的视角进行大概方位的定位显示,并在平面图上显示出教室的位置,点击图标会进入到教室门口,图2和图3是教室编号为4120的定位效果图。定位的实现是把教室的位置赋予第一人称控制器,第一人称控制器可在场景中漫游。
对教室进行定位的同时,点击详细信息按钮,会弹出教室信息窗口,如图4所示。信息显示的实现是通过连接数据库,在数据库中创建教室信息属性表,对表的行和列进行设计,把获取的教室信息和行一一对应,存储在数据库的表中。
3.3 系统发布
Unity3D提供多种系统发布平台,本系统采用的是PC版,直接运行.exe可执行文件即可运行该系统。操作步骤如下。
①在系统功能完成后选择File菜单下的Building Setting选项,选择创建好的两个场景:第一个场景是首页场景,序号为0;第二个是查询的场景,序号为1。因为发布后系统是按索引值载入场景的,所以首页场景要确定索引值为0,查询场景确定索引值为1。如果场景的索引顺序不对,可进行拖动调整。
②Unity提供Platform选项选择目标平台PC & Linux Standalone,以PC单机版的形式发布,选择PC单机版平台后会被高亮显示。另外,对发布的单机版进行了设置,去除了在启动系统时的Resolution Dialog(分辨率对话框)。选择Player Settings,在打开的窗口中设置Display Resolution为Disabled。
③做好发布的准备后点击Build按钮,选择发布的位置,Unity会在相应的文件夹下生成一个数据文件夹和一个.exe可执行的文件。点击.exe文件,運行教室分布三维快速查询系统,系统可以很好地运行,且操作界面良好。
4 结论
本系统通过使用Photoshop图片处理软件处理纹理贴图,3ds Max三维建模软件制作建筑物、地形、树木等校园环境的三维模型,Unity3D三维引擎软件对整个场景进行编辑和快速查询功能开发,构建教室分布三维快速查询系统,不但可以让用户在计算机上通过地面浏览进行漫游,还可以实现对教室位置的快速定位和属性信息的查询,使用户在虚拟漫游系统中具有较强的真实感。
参考文献:
[1]周超.基于Unity3D的虚拟校园设计[D].桂林:广西师范大学,2014.
[2]朱惠娟.基于Unity3D的虚拟漫游系统[J].计算机系统应用,2012(10):36-39,65.
[3]李俊军.基于Unity3D的室内建筑三维建模与交互系统实现[D].徐州:中国矿业大学,2014.
[4]仲于姗.基于Unity的3D虚拟校园漫游系统的开发[D].昆明:云南大学,2015.
[5]戴茜.基于Unity3D的虚拟故园系统开发与实现[D].北京:北京林业大学,2014.