APP下载

基于Android虚拟现实系统的设计

2018-03-22刘红王艳艳北方工业大学电子信息工程学院通信工程系

数码世界 2018年3期
关键词:碰撞检测摇杆漫游

刘红 王艳艳 北方工业大学 电子信息工程学院通信工程系

1 基于Android的虚拟现实系统的技术优势

信息时代促进了Android移动终端技术与虚拟现实技术的发展与融合。这两种技术的迅速发展,为人们提供了更人性化的便捷服务。基于Android的虚拟现实系统,用户直接使用制作好的虚拟摇杆UI,不需要复杂的输入设备就能实现对系统的操作,及时的在便于携带的Android移动终端实时查看场景变化,不受网络,时间,地点的限制。

2 系统的开发流程及关键技术

2.1 开发流程

本系统的开发,第一部分的主要工作是利用3ds Max建模工具创建毛泽东故居的3D模型,然后在Phtooshop软件制作故居周围环境的纹理贴图,将制作好的纹理贴图赋予给模型,并导出模型为FBX格式,完成模型的导出工作;第二部分的主要工作是将模型导入到Unity工程中,渲染场景,设置场景参数,给模型添加AudioSouse脚本,导入EasyTouch5.0.12资源包,制作虚拟摇杆UI,并编写互动脚本。完成基于Android虚拟现实系统操作,系统开发流程如图1所示:

图1 系统开发流程

2.2 关键技术

2.2.1 摄像机运动

摄像机是一个非常重要的用于显示虚拟场景的组件,在Unity3D的摄像机用来将虚拟场景呈现到屏幕上。摄像机可以用Perspective(透视)或Orthographic(正交)方式投影渲染对象。本系统采用摄像机的正交投影,运用“Up”、“Down”、“Left”、“Right”键控制摄影机向左、向右、向前、向后运动。设置摄像机渲染路径,利用鼠标、摇杆等输入设备控制虚拟场景漫游的观察角度,实现第一人称场景漫游。

2.2.2 碰撞检测

碰撞检测是两个物体相互接近利用碰撞器来检测对象是否发生碰撞,通过PlayerSlideDoor对象进行控制碰撞器被触发,PlayerSlideDoor对象绑定TriggerOnTag脚本处理碰撞。碰撞器是Unity3D开发平台中的组件,它包含诸如BoxCollider,CapsuleCollider,SphereCollider,MeshCollider,WheelCollider,TerrianCollider等类,这些碰撞器应用的场合不同,本系统选择BoxCollider,首先为碰撞检测的对象添加BoxCollider,开启触发器功能,再修改其size属性,确保可以完全包围待检测对象,最后设置BoxCollider的IsTrigger属性为ture。完成以上步骤之后,通过TriggerOnTag脚本处理碰撞事件,编写互动脚本,并将其指定于待检测对象。

2.2.3 3D拾取

在虚拟环境漫游过程中,用户需要通过触击2D屏幕浏览3D物品,或利用鼠标选取环境中的物体进行操作,这个过程需要3D拾取技术。3D拾取是将2D信息转化成3D信息,所以必须对信息进行相应处理,通过计算得出正确的结果。

3D拾取技术之所以复杂,是因为该技术跨越了流水线的多个阶段。从摄像机投射空间到viewport的变换中,摄像空间中的一个顶点v经过线性插值变换将投影平面上的2D投影点变换到齐次裁剪空间CVV中,通过CVV裁剪,并且顶点进行透视除法,将从4D齐次形式变回成3D齐次形式,再经过Viewport Transformation最终将点变换到viewport中。将点的位置信息进行处理后,再通过逆处理将顶点从viewport中变换到投影平面。因此用户在手机屏幕上点击一个位置,即点击事件的触发,实际上得到的是viewport中的点击位置,标记为p0(XP0,YP0),通过线性插值公式如公式(1),把P0变换到CVV中得到P1(XP1,YP1),紧接着将P1通过线性插值的逆运算变换到plane of projection中,得到P2(XP2,YP2),X方向的线性插值逆运算变换公式如公式(2)所示:Y方向变换公式同理计算。P2就是点击的位置处于投影面的2D点,拾取一个3D对象,需要将2D信息拓展到3D中,需要进行线性模型中的射线ray方式,在屏幕上点击位置确定一条射线,射线射向3D模型,从摄像机到屏幕空间的触摸点发出一条射线,这条射线第一个撞到的3D物体默认是被选中的物体。

3 系统实现

3.1 3D模型的构建

三维虚拟毛泽东故居构建需要注意场景尺寸、单位长度、模型塌陷、命名、坐标、贴图格式、材质等。制作流程如图2所示:

图2 3D模型制作流程

3.2 毛泽东故居模型

从3ds Max导入到Unity3D的Assets文件中,需要注意3ds Max和Unity3D两个软件中默认的单位长度,为了最大程度地简化3ds Max导出及Unity3D导入FBX文件的工作,3d Max系统单位设置为“厘米”,Unity3D系统单位设置为“米”。三维虚拟毛泽东故居场景构建设计如图3所示:

图3 场景构建设计

3.3 毛泽东故居的场景优化

资源的使用会影响性能,所以完成场景构建后需要场景优化。为了优化场景,则需减少模型数量,所以可以将相同材质的模型合并在一起;减少材质贴图数量,可以将多张贴图合并,模型共享一张贴图,并且尽可能压缩贴图,减少位数。

3.4 虚拟毛泽东故居发布与展示

在安卓端的产品使用方法比较简单,如图4所示,首先把虚拟毛泽东故居app拷贝到安卓手机中,或者通过扫描生成的二维码,然后安装,打开app运行,这样就可以体检虚拟毛泽东故居3D漫游。手机界面效果如图5所示。

图4 毛泽东故居app安装流程

图5 手机界面效果

4 结束语

本文以3ds Max为工具完成建模,利

用unity3d引擎,采用C#编写脚本,使用摄像机运动,碰撞检测等关键技术设计虚拟毛泽东故居系统,系统通过虚拟摇杆控制移动操作实现环境漫游及场景切换,展示室外构造及周围环境的功能。系统设计简单方便,开发成本低,场景的真实感和交互性在Android移动终端完全能够满足用户需求。

基于Android虚拟现实系统设计,探索了通过可游、可视、可互动、可听的有趣虚拟展示方式让用户感受良好的情境体验,更有助于用户的信息感知。同时也是对毛泽东故居历史文化传播方式的新探索。虚拟现实技术时代的出现,将给各个领域带来全新的体验和变化,推动了新时代的经济发展,并且给人们带来生活方式的改善和社会的进步。

[1]金玺曾.Unity 3D手机游戏开发[M].北京:清华大学出版社,2013.

[2]黄涛. 基于Unity3D的虚拟校园漫游系统的研究和实现[D].桂林:广西师范大学,2014.

[3]王星捷,李春花.基于Unity3D平台的三维虚拟城市研究与应用[J].计算机技术与发展,2013,23(4),241-244.

[4]胡传志,程显毅,曹小峰.网络敏感信息自适应多重过滤模型研究[J].计算机科学,2015,42(1):272-275,307.

[5]张瑞昕,卜方玲.一种适用于多数据链网络的信息过滤转发策略 [J].计算机工程与应用,2015 (8):89-91,112.

猜你喜欢

碰撞检测摇杆漫游
基于动力学补偿的机器人电机力矩误差碰撞检测
全新预测碰撞检测系统
基于3D打印的曲柄摇杆机构实验设计
基于BIM的铁路信号室外设备布置与碰撞检测方法
霹雳漫游堂
霹雳漫游堂
基于Virtools的虚拟灭火系统碰撞检测设计与实现
VR飞行模拟的伴侣
曲柄摇杆式硬币分离机设计
边走边看:漫游海底 梦想成真