多通道交互的虚拟现实样板间
2018-10-10王伟志冯文琪王聪
王伟志 冯文琪 王聪
摘要:旨在设计实现一种脱离鼠标、键盘等传统交互设备,实现对场景中家具和物品抓取和挪放的虚拟现实样板间。采用Oculus Rift虚拟现实眼镜获取样板间场景内容,使用户置身于虚拟环境;通过游戏手柄控制场景中人物的移动实现样板间场景内的无障碍漫游;利用Kinect体感设备的手势识别,实现对样板间中家居陈列的抓取、移动、放置。系统测试表明,达到了所设计的各项功能。
关键词:虚拟现实;样板间;多通道交互;Kinect;Oculus Rift
中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2018)07-0156-03
虚拟现实技术(Virtual Reality,简称VR)始于20世纪60年代,在计算机图形学、人机接口技术、计算机仿真技术、多媒体技术以及传感器技术的基础上发展起来的交叉科学[1]。自1991年起,德国开始将虚拟现实技术应用于建筑设计中;在20世纪末,欧洲与北美的许多设计和房地产公司也开始广泛使用虚拟现实技术进行建筑设计和房地产销售[2]。在房地产销售领域,虚拟现实技术在样板间中的应用正在起着举足轻重的作用。
VR样板间是利用虚拟现实技术,根据真实样板房的比例及设计制作而成的场景,地产营销时无需建设样板房,购房者只需戴上虚拟现实头显,就能体验到几年后才能落成的建筑主体内外和景观全景。如国内的“无忧我房”平台的VR样板间产品[3]、“指挥家VR”、美屋365等[4]。体感交互最初应用在游戏行业,指用户通过肢体运动和身体感受的方式完成人与计算机的交互[5]。Kinect是微软开发的一款无需任何手持设备即可完成三维人机交互的体感输入设备,国内外在这方面的研究取得了一些进展,如机器人的目标的跟踪[6]、导航与定位[7]、障碍物的检测[8]等;Kinect捕捉人的动作,获取到人物的深度图像,通过深度图像确定骨骼节点位置进行跟踪[9],提取手部的几个骨骼节点跟踪并识别手部状态[10]。
目前出现的VR样板间在3维建模的基础上加入了VR眼镜,用户配戴VR眼镜后,借助鼠标键盘完成场景漫游。本文研究的虚拟现实样板间的创新点在于,在传统样VR样板间的基础上加入多通道的交互,脱离了鼠标、键盘等传统的交互设备。使用Oculus Rift头显,借助手柄实现在虚拟样板间的漫游,重点借助Kinect体感输入设备,通过手势识别实现对样板间中家居的抓取、移动和放置等交互功能。
1 多通道交互VR样板间的设计实现
1.1 样板间模型的建立
本项目所用样板间的三维模型是根据设计者的构想,在3D Max软件中分部分一一建立并组合,完成整个样板间的制作。样板间分为两层,分别为一楼的客厅、餐厅、厨房和浴室;二楼是卧室。基于3D Max建立的模型线框图如图1所示。
1.2 Unity 3D场景设计
从3D Max中将FBX格式的模型导入Unity 3D中,其中部分物体会出现材质丢失的问题,需重新进行贴图。另外还应处理一些特殊的材质,设计合适的灯光。
将场景导入Unity 3D中,进行特殊材质的脚本编写,完善场景制作。场景中所需的镜面效果、反射效果、自发光效果等通过shader脚本实现。
本文灯光设计主要采用Lightmapping技术,它是一种增强静态场景光照效果的技术,可通过较少的性能消耗使静态场景更真实丰富且具有立体感。室内灯光主要使用了point light、spot light、directional light三种,通过配置并烘焙灯光贴图,可节省场景运行的计算量。
由于Lightmapping只能作用到静态对象上,故针对动态对象本文采用Light Probes技术。其原理是通过在场景空间中放置采样点来收集周围光照信息,然后对临近动态对象的采样点进行插值运算,并将结果作用于动态对象上。插值运算不会消耗太多性能,从而可实现动态与静态游戏对象的实时融合效果。
1.3 多通道交互设计
场景动画及触发器设计是以实现门窗等的自动开关为目的,即相机视角进入某一范围内,门会自动打开,离开时自动关闭。通过Animation选项设置动画并为其添加触发器,使用脚本控制门的触发动作。
Unity 3D默认支持Oculus Rift DK2设备,本设计使用版本为Unity 3D 5.3.1f,该模块交互仅需进行相关设置即可实现样板间场景在Oculus眼镜中的显示与控制。其流程是通过工具栏中选择Edit的項目设置选项,在该选项中找到Player进行设置,勾选Virtual Reality Supported开启VR模式。
Kinect交互是本设计的重难点,也是优于当前虚拟样板间的设计模块。Kinect最多可检测到6个人体骨骼,获得人体的25个骨骼节点,每个关节点都包含有3D位置和方向信息,可识别手部的跟踪状态分为三种,手部完全张开手势、手部的半张开手势和握拳手势。
基于手势识别实现物体的抓取和移动的设计中,首先获取到人物的深度图像,通过深度图像确定骨骼节点位置进行跟踪,然后是提取手部的几个骨骼节点跟踪并识别手部状态:当手部张开时,控制鼠标的位置移动;移动到目标物体后,手部握拳控制选中目标物体;保持握拳,移动目标物体到所需位置;再将握拳张开,放置目标物体,即完成一次交互任务。在Unity 3D的视角相机设计三部分脚本:Kinect负责抓放网格的脚本、界面交互脚本和Kinect底层管理的相关脚本。
Kinect抓取脚本中包含添加目标物体、抓取移动速度、是否添加重力效果等多项参数。首先开始对人体骨骼跟踪,进行初始化。当追踪到手部时,区分左手和右手,设置旗标并获得手部骨骼节点在获取深度图像的位置,来作为鼠标在屏幕中的位置,其代码如下:
当屏幕中手部位置进入目标物体区域,改变为握拳手势进行抓取动作,使得抓取物体其标置为真;获取屏幕分辨率的具体三维位置信息,拖动目标物体移动;同时判断每帧扫描目标物体是否被松开,当目标物体被松开时,再判断是否使用了重力效果,放置目标物体,Kinect手势抓取操作部分代码如下:
脚本是Kinect界面交互的关键部分,该部分内容包括对交互的具体操作,获取左右手状态,检查是否处于控制鼠标状态,以及手部控制界面鼠标位置的具体算法等核心内容。同时,为了检测的流畅性,该部分内容添加了平滑代码,避免界面中鼠标位置发生严重漂移。
Kinect底层管理代码负责Kinect的一系列操作,包括开启传感器、读取数据源、获得帧数据等操作。可以获取彩色图像、深度图像、人体骨骼节点等信息,我们根据其中的两只手部的骨骼节点3D位置和方向信息,对手势进行判断,进而获取到不同的手势识别所控制的不同动作,对场景中物体进行操作。
2 系统测试及评价
本文的设计为复式样板间,分为上下两层,下层包括客厅、吧台、开放式厨房、餐桌、洗手间、浴室等;上层为卧室、画廊。上下层之间主要是结合手柄的无障碍漫游进行的设计,通过手柄的控制,第一人称视角可以轻松实现在楼梯等非平常的地形中任意漫游,其运行结果的两个截图如图2所示。
Kinect的交互操作,主要实现了用户在虚拟场景中与虚拟物体的交互,任意挪动家居的摆放位置,按个人喜好调整家装形式,后续会加入墙纸、地板的个性化搭配、家装计算器等多项人性化功能。利用Kinect交互操作的结果截图如图3所示。
通过测试,实现了平滑漫游、全方位浏览、对物品进行交互操作等,完成了多通道交互的虚拟样板间的功能。
3 结语
采用手柄控制,实现了第一人称视角的任意漫游,减少了键盘鼠标的束缚。Oculus Rift眼镜使得移动和控制更灵活,沉浸感更强。采用Kinect体感设备,实现对样板间中家具陈列的抓取、移动和放置,按照用户的意愿完成与虚拟场景中物体的交互,突破了传统虚拟样板间单一的场景漫游,在今后的虚拟样板间的发展中,具有较大的意义。
参考文献
[1]刘家怿.VR技术发展现状与未来趋势[J].中国新通信,2016,18(10):81.
[2]陈迎.虚拟现实技术(VR)——房地产营销新手法[J].城市开发,2007(16):74-75.
[3]黄文静,马力.基于Kinect手势识别的研究与应用[J].电子设计工程,2017,25(24):166-169.
[4]邓瑞,周玲玲,应忍冬.基于Kinect深度信息的手势提取与识别研究[J].计算机应用研究,2013,30(04):1263-1265+1274.
[5]Dan S. Designing for Interaction: Creating Innovative Applications and Devices[M]. New Riders Publishing,2009.
[6]郑斌珏.基于Kinect深度信息的手势识别[D].杭州电子科技大学,2014.
[7]Ganganath N, Leung H. Mobile robot localization using odometry and kinect sensor[C]// IEEE International Conference on Emerging Signal Processing Applications. IEEE, 2012:91-94.
[8]陆震.冗余自由度机器人原理及应用[M].北京:机械工业出版社,2006.
[9]张毅,张烁,罗元,徐晓东.基于Kinect深度图像信息的手勢轨迹识别及应用[J].计算机应用研究,2012,29(09):3547-3550.
[10]刘阳.基于Kinect的手势识别技术研究[D].重庆:重庆大学,2014.