书合文秘网 - 设为首页 - 加入收藏
当前位置 首页 > 范文大全 > 公文范文 >

基于LeapMotion与Unity3D的虚拟天文实验室构建

作者: 浏览数: 关键词: 天文 构建 实验室 虚拟 LeapMotion

摘要:虚拟现实技术的快速发展和体感设备的不断更新为教育提供了新灵感。基于太阳系行星及其运动规律,结合Leap Motion设备和 Unity 3D开发环境完成虚拟天文实验室的构建。在介绍虚拟实验室场景和实验室定义的一系列控制角色移动和场景切换的手势后,展示根据自行定义手势完成的沉浸式太阳系漫游过程,为虚拟现实技术在教育领域的应用提供有意义的探索。

关键词:天文实验室;太阳系;虚拟操作;Leap Motion;Unity 3D

DOIDOI:10.11907/rjdk.173240

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2018)008-0186-04

英文摘要Abstract:The rapid development of virtual reality technology and the continuous updating of somatosensory devices have provided new inspiration for education.In order to provide a more vivid presentation of the solar system of the planets and their laws of motion,this article combines the Leap Motion device and the Unity 3D development environment to complete the construction of a virtual astronomy laboratory.The virtual laboratory scene,a series of laboratory-defined gestures to control the role of mobile and scene switching gestures are introduced; the immersive solar roaming process is completed by self-defined gestures,which provides a very meaningful exploration in modern education with the technology of virtual reality.

英文关键词Key Words:astronomy laboratory; solar system; virtual operation; Leap Motion; Unity 3D

0 引言

近年来基于Unity 3D开发的虚拟现实(Virtual Reality, VR)技术应用发展迅猛。VR技术的到来,打破了传统多媒体的呈现模式。现代教育结合VR,给学习者带来高沉浸学习体验。三星在美国的一个调查研究显示,85%的老师认可 VR 教育,认为 VR 技术在教育方面有巨大潜力,能够提高学生的学习效果[1]。

受到科技馆天文实验室启发,将虚拟现实与手势控制结合,可以为天文教育赋予全新生命。对比传统课堂中学生通过3D多媒体视频观察学习星体运动知识[2],VR虚拟实验室可以使学生更“近距离”地接触天文知识。同时,在虚拟实验室中加入手势操作,能够使用户獲得更好的学习感受和效果[3]。2013年,美国LEAP公司推出了一款毫米级近距离捕获手运动的体感设备——Leap Motion[4],为人机交互和体感互动带来新灵感。Leap Motion 的出现加速了手势控制技术的发展[5],它不仅可以追踪手掌运动、精确识别手势变化,而且响应速度快,还提供多种应用程序接口,支持多种语言编程[6-7]。

本文将Leap Motion和Unity 3D结合,构建能够通过手势控制的虚拟天文实验室。通过定义不同的虚拟操作手势,给使用者带来沉浸式学习体验,使其能够漫游浩瀚宇宙。

1 系统总体设计

由于构建一个完整的天文虚拟实验室非常复杂,本文仅讨论以太阳系为对象的天文虚拟实验室的构建,主要有以下研究内容:

首先,利用Unity 3D 和 Maya搭建实验室及太阳系场景,并在其中添加望远镜、太阳系行星等模型;然后,添加低头行走并点击触发脚本,使用户可以在实验室中走动,并在点击望远镜时切换至虚拟太阳系场景。在太阳系场景中定义3个观察视角,结合一系列手势操作,实现多角度观察太阳系的效果。

实验室架构如图1所示。

2 场景介绍

为了增强用户体验的沉浸感,本文所有场景都使用第一人称视角。

2.1 实验室场景

关键模型:实验室模型和天文望远镜模型。

用户初始进入场景的位置是在实验室的入口处,用户需要控制行走进入天文实验室。望远镜模型在实验室的左侧,用户在实验室向左走可以到达天文望远镜的位置。点击天文望远镜切换至漫游场景。

2.2 太阳系场景

关键模型:太阳系模型、各个星体模型及对应文字框介绍。

3个视角:漫游视角、俯视视角、行星介绍视角。

用户初始进入太阳系场景时,默认为漫游视角。用户可以根据手掌移动或者手指指向控制角色进行移动,在整个太阳系场景中漫游;第2视角为俯视视角。用户用手掌画圈可切换至该视角;第3个视角为行星观察视角,用户需要靠近并用手指触碰具体的行星,切换至该行星的观察视角,近距离观察该行星模型及阅读文字介绍。

3 基于 Leap Motion 的手势定义

Leap Motion支持自定义手势,本系统主要有4种识别手势,如图5所示,实现在实验室和虚拟场景内的移动和操作,对应的操作功能如表1所示。

4 虚拟天文实验室构建

4.1 公用部分代码

(1)碰撞检测——点击手势。

物体碰撞可以通过刚体组件(Rigidbody)和碰撞器组件(Collider)进行检测。其中,碰撞器组件Collider的IsTrigger属性和OnTrigger Enter函数在天文实验室中经常用到。IsTrigger属性值为布尔值,用户可以在函数执行时设置该属性值。当值为True时,碰撞器组件可以检测碰撞,并在碰撞发生时执行OnTiggerEnter函数,当值为False时则不作任何处理。

事实上,所有的手部点击动作本质上都是HandController与其它物体的碰撞。

(2)手势判断——手掌开合。

Leap Motion中定义的Hand.SphereRadius属性保存了当前帧(currentFrame)手掌半径。此处设置阈值为50,当该值大于50时表示用户手掌摊开,小于50时表示用户握拳。根据判断手掌开合这两种不同手势,触发不同动作。

(3)手势判断——手部位置。

Hand.PalmPosition返回的是手掌相对于Leap Motion的空间坐标。当手上下平移时,坐标Y值改变。当手前后推动时,坐標Z值改变。通过该属性,可以获得用户手部位置,同时可以判断手部移动方向。

(4)手势判断——画圈。

Leap Motion可以识别画圈手势。如果要在Unity中获取手势并判断是否为画圈手势,首先需要在Start函数中注册该手势。另外在Update函数中可获取每一帧的手势。通过判断当前手势是否为画圈手势,再进行一系列操作。

(5)Leap Motion 手势方向转换为Unity坐标系。

天文实验室漫游场景中需camera有朝手指方向移动的功能,所以需将Leap Motion的手势方向转换为Unity场景中的坐标。调用Leap Motion的内置函数Leap.UnityVectorExtension.ToUnity(leapDirction,bool),返回Unity场景中的三维坐标。

(6)人物行走。

在天文实验室里,设置当用户低头30°~90°时,触发行走动作。天文实验室采用第一人称视角,所以将Character Controller(角色控制器)组件挂载在camera上。通过Unity的vrCamera.eulerAngles获得camera与水平面的角度,即用户低头角度。判断该角度是否处于设置区间内,若是则触发行走动作。

vrCamera.TransformDirection(Vector3.forward)返回当前camera向前的朝向,再将该方向向量传入Character Controller 的SimpleMove函数中,另外再传入一个速度值,最终实现角色直行移动。

4.2 太阳系构建

(1)实现星球自转与公转动作。太阳系中星球的行为分为自转和公转,使用Unity自带的函数Rotate和RotateAround实现这些动作。

(2)实现星球运动轨迹的绘制。为了方便观察星球的运动,还需要绘制星球运动轨迹,利用圆的参数方程实现绘制星球运动的圆环轨道。

4.3 手势与场景交互操作实现

(1)手掌控制角色移动功能。

在判断手的半径大于阈值后,关闭触发器,此时不会发生场景切换。在当前场景中,通过手掌上下移动控制摄像机前进后退,手掌前后移动控制相机上下移动,实现在太阳系漫游的效果。

(2)手指控制角色移动功能。

在判断手的半径小于等于阈值后,开启触发器,可以通过手指控制角色前进,近距离观察某个星球。

(3)检测碰撞场景切换功能。

当触发器与标签为Plant的物体发生碰撞时,切换到该行星的介绍场景。如图7所示。

(4)切换视角功能。

切换视角本质上就是切换camera。可以通过camera的SetActive方法将某个camera的属性设为True,同时,将HandController重新绑定到新切换的视角上。不同视角展现如图8所示,其中左图为漫游视角。右图为俯视视角。

(5) 手势操控星球转动功能。

在星球介绍场景下,如果在场景中只检测到一只手,那么可以对当前星球执行旋转操作。若检测到手部的水平移动,相应地对物体执行顺时针旋转或者逆时针移动。如图9所示。

5 结语

本文通过 Leap Motion 和Unity 3D的集成,构建了以太阳系为对象的天文虚拟实验室,并验证了这种构建方法的可行性。实验结果表明本文描述的方法可以实现体验者对太阳系“沉浸式”观测与学习,并能够使用本文自定义的手势完成交互,为虚拟现实技术与教育领域的结合提供了新的灵感。

参考文献:

[1] 胡畔.政策 VR 教育已成“互联网+教育”下的新模式[N].中国经 济时报,2017 -03 -02(2).

[2] 陈小亮.基于Java3D的太阳系虚拟仿真研究[D].武汉:武汉科技大学,2015.

[3] 魏利,戴佳佳,王小雅,等.太阳系虚拟仿真教学系统的设计与开发[J].数字教育,2017,3(05):75-80.

[4] 刘德建,刘晓琳,张琰,等.虚拟现实技术教育应用的潜力、进展与挑战[J].开放教育研究,2016,22(4):25-31.

[5] 严利民,杜斌,潘浩,等.基于Leap Motion的三维动态手指姿势识别[J].激光与光电子学进展,2016,53(11):92-98.

[6] CRRIEL-RAZO Y,ICASIO-HERNANDEZ O,SEPULVEDA-CERVANTES G,et al.Leap motion controller three dimensional verification and polynomial correction[J].Measurement,2016,93:258-264.

[7] 潘佳佳,徐昆.基于Leap Motion的三维自由手势操作[J].中国科技论文,2015,10(2):207-212.

[8] 黄俊,景红.基于Leap Motion的手势控制技术初探[J].计算机系统应用,2015,24(10):259-263.

[9] 雷安琪,冯玉田,唐子成.改进型手姿态关键点估计方法在Leap Motion中的应用[J].工业控制计算机,2017,30(9):36-37.

[10] 朱惠娟.基于 Unity3D 的虚拟漫游系统[J].计算机系统应用,2012,21(10):36-39.

[11] 宁亚楠,杨晓文,韩燮.基于Leap Motion和Unity3D的虚拟沙画手势识别及交互[J].计算机工程与应用,2017,53(24):202-206.

[12] 刘哲,张永策,刘志广,等.移动终端下滴定分析虚拟实验室的研究[J].计算机与应用化学,2015,32(7):880-884.

[13] WANG R Y.Real-time hand-tracking with a color glove[J].ACM Transactions on Graphics,2009,28(3):1-8.

[14] GIESER S N,BOISSELLE A,MAKEDON F.Real-time static gesture recognition for upper extremity rehabilitation using the leap motion[C].Los Angeles:International Conference on Digital Human Modeling and Applications in Health,Safety,Ergonomics and Risk Management,2015.

[15] KIM S L,SUK H J,KANG J H,et al.Using Unity 3D to facilitate mobile augmented reality game development[C].Internet of Things (WF-IoT),2014:21-26.

(責任编辑:江 艳)

相关文章:

Top