一种基于游戏引擎的4D体感交互系统技术方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种基于游戏引擎的4D体感交互系统
技术方案说明书
目录
1引言 (1)
1.1编写目的 (1)
1.2背景 (1)
2设计概述 (2)
2.1任务和目标 (2)
2.2需求概述 (2)
2.3系统概述 (2)
3系统详细设计分析 (3)
3.1数据获取识别模块 (3)
3.1.1彩色图形获取 (4)
3.1.2深度图像获取 (4)
3.1.3动作识别 (5)
3.1.4语音识别 (7)
3.2Unity3D接口控制 (7)
3.2.1设备控制 (8)
3.2.2场景显示控制 (8)
3.2.3骨骼跟踪绑定 (9)
3.2.4近景模式绑定 (10)
3.2.5平滑处理 (10)
3.2.6特效事件处理 (10)
5总体方案确认 (11)
5.1系统总体结构图 (11)
5.2系统总体功能图 (12)
5.3系统总体流程图 (12)
5.4系统硬件组成图 (13)
5.5系统开发工具 (14)
5.5.1Kinect开发平台 (14)
5.5.2Kinect系统架构 (15)
5.5.3Kinect SDK (15)
5.5.4Unity3D开发工具 (16)
1引言
1.1编写目的
本文提供一种基于游戏引擎的4D体感交互系统技术方案的说明。本系统包括安装有游戏引擎的计算机、体感装置、力反馈发生装置、特效发生装置等。利用Kinect体感器替代传统游戏的输入外设,克服了对鼠标、键盘或游戏手柄等操作装置的依赖,同时增加了震动和特效反馈装置,将游戏的声音、碰撞等4D特效更加真实地展示,增添体感交互的真实性、带入性;同时削弱了游戏对人体的生理、心理伤害。
1.2背景
游戏产业作为一门新兴的娱乐产业,已经在世界范围内得到迅猛的发展,游戏的形式也越来越丰富,作为其中之一的体感游戏逐渐受到人们的关注。体感游戏一出现就颠覆了游戏单调的操作,使得人机互动的模式展现得更完美。玩家进行游戏时,对游戏的操控性与游戏的代入感的要求也逐渐提高,体感游戏作为一种依托于新技术的游戏,不需要外置的游戏控制器,凭借其操控性以及可玩性得到越来越多的玩家欢迎。
目前,在国内外已经开发的游戏种类很多,但是还没有使用游戏引擎开发过基于游戏引擎的4D体感交互游戏的支持,各别公司也仅仅是提供了一些游戏的展示效果,体感交互系统的开发还十分不成熟。同时,由于体感交互系统不需要外置的游戏控制器,即克服了对鼠标、键盘或游戏手柄等操作装置的依赖,可以减轻因为长时间的鼠标、键盘操作引起的一些生理伤害。如何既能做到放松的娱乐,又能兼顾玩家的生理健康变成为当前发展的新的方向。
本文提出的基于游戏引擎的4D体感交互系统,旨在为未来4D体感游戏的开发提供最新的研究方向,为研究体感游戏的开发者提供研究资料和成果,推动体感游戏在国内的发展,具有创新以及借鉴参考的意义。
2设计概述
2.1任务和目标
本文研究基于游戏引擎的4D体感交互系统的开发。采用Unity3d 作为游戏引擎进行跨平台体感游戏开发,同时利用Microsoft Kinect SDK的重要工具包,实现4D体感交互。
本文在分析 Unity3d 的对外通信接口以及 Unity3d 插件的基础上,针对当前微软提供的 Kinect 体感设备,类比了 OpenNI中的一些体感游戏实现的常规方法,使用 Unity3d 作为游戏引擎, Microsoft Kinect SDK 以及 OpenNI 作为开发工具进行体感游戏开发,实现基于游戏引擎的4D体感交互系统的设计开发。
2.2需求概述
基于游戏引擎的4D体感交互系统需要具有场景展示、即时动态捕捉功能、影像识别功能、语音识别功能、事件控制、特效控制功能等。
场景展示:游戏场景显示
即时动态捕捉功能:即时识别人体动作
影像识别功能:识别人体静态影像如手势等
语音识别功能:识别人声功能
事件控制:游戏引擎识别输入信号并转成相应事件进行控制
特效控制功能:控制如风、光、风、振动等4D特效功能
2.3系统概述
基于游戏引擎的4D体感交互系统,包括计算机、Kinect体感装置、力反馈发生装置、特效发生装置,计算机中安装有unity3D游戏引擎,游戏引擎加载有将接收数据转化为符合规范数据的游戏引擎数据接口单元和用于存储事件的数据库服务器单元;
Kinect体感装置与计算机通过总线接口连接;力反馈发生装置和特效发生装置与计算机通过信号线连接。利用Kinect体感器替代传统游戏的输入外设,克服了对鼠标、键盘或游戏手柄等操作装置的依赖,同时增加了震动和特效反馈装置,将游戏的声音、碰撞、风、灯光等特效更加真实地展示。
设计分为Unity3D场景展示模块、Unity3D的接口模块、Kinect的数据获取以及特效反馈四个模块。其中Unity3D接口模块实现了的场景设置、骨骼绑定、镜像运动、近景模式、平滑处理及特效反馈的控制;Kinect数据获取模块通过代码实现设备控制、骨骼绑定算法、设备图像获取。系统模块组成图如下:
图2-1 系统模块组成图
3系统详细设计分析
3.1数据获取识别模块
本系统采用kinect传感器获取数据信息,包括彩色图像、深度图像、即时动作识别、语音识别等。其硬件组成结构图下:
图3-1 kincet实体图
3.1.1彩色图形获取
Kinect中间的镜头是普通RGB摄像头,彩色数据的编码格式可设置为RGB.32bit 格式和YUV-16bit格式。在传感器传输数据前,会先将Bayer格式转换为RGB.32bit格式,在分辨率为640x480的情况下,帧率可达到30帧/每秒. 获取彩色图像的方法是首先打开Kinect的彩色数据通道,在彩色帧处理事件中的核心代码为:
kinectVideo.Source=
BitmapSouree.Create(colorFrame.idth,colorFrame.Height,96,96,framesPixelFormats.Bgr32,nul,colorData, colorFrame.Width*colorFrame.BytesPerPixel);其中Bgr32表示一个像素点对应的4字节,前3个字节对应B、G、R,第4字节对应代表透明度的alpha通道。运行后,得到RGB彩色图像。
3.1.2深度图像获取
Kinect视角场的有效距离为1.2m~3.8m,微软建议用户在开发中使用的深度范围为1220mm~3810mm,深度图像的每个像素由2个字节组成,共16位。其中高13位表示Kinect红外摄像头到最近的物体的距离,低3位表示跟踪到的用户索引号,低3位可表示的整数范围是0~7,其中数值0表示没有找到用户,数值1~6表示识别到的用户1至用户6。表3-1为实际距离与深度数值的对照表。