APP下载

基于VR技术的实时交互平台的设计与实验

2017-06-29吉林大学电子科学与工程学院尹悦鑫

电子世界 2017年11期
关键词:安卓按键蓝牙

吉林大学电子科学与工程学院 尹悦鑫 鲁 岳 王 珣

基于VR技术的实时交互平台的设计与实验

吉林大学电子科学与工程学院 尹悦鑫 鲁 岳 王 珣

随着科技进步与生活水平的提高,基于VR技术的产品已经以商品的形式进入千家万户。但事实上,其相关衍生品主要以旅游和视频 应用为主,种类单一,缺乏创新。同时,普通的VR产品不具备实时交互性,用户体验差。基于以上问题,本文基于VR技术,下位机以单片机为核心,上位机采用UNITY 3D游戏引擎的安卓开发平台,下位机利用蓝牙模块HC-05,实现与上位机的实时交互,从而实现虚拟现实中的实时操作。

VR技术;实时交互平台;设计与实验

1 设计原理

图 1 设计原理框图

如 图1设计原理框图所示,实时交互平台包括硬件系统和软件平台两部分。硬件系统由陀螺仪GY-25,按键,蓝牙模块HC-05和微控制器STC12C5A60S2组成。其中陀螺仪GY-25实时读取角度,按键实现特殊操作功能,HC-05与手机进行蓝牙通信,微控制器STC12C5A60S2进行数据的接收,处理和发送,处于整个硬件系统的核心地位。软件平台由手机的Android系统和Unity软件组成。同时,硬件系统和软件平台相互之间通过蓝牙进行通信,进而实现实时交互的功能。

1.1 产品调研

虚拟现实技术(VR)是一种可以建立虚拟世界的计算机仿真系统,它可以通过计算机技术来模拟现实的环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,可以使用户沉浸到该环境中。

现如今,基于VR技术开发的产品已是种类繁多。但目前,大部分VR产品的应用仅仅停留在视觉接收阶段,例如,VR视频,VR旅游,VR购物等,并不具备实时交互功能,导致用户体验缺乏真实性。

本文研究的基于VR技术的实时交互平台,采用相对成本最低的STC12C5A60S2单片机,利用蓝牙模块HC-05向上位机实时传递信息,并且通过VR眼镜显示出相应的场景,从而实现设计要求。

1.2 原理图

图2 原理图

1.3 软件设计原理

图3 软件设计原理框图

如图3软件设计原理框图所示,Bluetooth部分采用蓝牙模块HC-05。通过蓝牙模块实现和手机安卓操作系统的通信,可以实时的将单片机接收到的采集数据,如角度,按键信息等发送到手机。事先,利用原生安卓开发编写接收蓝牙数据并解读数据的代码,然后将安卓工程导出为jar包,放在Unity工程相应目录下的文件夹中,在Unity端编写相应的代码调用jar包里准备好的方法,便可对手机蓝牙接收到的数据进行处理,实现用户在VR游戏界面中的移动,射击,空间视角切换等功能。

2 系统设计

2.1 硬件模块

硬件模块包括陀螺仪,微控制器,蓝牙模块和按键:

陀螺仪采用GY-25,一款低成本、低功耗的倾斜角度传感器模块。其工作原理是通过陀螺仪加速度传感器经过数据融合算法,最后直接得到角度数据。将其放置于操作手柄,如模型枪上,便可实时读取当前的三维角度。将数据发送给单片机进行处理,再利用蓝牙通信,便可以实现VR游戏界面中的视角切换功能。

微控制器采用的是宏晶科技生产的单片机STC12C5A60S2。具有优秀的工作性能,较高的数据处理速度。作为整个平台的核心控制模块,承担着数据的接收,处理,发送等一系列重要功能。

蓝牙模块采用HC-05,一款主从一体蓝牙串口模块。利用其蓝牙通信功能,实时的将数据发送给手机上的Unity端。Unity将数据处理结果反映到VR游戏界面当中,让用户有实时操作的游戏体验。

而按键则由三个简单的微动开关组成。其功能分别为前进,后退和射击。由单片机接收按键信息,通过蓝牙发送,Unity端接收。

2.2 软件平台

软件平台分为Android部分和Unity部分:

Android部分采用Eclipse软件编写蓝牙程序。Eclipse是一个开放源代码的,基于Java的可扩展开发平台。通过查阅蓝牙相关的API,参考范例,编写相关的蓝牙程序。由于数据发送以字节为单位,而一个角度信息要用两个字节记录。因此,在编写解读蓝牙接收数据的程序时,需要进行相应数据的整合,并依照顺序拼出正确的角度信息。而按键方面,将三个按键的信息存放在一个字节的第三位,并在安卓端将存放按键信息字节的第三位逐位读出。至此,数据的解读工作顺利完成。最后写好用于Unity调用的函数,便可使Unity获取相应的信息。至此,安卓方面的蓝牙相关的工作全部完成。

VR的实现则采用了Google公司的CardboardSDKForUnity。由于此SDK设定了专用的主Activity,因此,会与蓝牙的主Activity发生冲突。解决方案如下:导入Google的jar包到安卓工程,将蓝牙的主Activity继承Google的CardboardSDKForUnity的主Activity。至此,安卓方面的代码编写完成。确认好安卓端代码正确无误后,将工程导出为jar包,并在Unity工程目录下建立安卓插件专用的目录,并将jar包及相关安卓工程中的文件放到相应的目录下。

Unity部分主要是指Unity Technologies开发的多平台的综合型游戏开发工具——Unity,它是一个全面整合的专业游戏引擎。通过Unity的游戏开发功能,设计一个FPS(第一人称射击类)游戏的界面。其中,包括星空,天台,集装箱等环境模型,具有一定AI的怪兽,冲锋枪等游戏元素的加入,增添了本VR实时交互平台的可玩性。配合蓝牙通信,使用户拥有更为真实的体验。

在角色模型设计方面,我们采用状态机的方式进行编程,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的关键,可以有效地实现基本功能转换。状态机流程图如图4所示:

图4 状态机流程图

相关程序如下:

3 最终成果展示

3.1 硬件部分

图5 硬件 部分成果展示

如图5所示,将硬件系统焊接于电路板,装配于模型枪上,达到硬件和手柄一体化的目的。用户可以手持模型枪,通过按动按键,完成移动,射击等特殊功能。利用放置于VR眼镜中的手机,用户可以实时观察到游戏中的场景。

3.2 软件部分

图6 游戏界 面成果展示

如图6所示,为VR眼镜中的真实游戏场景。用户可以利用手中的模型枪进行射击,攻击敌人。利用模型枪上的按键在游戏场景中进行移动,以此躲避敌人的伤害。根据模型枪当前角度的变化,来决定用户的移动方向。通过用户头部的转动,实现游戏视角的切换。在游戏界面中,正上方显示得分(Score),正下方显示当前血量。当血量归零时,游戏结束。

[1]优美缔软件(上海).Unity官方案例精讲[M].北京:中国铁道出版社,2015.

[2]MingChaoSun.Cardboard 虚拟现实开发技巧(一)之放置一个固定在视野中的物体[EB/OL].(2015-12-25)[2016-01-03].

[3]程明智,江道远,韩超.Unity5.X游戏开发技术与实例[M].电子工业出版社,2016.

尹悦鑫(1995—),大学本科,现就读于吉林大学微电子科学与工程专业。

鲁岳(1996—),大学本科,现就读于吉林大学电子信息科学与技术专业。

王珣(1996—),大学本科,现就读于吉林大学电子信息科学与技术专业。

猜你喜欢

安卓按键蓝牙
iPhone不卡的秘密曝光:安卓也能享受
蓝牙音箱的直线之美
基于有限状态机的按键检测程序设计
文物表情包
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
紧急:蓝牙指尖陀螺自燃!安全隐患频出
一种基于安卓系统的手机侧抓包分析方法
一种多方向导光按键结构设计
安卓L未至安卓M来了!安卓首泄漏M系统