基于Intel Realsense技术的感知展示系统的设计与开发
2016-05-19董春侠司占军高祥
董春侠++司占军++高祥
摘要:该文对Intel Realsense的感知和交互技术进行了研究和实现。通过3Ds Max制作所需的3D模型,利用Unity3D创建感知展示系统的基本场景,并在Unity3D中将3D模型和场景进行融合,借助Unity3D提供的GUI界面元素进行系统的交互性UI制作,最后通过Intel Realsense SDK完成Unity下感知设备的数据接入,实现Intel Realsense 3D Camera 感知手势动作或面部表情,进而和场景发生交互行为。
关键词:感知计算;Intel Realsense技术;人机交互;展示系统
中图分类号:TP399 文献标识码:A 文章编号:1009-3044(2016)07-0207-02
The Design and Development of Perception Demonstration Syrtem Based on Intel Realsystem Technology
DONG Chun-xia, SI Zhan-jun, GAO Xiang
(College of Packaging Printing Engineering,Tianjin University of Science Technology, Tianjin 300222, China)
Abstract: In this paper, the Intel Realsense perception and interaction technology were studied and implemented.Required 3D model were made by 3Ds Max,the basic scene of this perceptual display system were created by Unity3D.And in Unity3D,the 3D model and basic scene were mix together.With the Unity3D provides GUI interface elements,we made the systems interactive UI.At last we imported the Realsense Unity SDK in Unity project to realize Intel Realsense 3D Camera could Perceiving our gestures or facial expressions,in order to interact with the scene.
Key words: Perceptual Computing; Intel Realsense technology ;human-computer interaction; display system
随着便携式智能设备的爆发式增长,人们已经不再满足于繁琐的人机交互输入方式。人机交互的方式由传统的图形用户界面、键盘鼠标等输入输出设备的交互形式,逐渐发展到屏幕触摸、语音识别控制、姿势追踪、生物及动作的识别等更加直观、人性化的交互形式。Intel Realsense技术的出现,大大缩短了人与电脑间的距离,让用户对人机互动的渴望得到满足[1-2]。
本设计基于Intel Realsense技术开发出一款太空感知展示系统,该感知展示系统主要展示了太阳系及其所处的宇宙空间场景,通过该系统可以直观的展示宇宙天体的运行,实现镜头的拉近拉远、视角切换等功能。利用Intel Realsense技术实现太空场游历场景,该场景的视角聚焦在飞行器上,视角随着飞行器的移动而变化,其效果如同人亲自在太空中漫游一样。
1 Intel Realsense技术介绍
感知功能需要借助感知计算技术来实现,感知计算就是计算机通过不同的传感器,感知用户的动作行为或者生物性的特征,通过将这些数据数字化并进行计算,得出计算的结果并做出相应的响应。Intel Realsense技术就是感知计算的集大成者,它包含了Intel Realsense 3D摄像头、Intel Realscence SDK以及基于此构建的弓箭生态系统和应用[2]。Intel公司通过开发加入红外传感组件以及实感图像处理芯片等搭载其它传感器的智能设备实现精确识别人的手势动作、面部特征、前景和背景等功能,让智能设备理解人的动作和情感进而实现人机的完美交互[3]。
Unity中感知控制模块是基于Intel Realscence SDK实现的,是一系列行为和触发器、规则的设定,其中所有的行为是作用于MonoBehavior类下的游戏执行对象。Realsense Unity Toolkit菜单命令下主要有以下内容:1)Actions,包括Tracking Action、Translation Action、Rotation Action等,每个操作定义一个游戏物体上的某种行为,并且每个操作都有一整套的触发器,当其触发器之一被触发,将执行该操作。2)Triggers and Rules它定义了一系列可以实现在几个方面的交互作用。每个交互组件作为一条规则来实现,因此每个触发器具有其自己的规则集,只有触发了某个规则,行为才会发生。比如检测到了你的双手或者面部行为就可以启动了,失去了双手和面部这个事件就停止了,双手的移动或者手掌的张开和闭合会实现行为的控制。
2感知展示系统的设计思路与整体框架
构建本展示系统首先利用3DsMax构建基本天体即八大行星的3D模型和太空游历所需要的飞行器;再利用Unity3D创建展示系统的基本场景即天体运行时所处的场景、飞行器游历所在的场景。然后把天体和飞行器的3D模型导入到相应的场景中,实现天体的自转和公转以及飞行器能够在场景中飞行。接下来利用Unity3D自带的GUI进行展示系统UI的设计与制作,实现各个场景的自由切换和音视频的播放。最后接入Intel Realsense SDK进行后续的开发,实现感知交互。感知展示系统的结构框架如图1所示。
3基础开发环境概述
3.1硬件及系统需求
硬件需求:配备第四代(或以上)智能英特尔酷睿处理器的计算机,USB 3.0 接口,Intel Realsense 3D Camera (F200)。
系统需求:Windows 8.1 with Update x64 Pro、 Microsoft.NET 4.0 或更高的统一游戏开发处理框架。
3.2软件要求
本设计主要用到了三维动画渲染和制作软件3DsMax、用于创建多平台游戏和互动体验的开发平台Unity3D以及Intel RealSense SDK。其中Intel RealSense SDK 是一个通过标准化的公开接口实现库的模式检测与识别算法。库的目的是降低使用这些算法和应用程序的开发人员的开发难度,编码算法细节到可以扫除开发者常见的障碍[4]。SDK core,I/O module和Capability modules是组成整个SDK堆栈的基础。两者同时组织并管理管线的执行。I/O module捕获设备的输入数据,而后发送数据到输出设备或Capability modules。Capability modules主要包括各种模式检测和识别算法(面部跟踪和检测、手部跟踪、手势识别、语音识别及合成等)。
4感知展示系统的制作
4.1构建系统所需内容的3D模型
4.1.1行星主体建模
启动3DMax新建一个工程,选择真实视图放大,在放大后的视图中对所需内容进行建模的操作。在命令板的基本标准体中选择球体输入相对参数,选择事先处理好的图片赋予球体的材质,调节好贴图的自发光,光泽度等光学属性。带有光环(晕)的星体需要再制作它的光环(晕),其贴图需要用到UVW贴图命令,光环(晕)制作完成之后把它和球体放在一起调节它们的相对位置即可。全部制作完毕之后分别导出,并将它们放在同一个文件夹下。
4.1.2飞行器的建模
启动3DsMax2013新建一个工程,选择真实视图放大,在命令板的基本标准体中选择所需的基本几何体,把他们堆砌成一个大概的机身模样,运用命令板的修改器列表,选择需要的命令,比如挤压、拉伸、平滑、曲面变形、UVW展开等,使机身曲线更加平滑优美,棱角分明,富有美感。最后对飞行器模型进行分区域贴图。
4.2创建基本场景
4.2.1创建太阳系场景
启动Unity3D,新建Scene,利用多边形和纹理定义了场景的外表;然后添加脚本定义星星的数量和大小,来自动计算生成大小不同、亮度不同的星空粒子。另外还要给场景加上灯光来定义了场景的颜色和基调。场景制作完毕后,还要通过脚本控制Main Camera来实现的鼠标滚轮放大缩小场景、长按鼠标左键移动鼠标实现场景视角的改变,这里要将脚本拖到Main Camera上才可以运行。
4.2.2创建太空游历场景
太空游历场景的制作中需要使用Space for Unity插件。在Unity3D中导入插件后,新建Scene。在Main Camera面板中,把 Clear Flags 的属性Skybox 换成 Depth Only,修改Culling Mask参数,把Far Clipping Plane 的数量控制在1000 到50000范围内,数量的多少由后期的效果决定。在场景中实现鼠标滚轮放大缩小、长按鼠标左键实现场景视角改变的效果与上述太阳系相同。
4.3实现内容和场景的融合
4.3.1太阳系场景与行星融合
感知展示系统的主体场景实现之后,还要把事先制作好的3D模型导入到场景中。在Unity3D中打开新建的场景,在项目视图的Project中选择Import New Asset,找到模型文件存在的路径,导入到Project中。然后把模型文件直接拖到相应的场景中即可。接下来要通过编码实现星体围绕太阳的公转和星体自身的自转。在形体公转中给星体添加Trail Renderer属性,用来显示物体的移动轨迹。
4.3.2太空游历场景与飞行器融合
太空游历场景与内容的融合,主要用到了第一人称视角,Camera始终跟随主角,无论主角发生怎样的变化,我们看到的视角始终在主角上,只是相应的场景发生了改变而已。
4.4交互性UI的制作
系统的界面包含四个部分:系统介绍、视频、太阳系场景和太空游历场景。在Unity3D中创建Canvas,Canvas就是本系统的UI的主界面,UI的主要设计和功能都是要在其上实现的。每个部分都是通过Button实现场景的切换的。UI的最终效果如图2所示。
4.5接入Intel Realsense SDK实现交互
感知展示系统的制作已经完成,通过键盘鼠标可以实现完美的控制,接下来就是接入Intel Realsense 3D Camera,其过程如下:
1)把Intel Realsense SDK安装到电脑上,把Intel Realsense 3D Camera接入到USB3.0的接口上;
2)检查Intel Realsense SDK和Intel Realsense 3D Camera是否可以协同工作。
3)导入Realsense Unity SDK,找到ProgramFiles(x86)\Intel\RSSDK\framework\Unity路径下的Unity.PCStandalone.unitypackage和RSUnityToolkit.unitypackage并分别导入。
4)点击Unity3D菜单栏上的Realsense Unity Toolkit菜单命令,选择Add Action下的Translate行为把它赋给需要的物体,编辑它的Start Event、Translation Trigger、Stop Event属性。
5)点击Unity3D菜单栏上的Realsense Unity Toolkit菜单命令,选择Add To Scene下的Scene AR Object命令,这样播放场景就会发现摄像头拍摄的内容就在场景中呈现了。
感知展示系统接入Intel Realsense SDK实现交互后需要打包发布,输出的EXE文件即为本设计的感知系统。
5结束语
Intel Realsense技术是感知计算的集成者,新技术的推广和转化成生产力的过程是十分漫长而复杂的,这一过程中需要付出很大的财力物力,不仅仅需要IT厂商的自我推广,还需要的是引起开发者的兴趣。本设计是利用Intel Realsense 3D摄像头对太阳系星空进行感知操作,希望给读者带来启发。
参考文献:
[1] 英特尔发布内置3D摄像头,引领感知计算发展[J]. 个人电脑,2013(12):97.
[2] 王韧. 让计算机也能感知世界英特尔RealSense 3D交互技术点评[J]. 电脑迷,2014(8):32-33.
[3] 本刊编辑.CES2014英特尔感知虚拟实镜[J].计算机与网络,2014(1):29.
[4] 韩旭. 应用Kinect的人体行为识别方法研究与系统设计[D].济南: 山东大学,2013.