"用心做游戏,用爱感动玩家"是我们的宗旨。8868体育将继续为全球玩家奉献优质体育游戏,点燃体育激情,书写行业传奇!

8868体育(官方网站) - 中国认证体育赛事直播入口

8868体育(官方网站) - 中国认证体育赛事直播入口

当前位置: 主页 > 官方资讯 > 官网资讯

基于softkinetic的运动类体感游戏设计与实现-软件工程专业论文docx

来源:网络 更新时间:2024-10-26 07:27:38 点击:

  基于softkinetic的运动类体感游戏设计与实现-软件工程专业论文.docx

  基于softkinetic的运动类体感游戏设计与实现-软件工程专业论文.docx

  基于softkinetic的运动类体感游戏设计与实现-软件工程专业论文

  基于soflkinetie的运动类体感游戏设计与实现 摘 要 体感游戏是用身体去感受,通过肢体动作变化来操作的游戏。SoftKinetic的 推出,既拓展了体感的应用范围,也给体感游戏引入了新的研究技术。当前,体 感游戏主要存在空间范围小、动作干扰大的识别问题。 在softkinect给出的时隙深度图像的基础上,结合人体三维骨架,构建一定 时长的运动轨迹点模型。采用轨迹点的3维坐标的方差值来判断运动的幅度特征。 最后通过检测位移数据来判断运动的方向特征。在飞行时间行为模型的基础上, 解决了以下静态和动态等行为识别问题。与现有方法相比具有识别速度快、空间 约束小的显著性特点。论文较为详尽的给出了系统的需求、设计和实现过程,对 关键的难点问题和技术路线给出了解决方案,针对游戏中几种常用的动作做了示 范性识别算法,例如悬浮、推动、甩臂、跳跃等。并以这些动作识别模型,开发 出3类广泛适应度的游戏:模拟鼠标点击类游戏、肢体姿态类游戏、剧烈动作类 游戏。 论文对游戏设计中的操作性进行研究,从策划、设计、程序对体感操作等规 则设定,形成游戏操作和体感动作的对应规范,该系统应用简便,只需要一台深 度摄像头和PC机,市面上绝大多数flash游戏可以无缝集成进来,具有较强的经 济效益和推广价值。 关键词:SoflKinetic『;体感游戏;动作识别;运动轨迹点 II 万方数据 工程硕士学位论文 A.bstract Somatic game is used by the body to feel,to operate through the body changes the game.SoftKinetic not only expands the scope of application,but also introduces new research techniques to the somatic game.At present,there are mainly the recognition problem of small range of space and disturbance of large action. Based on softKinectic perceptual environment of time slot depth image,the Paper selected common behavior recognition method model,combined with 3D human skeleton,designed features of human action,constructed a certain length of the trajectory model,using the variance to determine the range of motion characteristics,through the displacement to judge direction,proposed the time of flight of the recognition model.The recognition method was analyzed and compared with the existing method,which has the characteristics of fast recognition speed and small space constraint.This paper gives a detailed design and implementation process of the system,and gives a solution to the key problems and technical routes.Finally, the 3 kinds of representation of the game would be achieved. This paper studied on the operation of game design,from the planning and design program of somatosensory operation rules,the formation of the corresponding standard game operation and somatosensory action,flash game can be seamless access and has a strong promotion. Key Words.SoftKinetic;Somatic game;Motion recognition;motion locus Ili 万方数据 目 录 学位论文原创性声明和学位论文版权使用授权书 .I 摘要 II Abstract.... . ...... .. . ........ .. ... .... ... ..III 插图索引 I 附表索引 ..III 第1章绪论 .1 1.1研究背景 .1 1.2国内外研究现状 2 1.2.1人体行为识别研究 2 1.2.2 Kinect的研究及应用 .3 1.2.3 SoftKinetic的研究与应用 3 1.3研究意义及可能的创新点 5 1.4本文研究内容及组织结构 5 第2章基于softkinetic的运动类体感游戏的需求分析 6 2.1总体目标和重点任务 ..6 2.2功能结构分析 ..6 2.3层次结构分析 ..7 2.4系统用例分析 ..9 2.4.1摄像头设置 .9 2.4.2基础支撑组件 ..10 2.4.3动作识别模块 11 2.4.4体感游戏模块 .1 2 2.5技术选型 .1 3 2.6本章小结 13 第3章基于softkinetic的运动类体感游戏系统设计 .14 3.1总体研发思路 14 3.2技术路线基于飞行时间的动作行为模型 16 3.2.2识别处理 .16 3.2.3体感游戏设计 ..1 7 3.3数据处理流程 17 I 万方数据 工程硕士学位论文 3.4开发框架 ..18 3.5软件结构 ..1 8 3.6系统类图设计 ..19 3.6.1服务端类图 ..19 3.6.2游戏客户端设计 .20 3.6.3具体游戏类图 .22 3.7手部识别算法设计 .23 3.8本章小结 24 第4章基于softkinetic的运动类体感游戏系统实现 .25 4.1 UI界面实现 25 4.1.1应用的主界面 ..25 4.1.2我的图文 25 4.1.3游戏选择界面 .25 4.1.4操作界面 26 4.2关键技术难点和解决方案 ..27 4.2.1系统初始化 27 4.2.2实时显示深度图影像 .1 01 O*4.....QI 28 4.2.3实时显示人体识别状态 一31 4.2.4游戏加载 .33 4.2.5动作识别 .35 4.3环境搭建与实现 .41 4.3.1模拟鼠标点击类体感游戏实现 42 4.3.2肢体姿态类体感游戏 43 4.3.3剧烈运动型体感游戏 .43 4.4系统测试 ..43 4.4.1用户测试结果 ..43 4.4.2系统性能测试 ..44 4.5本章小结 ..44 结论 45 参考文献 .47 致谢 50 万方数据 基于sottkinetic的运动类体感游戏设计与实现 插图索引 图2.1 功能结构 ..7 图2.2 系统层次图 .8 图2.3 数据来源 ..8 图2.4 基础建模层 .9 图2.5 摄像头设置的用例图 .9 图2.6 摄像头设置的基本流程 .10 图2.7 基础支撑组件用例图 .1 1 图2.8 动作识别用例图 ..1l 图2.9 体感游戏的用例图 12 图3.1 总体研发思路 .14 图3.2 轨迹点产生图 .16 图3.3 深度图处理流程 1 6 图3.4 数据处理流程图 17 图3.5 开发框架 1 8 图3.6 软件结构图 ..19 图3.7 服务端类图 ..20 图3.8 客户端类图 ..20 图3.9 某游戏的类结构图 .22 图3.10 FlashForm的类结构图 23 图3.1 l IlsuApp的类结构图 .23 图4.1 系统主界面 .25 图4.2 图文界面 25 图4.3 游戏选择界面 .26 图4.4 游戏操作说明 ..26 图4.5 游戏操作界面 26 图4.6 系统初始化模块流程图 .27 图4.7 实时显示深度图流程图 29 图4.8 Rawdata转换为BMP流程图 .29 图4.9 游戏状态图 .3 1 图4.10 识别状态切换流程图 .32 图4.1 l 游戏加载流程图 ..34 I 万方数据 图4.12轨迹点采集流程图 .35 图4.1 3坐标转换流程图 .36 图4.14悬浮动作定义 .37 图4.15悬浮动作识别流程图 ..38 图4.16跳跃动作识别流程图 39 图4.17左倾、右倾识别流程图 40 图4.18海盗扔鸡蛋游戏图 . 40 图4.19投掷运动识别流程图 ..41 图4.20巧虎拼图实现效果图 ..42 图4.2l 3D自行车实现效果图 ..43 图4.22薛猫之舞实现效果图 ..43 II 万方数据 附表索引 表1.1 人体行为识别研究 2 表1.2基于Kinect的人体识别研究 ..3 表1.3 SoftKinect的研究及应用 4 表2.1 摄像头设置的用例表 .10 表2.2基础支撑组件用例图 .1 1 表2.3动作识别用例表 .12 表2.4体感游戏的用例表 .12 表4.1 系统的实现环境 .42 表4.2轨迹点方式的技术应用与传统方法性能表 .44 表4.3 轨迹点方式的技术应用与传统方法精度表 ..44 III 万方数据 工程硕士学位论文 第1章绪论 1.1研究背景 人体行为识别研究是目前关注度很高的一个新研究领域。人体动作识别研究 是通过对传感器采集的数据进行加工、处理和分析,达到使计算机系统能够理解 个体动作、个体之间以及个体与环境之间的交互的目的[11。一直以来怎样精准高 效的理解人体行为都是各个相关领域的研究热点和难点,这是因为人体形态和人 体运动习惯存在差异,而所处的环境又复杂多变。人体行为识别研究涉及计算机 视觉【21、传感器技术【引、模式识别和人工智能等多个学科,并在智能监控、人机 交互、智能机器人、虚拟现实【4】和运动分析15,6]等领域有着广泛的应用。 体感技术17 J,是指不需要借助复杂的控制设备,只在一个固定的环境或者装 置中,通过直接使用肢体动作与周边的环境或装置互动,就可以实现让人身临其 境地与内容互动。近年来国内外众多高校和研究机构都对体感技术进行了深入的 研究。 依照体感方式与原理的不同,主要可分为三大类:惯性感测【引、光学感测以 及惯性及光学联合感测。惯性感测需要佩戴式传感器f9】或控制器,例如遥控手柄 或者手机,而光学感测无需传感器一样能精确地获得人体关节点三维信息,而不 会给人造成不便,且结合深度信息的视觉处理方法可以有效屏蔽复杂背景的干扰, 逐渐成为当前的主流趋势Do]。 对于一个新鲜事物来说,游戏实际上是一个很好的切入点,最容易让人接受。 随着科技进步以及增强玩家游戏体验的需要,游戏公司开发出了专业化,特异化 的游戏输入设备。例如,最开始FC(任天堂红白机)上聚合实体健的游戏就成为了 体感游戏的原始雏形,包括于街机中为大家所熟知的战警,这种需要玩家手持光 枪配合手臂和腰等肢体才能进行的游戏都可以理解为体感游戏的基础。 体感游戏(英文:Motion Sensing Game)顾名思义:用身体去感受,通过肢 体动作变化来进行的电子游戏。突破以往单纯以手柄按键输入的操作方式,通过 3D深度摄像头和虚拟现实(R)技术,捕捉三维空间中玩家的运动,识别出人 体动作来响应游戏的操作。在游戏示范中,玩家们用脚踢仅存在于屏幕中的足球, 并用伸手设法拦阻进球。在驾驶游戏中,玩家转动想象中的方向盘来操控电视游 戏中的赛车。 万方数据 基于soflkinetic的运动类体感游戏设计与实现 1.2国内外研究现状 基于非视觉的方式主要是利用放置在人体【11]或者人的活动空间【12】内的传感 器获取人体运动参数,这种方法获取的人体运动参数较为精确,却会给人们生活 带来不便。 体感游戏的关键技术问题是基于视觉(摄像头)的人体行为姿态识别,其中 研究形式多样,内容丰富,既有手势识别、表情分析等局部的识别研究,也有针 对独立个体的行为识别研究。目前基于视觉的方式是人体行为识别研究的主流方 法。 1.2.1人体行为识别研究 基于视觉的人体行为表示方法主要包括采用人体形状特征的行为表示方法、 采用三维信息的行为表示方法和依据运动特征的行为表示方法等。利用人体形状 特征的行为表示方法构造简单且易于实现,常用的模型主要包括棍棒模型、椭圆 模型等,其识别的代表性应用的文献,如表1.1所示。 表1.1 人体行为识别研究 利用三维视觉技术表示人体行为虽然具有视角不变性,但是其计算量较大且 对系统性能要求较高,故并不常用。伴随着深度图像不断变化的场景,人体识别 的一般思路是采集人体的骨骼节点的三维数据,内置人体特征的表示模型,其识 别的高精度和高效性能吸引了大量关注。 2 万方数据 工程硕士学位论文 1.2.2 Kinect的研究及应用 Kinect最初由以色列PrimeSense公司开发,后被微软收购作为XBOX360的 体感外设于2010年正式对外公布。 Kinect人体识别研究融合了视觉研究方法和非视觉研究方法的长处,Kinect 不仅可以将人从复杂的佩戴式传感器中解放出来,不用佩戴传感器同样能精确获 得人体关节点三维信息,同时一些基于视觉的行为识别技术也能运用其中,Kinect 能够获取场景图像,且结合深度信息的视觉处理方法可以有效屏蔽复杂背景的干 扰,这些都是单纯基于视觉的或非视觉的研究方法做不到的。第一代的Kinect运 用Tof结构光技术(激光散斑),可以有效的获得物体的深度信息,同时,Kinect 的sdk还可以捕捉人体的骨骼,这一切都为开发做出了很好的接口,骨骼、深度 图像、音频接口等。2013年5月21日微软和Xbox One一起发布了配套的新版 Kinect。新版的Kinect具有1080p高清广角摄像头等更精确的感应装置,可以最 多同时跟踪六人的运动、侦测手势,甚至可以检测肌肉活动和心跳。国外基于 kinect的人体识别研究代表性文献见表1.2所示,国内代表性文献为【27.31】。 表1.2基于Kinect的人体识别研究 1.2.3 SoftKinetic的研究与应用 SoftKinetic是一家2007年成立于比利时的技术供应商,他们采用基于飞行时 问原则的3D摄像头技术。摄像头可以三维方式实时分析镜头中每一个像素的完 万方数据 基于soflkinetic的运动类体感游戏设计与实现 整位置,并让系统高精度地跟踪使用者的动作。SoftKinetic不仅仅囊括了PC和 Mobile,更有TLiving Room,Automotive等平台。SoftKinetic不是一种固定 的平台,而是一种嵌入式的摄像头和中间件技术,相比于微软的Kinect更具有通 用性,从api级别驱动人体识别迈向一个更广阔的市场。 SoflKinetic已经能够提供一定骨骼轨迹和手势识别模型,但因为提供的仅仅 是sdk开发包,还存在对于特殊动作行为难以识别的问题。SoflKinetic的使用, 带来了一系列新的技术手段,将原有识别技术的应用范围更加扩大,推动了人体 行为识别研究的发展。目前SoftKinetic主要被应用于识别手势、四肢动作及人体 检测等方面,如表1.3所示。 表1.3 SoftKinect的研究及应用 综上所述,目前的研究领域主要是利用SoftKinetic进行行为识别的局部研究, 如人体部位区分、手势识别、头部跟踪等,也有一部分关于整体的身体姿势、运 动分析。主要的研究方法是对深度图像数据或者人体关节点数据进行分析与处理 应用,有针对性地将不同的数据形式运用在不同行为识别中,例深度数据分析常 4 万方数据 工程硕士学位论文 用于手势识别中,人体关节点数据则在姿态识别中使用意义更大。 1.3研究意义及可能的创新点 本课题主要基于softKinetic丰富的深度图像的感知环境,结合运动类游戏, 重点研究小范围空间内的人体日常行为识别问题,选定常用行为识别方法的模型, 设计人体动作特征量,克服游戏中对于一些游戏动作时间效率、空间范围的约束, 并实现相应的操作动作,最终实现多种运动类体感游戏平台,具有较高的工程研 究意义和应用价值。 1.4本文研究内容及组织结构 论文以softKinetic的中问件iisu和sdk为研究基础,研究基于softKinetic的 动作识别,提升动作识别的效率和精度,更好的满足运动类体感游戏的用户需求。 论文组织结构如下: 第1章概述了本文的研究背景??意义、然后对体感识别技术和体感游戏设计 的研究现状作了较广的论述。 第2章系统需求分析。分析体感游戏系统的总体目标和重点任务,并进行可 行性研制;从游戏功能的需求以及游戏非功能性需求等多个方面对系统进行了描 述分析,为系统的设计和实现做好基础准备。 第3章系统设计。根据系统需求分析,概述了系统的总体目标和主要任务, 介绍了系统的框架设计、类图设计。 第4章系统实现。详细介绍了系统的实现环境、主要界面设计以及关键难点 功能模块的实现过程。 本文的最后部分是结论。对全文进行了总结,并对论文写作过程中的一些问 题做出了思考。 万方数据 基于sottkinetic的运动类体感游戏设计与实现 第2章基于softkinetic的运动类体感游戏的需求分析 论文通过深入调查家庭运动游戏的市场和问题,针对体感游戏的识别率低、 对手柄等设备依赖较大等问题,提出系统的总体目标和主要任务,从功能结构、 层次结构和系统用例来分析体感游戏实现的可行性。 2.1总体目标和重点任务 (1)系统总体目标 针对体感游戏识别效率低、对手柄等设备的依赖较大,论文基于softKinect丰 富的深度图像的感知环境,结合运动类游戏的特点,重点研究小范围空间内的人 体日常行为识别问题,选定常用行为识别方法的模型,设计人体动作特征量,克 服游戏中对于一些游戏动作时间效率、空间范围的约束,并实现相应的操作动作。 最终实现的体感游戏平台只需要一台深度摄像头和PC机,具有较大的移植性能, 市面上绝大多数flash运动型游戏可以无缝集成进来,具有较强的经济效益和推广 价值。 (2)重点任务 1.设计体感游戏的总体方案 设计系统的硬件方案、人体动作识别的数据处理流程和识别中间件的各层结 构。 2.设计规范性识别算法 针对游戏中几种常用的动作,设计示范性识别算法,例如悬浮、推动、甩臂、 跳跃等标准动作。 3.研发3类广泛适应度的游戏 以规范性动作识别模型为基础,研发3类广泛适应度的体感游戏,例如:1) 模拟鼠标点击类游戏、2)肢体姿态类游戏、3)剧烈动作类游戏。 2.2功能结构分析 基于以上研究目标和重点任务,系统应满足以下总体业务需求: (1)能够对玩家的人数和体型进行设置,能够对游戏区域进行配置。 (2)能够提取玩家的骨架坐标,形成基于骨架的飞行时问轨迹点;从而确定 运动的方向和幅度。 (3)能够在支撑组件的基础上,运用轨迹点识别一些基本的动作; 6 万方数据 工程硕士学位论文 (4)结合识别的动作,嵌入flash游戏,实现游戏平台。 论文将平台划分为摄像头配置、基础支撑组件、动作识别和游戏应用几大功 能模块,如图2.1所示。 图2.1功能结构 2.3层次结构分析 基于以上功能模块,系统整体上可以划分为5个层次,如图2.2所示。 7 万方数据 基于soflkinetic的运动类体感游戏设计与实现 图2.2系统层次图 (1)深度摄像头 深度摄像头获取数据来源,主要生成的深度图(RAW图像格式[38,391),如图 2.3(a)、彩色图如2.3(b)所示。 Depth map C O 吖 翟灞鬻鍪攀鬻戮鬻g蘩黪i鬻燃鬻 擎j攀黧?”爹i 灞 圈 g ,曩i_ 。霉 w。瞄《《H__一 l—■■_一l■■■■■● 饕?▲—■ (a)深度图 (b)彩色图 (c)修改的深度图 图2.3数据来源 万方数据 篙:耋瓣晶毒茹搿蒜 2.4 Cb) 层 篡器蒜赫硎蹦蛳舻雌棚圳亿 三:震躲出上嵌入游戏,实现体感游戏平台。 2.4系统用例分析 2A2怒系鳓獬掳摄像头设置是该糸统越1F九川“” 图2.5为摄像头设置的用例图,表2·1 为用例表。 图2.5摄像头设置的吊例图 万方数据 基于sofikinetic的运动类体感游戏设计与实现 表2.1 摄像头设置的用例表 用例编号 Functian01 用例名称 摄像头配置 活动者 玩家(2人) 优先级 高 描述 实现摄像头的定型和配置,玩家人物的骨骼和周围环境场景 的设置,使得用户能够正常运用系统。 输入 人体站定摄像头下 输出 配置摄像头的区域和场景,旋转右(左)手确定控制器 基本流程,如图2.6 A1.用户打开应用 所示。 A2.等待欢迎界面 A3.站定摄像头下 A4确定场景区域 A5确定人体骨架 A6.成功配置摄像头,进入主菜单界面 S姆蚤{ 图2.6摄像头设置的基本流程 2.4.2基础支撑组件 面向开发部门用户,包括场景模型、骨骼模型和形体模型的建模和参数修改 等。图2.7为基础支撑组件的用例图,表2.2为用例表。 10 万方数据 ‘ 二 系统 巧磊赢赢八 ——\\\(@竺竺/ \\竺竺/ \y乃磊≯ \竺竺/ 图2.7基础支撑组件用例图 表2.2基础支撑组件用例图 用例编号 Function02 用例名称 基础支撑组件 活动者 开发人员 优先级 高 描述 场景、骨骼和形体模型的建模和参数修改 输入 参数设置 输出 模型 前置条件 具有相关权限的用户登录,摄像头和系统开启 基本流程 AI.用户登录系统,进入相关管理界面,点击“修改模型”按钮, 等待进入修改界面 A2.用户输入模型编码,点击确认等待结果 A3.系统返回参数信息 2.4.3动作识别模块 动作识别模块包括悬浮、点击、甩臂、跳跃、下蹲等动作的识别。图2.8为 动作识别用例图,表3.3为动作识别用例表。 系统 弋乏多 弋④\\ // 图2.8动作识别用例图 万方数据 基佃业型堡蹩些蟛 2A:芸嚣羹删删‰面向玩家用户,买扰。睁懋伽“一 图2.9是体感游戏的用例图,表2·4是用 例表。 图2.9体感游戏的用例图 12 万方数据 2.5技术选型 论文中系统以中间件iisu的sdk为开发包,选用其支持的c群.net为开发语言, 采用SQLServer来存储数据,从而实现游戏功能。 Iisu(interface is you)中间件是一种自然手势的开发和部署的中间件,iisu 提供完整的人体骨骼跟踪以及精确的手和手指跟踪api。它支持的深度摄像头有微 软的Kinect,华硕Xtion,Mesa的工业级相机SR 4000,松下d.imager,当然还 包括SoflK8868体育中国官方平台inetic的depthsense 311和depthsense 325。Iisu目前是开发体感的支持 各种深度感应摄像机跟踪应用程序的最佳解决方案。 论文根据的开发过程的需要,选用了基于MC设计模式的.NET体系结构, 选用isualStudio作为集成开发环境。 SQL Server2012实现了XML的深入集成,它为编程人员提供了一种新的数 据类型(XML数据类型),这使得SQL Server2012数据库中存储XML数据成为 了可能。SQL Server2012数据库增强了数据转换服务功能,增强了数据库的灵活 性和可管理性。 因此,应用SQL Server2012作为后台数据库,将为系统的开发提供强有力的 支持,并对以后软件的运行奠定了坚实的基础。 2.6本章小结 需求是开发的基础,本章明确了目标任务:基于softKinect的深度感知环境, 克服小范围空间内的人体日常行为识别约束问题,实现可无缝接入flash游戏的通 用化体感游戏平台,然后分别对系统的可行性分析、系统用户分析、系统主要用 例分析等进行了简要的描述,为后续的设计和实现奠定了基础。 万方数据 基于soflkinetic的运动类体感游戏设计与实现 第3章基于soflkinetic的运动类体感游戏系统设计 系统概要设计针对用户需求分析报告中规定的相关需求,在技术解决方案的 基础上,讨论如何利用计算机摄像头技术,基于SoftKinetic的深度图像的感知环 境,结合运动类游戏的特点,提出系统的整体研发思路、技术路线总体研发思路 以第二章所述的功能结构、层次结构等分析为基础,设计总体研发思路,如 图3.1所示。 1)首先构建基于飞行时间的行为模型,从而确定运动轨迹点、运动幅度和运 动的方向等关键指标。 2)依据上述关键指标,设计识别算法实现悬浮、画圈、推动、跳跃等动作的 识别。 3)最后对游戏设计中的操作性进行研究,从策划、设计、程序对体感操作等 规则设定,形成游戏操作和体感动作的统一对应规范,设计flash游戏接口使得绝 大多数flash游戏可以很快的集成,实现最终的通用体感游戏平台。 图3.1 总体研发思路 万方数据 工程坝士学位论文 其中需要研究的关键技术在于: (1)骨骼动画 将操作人员模型骨骼在Unity中绑定。在softKinect里面,是通过20个关节 点来表示一个骨架的。当你走进softKinect的视野范围的时候,softKinect就可以 把20个关节点的位置找到。骨骼动画(SkeletalAnimation)技术是游戏领域经常 使用的关键技术。其过程是建立互相相连的骨骼,将角色模型的顶点与其绑定, 并使其运动,然后对骨骼采集关键帧中的姿态,采用插值技术得出过渡帧,驱动 模型产生动画。骨骼并不会在动画中显示,由始至终都是运用在驱动角色运动的 过程中。骨骼姿态的关键帧采集一般是使用动作捕捉技术完成。 (2)动作捕捉 运动捕捉是一种用于记录人体或动物等原始角色运动过程的技术,将捕捉到 的信号转化为数字模式,并使用特定的格式文件记录该数据。从其原理来说,即 通过传感器设备将每一帧中人或动物骨骼关节点的空间位置和方向信息记录下 来,作为角色的运动信息,并以此数据来驱动目标角色模型运动。通常该方法具 有比手工动画更逼真、更精确、更方便的效果。 (3)运动重定向 运动重定向是对运动数据处理的方式之一,它可以提供动画制作中后期调整 的可能性以及解决无法模拟但是又需要逼真效果的高难度动作问题。运动重定位 技术解决的核心问题是如何在将原始模型的运动轨迹信息映射到目标模型上的同 时保持动作的逼线)坐标转换 softKinect采用的是特殊的空问坐标系,从而将softKinect采集到的数据从一 个空间坐标系转换到另一个空间坐标系是很有必要的。被骨骼跟踪的用户位置有 x,Y,Z坐标系来表示的。和深度图像空间的坐标系是不同的,该坐标系是三维的。 z轴代表的是红外摄像头的光轴,与图像平面垂直。现在的softKinect开发,一 般是使用相关SDK配合.NET Framework共同开发。利用SDK里面的函数,获取 当前接入softKinect传感器的对象实例,再用相关方法启用骨骼追踪。在获取被 追踪的用户的空间位置数据的过程中还要进行平滑处理。 (5)状态机动画 Unity传统的动画系统需要导入带有动画的3D模型,才能实现角色的动画效 果。目前的开发技术一般并不需要带有动画的3D模型,而是使用状态机赋予这 些模型动画。好处是可以将模型制作和动画制作分开进行,只要拥有模型,就可 以共享相同的动画。 万方数据 基于soflkinetic的运动类体感游戏设计与实现 3.2技术路线 基于以上技术的研究,提出研制系统的技术路线基于飞行时间的动作行为模型 (1)运动轨迹点 如图3.2所示,在softkinect给出的时隙深度图像的基础上,结合人体三维骨 架【421,可实时产生各部位的位置,记录从而构建一定时长的运动轨迹点【431。 U T d setting孽CALIBRATIO珲N Cam调eraToWortd} . r i{耍l 鼍::.= !竺’o茹了 ,二j_j 图3.2 轨迹点产生图 (2)确定运动幅度 采用轨迹点的3维坐标的方差值来判断运动的幅度特征[441。特征判断的尺度 选择为一定的基准点距离或角度。 (3)确定运动方向:轨迹点的位移数据来判断运动的方向特征。 3.2.2识别处理 图3.3是识别句柄的处理逻辑,在判断出动作之后,通过EventManager来触 发事件,然后通知CommandManager执行规范的操作动作。 ExEcuT,。N[:上 图3.3深度图处理流程 万方数据 T程硕士学位论文 3.2.3体感游戏设计 在以上技术问题解决的基础上,设计以下具有代表性的运动类体感游戏: 1)模拟鼠标点击类游戏 该类游戏包括平台的UI界面和一些常见的flash游戏,例如奇虎小游戏,在 pc平台只需要操作鼠标左右键即可完成操作。论文采用“悬浮”动作识别为单击, “移动”手势动作识别为鼠标按入拖动。 2)肢体姿态类游戏 该类游戏包括类似于骑行自行车这种肢体姿态类游戏。 3)剧烈动作类游戏 该类游戏主要包括跳舞类、甩臂类这种强烈运动型游戏。该类游戏误判率很 高,原因在于动作剧烈,深度摄像头有可能漏帧,具有较强的难度。该类游戏主 要提升甩臂、跳跃和下蹲此类强烈动作的识别率。 3.3数据处理流程 如图3.4所示,iisu(Interface is you)是softkinetic中间件,负责传递深度摄 像头和最终用户应用程序之间的信息通信。 1.深度摄像头产生的场景的深度图像(包括人,物,墙壁,等等)和发送的 原始数据raws给iisu中间件。 2.iisu分析原始数据,确定个人位置、去除场景中所有其他对象。计算每个 人的信息(高度,身体部位的位置等)并提供相关数据的应用。 3.体感应用,实现动作识别,实现动作对应的游戏操作,并运行游戏。 You iisu TIl!!1 Solutions 313 Gesture- D嘧诖al 弓黧紫 enlenainrnenf 。键蓦稳“Uo髓n哪of 邈 簪德跨 量_『羹■誓 受黼 深度摄像头产生的 jisu分析原始数据,确定个人位置、 体感应用 场景的深度图像 去除场景中所有其他对象。 图3.4数据处理流程图 万方数据 基于softkinetic的运动类体感游戏设计与实现 3.4开发框架 基于应用框架的理论,结合程序抽象技术和组件技术,研究设计具有开放性、 可成长性的系统,建立如图3.5所示的开发框架。 如图3.5所示,SOURCE的功能是从深度摄像头获取标准化的格式数据。它 支持各种深度图滤波参数,提高数据源的质量。 SCENE将深度图变换到以现场为中心的三维坐标“世界”。SCENE层也可以 从场景的背景中分离出感兴趣的对象。 UI的提供了一套自然的手势识别功能,可以直接由应用程序调用。 UM提供检测逻辑。它允许应用程序隔离每个用户从他人和场景中的物体。 图3.5开发框架 3.5软件结构 体感游戏平台在体系结构上包括softkinetic硬件与应用程序软件,其中应用 程序软件中包括后台的数据处理、前台的用户界面以及前后台之间的交互,在功 能上包括识别用户、识别用户不同的手势以及操作虚拟人体模型等,是一个较为 复杂的系统。软件结构主要分为数据库层、游戏逻辑层、游戏协议层和网络通信 层,客户端软件分为显示模块、控制模块和数据模块三部分,每个模块负责完成 单独的功能,不同模块之间通过接口进行交互,所有的模块共同工作来完成系统 的功能,具体结构如图3.6所示。 万方数据 工程硕士学位论文 鬣鬻蓊缀溺 愿豳翻豳露翟簇翻黧 $ _+黼 图3.6软件结构图 3.6系统类图设计 游戏平台采用C/S模式,游戏资源需连接服务器下载到客户端实时运行,支 持网络联机游戏。 3.6.1服务端类图 图3.7是服务端类图。 ThreadPool类:负责进程池的创建,并且调用CommSock类来与客户端建立 连接 CommSock类:负责客户端的连接,并对数据包进行优化处理。 GameLogic类:负责管理游戏大厅以及用户。 Playroom类:游戏大厅,负责管理各种场景。 UserManage类:对用户进行管理,例如用户的交易信息。 Mysql类:负责连接数据库,进行数据的存储操作。 Error类:处理程序中可能出现的各种异常。 ???方数据 基于soffkinetic的运动类体感游戏设计与实现 图3.7服务端类图 3.6.2游戏客户端设计 图3.8是客户端类图。 §潲黼褫譬奠i 1 X ” o 、Z 、 嘲碗琏。??。 融耐鼬蜮辆懒喊卜{ 嘲々晦 脚碱阻删峨翻瞬 l i q蝻自睁 绺#柳噼 l }tI.积粕㈣ htdR☆碱溉*黼 l 。。。。 蝴嘴蝴女b嗥i《ii 匿銎i{鬻鬣; ,^—— 错《蝴i{ 一~姆婚㈣鹣黼嘴§ %《b㈣§ 一 崎啦}■目0 1¨ 。誉F 鬻’l蠹爱’ ” 锥嘴赫赫鳓“ii薹一 。》 l黧鬻鬻鏊瀛iii『. 嗜棚轴姆嘲I■磐 酗磁∞∞稳i:I i ;嘞瞒自峨醐¨¨j誉i 曩黧黧 麴震 蛳黼酗§融 l坤蝴嘲#%噼 嘞鞘酾娃;j端靠龇噼I孵 ;峰m铀№㈣ j () l鬈黧黧 崦掰##稚#《Ⅻ‰《自t蝴 坤州馘鳓螂矿 “隰戮鞫隧鐾墼 增孵m《㈣# j ;I拳颤糍%斓%噶稚璃F咧{ ;坶嘲陡蘸醅静螭嘞蟪 阳删略女铡》i ia }峋,lI辩ii龋黼《静 争 。 , ~‘~~~~ , $醐瀚 ‘e黼HH-哺t , 崎蜊I##蠛} 峰蝌嗡&蛔噼 嘲耩4_I瞎 ≮删 l hMdh“§l , }●■自日■Ⅻl 峰蜊确霸晦瓣瓣 鬻繇iil / 您塑甓‰,3 蜘溉∞赫鹾 鬣躐i霪 h叫‰m魄嘏翰嘲{ 崤艚轴哺喃粼嘲纳自节瞎 哮嘴辨舡 ri=:==’1j圜圈hd越“%^曲∞??蛐I 嘈赋轴嘲黟摊l目峨螂懈嘲蝼卿嘲脯嗍, 吨相嚷畦袭j 蛾∞觑69啦 墨黼鞫 精黼姆鳓缫滞铂峨 嘲相辩棼日#嘲≯ №∞撕龋张}q■铂嘲醐㈣ l蝴鼬雕麓型日 峰嘲鼬赫船懈 图3.8 客户端类图 Iisu:easii的入口点,easii中包含一系列可以被iisu调用的对象,经过封装 之后使用户己更加友好的方式进行调用。 20 万方数据 工疆额士学位论文 Sense:存储了所有场景中元素的信息。 Source:用来接收摄像头中的数据。 User:活动用户的所有信息包括位置、骨骼点坐标等基本信息。 Controller-用户界面控制类。 1、显示模块 显示模块的主要功能是负责三维场景和用户界面的显示。整个系统使用 Unity3D软件进行开发或者通过导入flash播放,所以显示画面可以由Unity3D 所提供的相应组件来进行呈现。对于三维场景来说,Unity3D作为一个三维游戏 引擎,可以轻松导入复杂的三维模型并进行处理和显示,所以需要将建立好的三 维人体模型导出成为Unity3D可以识别的格式,导入之后再根据程序交互的需要 来调整模型的层级关系;对于用户界面来说,Unity3D也提供了专门用于二维界 面显示的相应组件,例如GUITexture(界面纹理)、GUIText(界面文字)等,其 中GUITexture用于在界面中展示一块特定大小的二维矩形纹理,GUIText则用于 在界面中展示特定的文字介绍等信息,本系统用户界面中的手形光标和实时场景 信息都可以用GUITexture来进行显示,任务提示,计时器等信息则可以用GUIText 来进行显示。 2、控制模块 控制模块的主要功能是获取数据模块的数据并进行处理,同时根据获取的数 据控制显示模块内容的变化,是整个游戏的核心模块。显示模块中根据用户交互 变化的内容包括手形光标、三维模型和反馈信息等。控制模块要控制手形光标的 位置和状态,就需要获取数据模块中提供的相应数据,包括当前用户的手是否处 于活动状态、活动状态下手的实时位置、以及手的当前状态等;对于游戏中的模 型,需要控制模块来控制模型的选中状态与几何变换。控制模块所要获取的数据 包括当前有无用户、用户是否已选中了某个工具模型等。控制模块在获取数据后 在程序中进行计算和处理,就可以来控制显示模块的内容变化了。 3、数据模块 数据模块的主要功能是封装soflKinetic SDK,处理softKinetic所获取的底层 数据,并且输出为可以用于交互的高级数据。由于程序所要softKinetic的功能包 括显示实时场景信息和手势交互,而softKinetic SDK对于这两个功能的实现分别 在两个不同的动态链接库中,所以数据模块对于soflKinetic SDK的封装分为两个 部分,其中一个部分负责获取softKinetic的颜色流(ColorStream)数据,进行实 时场景信息显示:另一个部分则负责获取soflKinetic的交互流(Interaction Stream) 数据,包括是否存在用户、用户每只手的状态及位置、用户哪只手发生了握拳或 松开事件等,获取了这些数据后,控制模块可以通过处理这些数据来完成程序的 交互功能。 万方数据 基于softkinetic的运动类体感游戏设计与实现 3.6.3具体游戏类图 以某一个游戏《奇虎拼图》为例,具体设计FlashApp、FlashForm、IssuApp、 Properties和Common。 图3.9某游戏的类结构图 FlashApp.program主程序,main函数入口。 FlashForm:主界面Form。 IssuApp-继承IISU中间件,并提供该拼图体感游戏的操作主要实现方法。 Properties:主要设置参数 Common:配置读取和一些公用函数。 其中,FlashForm的具体设计,如图3.10所示。 万方数据 工程硕士学位论文 。蛳c晰” e揪‘$涮自m懒 。#№;K删 。-;。二。。剐。矗?、:二二=:乏j。;乏:≥:::兰矗≥‘i;:≯纛:。。。。一.::,二。毒;——9捌 ’钳鼾“ 。剐“删 。鸸“㈣ 。蚓毒。F∽吐.1畸o” j“i“g№啦M㈣ ·蛳R% 9№州d“ 。。脚:二≯;删。二一;;≤。}5 #* , 一;m} ;。o:。!≮蠢≥。::二:。妒。l:。■, _¨≮。。 。 图3.10 FlashForm的类结构图 Checkfile:加载的flash游戏 FlashForm—keyDown:设计了按下操作,由体感“悬浮”动作触发。 AxShockwaveFlashl:播放flash游戏组件 IntilaizeComponent:实例化界面的控件,包括:退出的btnExit按钮,显示 实时深度图的picturel、显示识别操作的picture2、和提示信息picture3中,IlsuApp 的设计如图3.1 0所示。 一一一。::i。..*懒露器霪灞“—;。一t,+窿黧豢“。 s融 *一 图3.11 IIsuApp的类结构图 3.7手部识别算法设计 利用softKinect实时地获取人体骨豁模型,将其中20个节点的三维坐标信息。 选择这20个骨豁节点中的八个节点作为动态手势的特征处理,分别为左手节点、 右手节点、左手手腕节点、右手手腕节点、左手手肘节点、右手手肘节点、左肩 节点和右肩节点。此时能够代表动态手势的一个特征向量可以表示为: 巧=“,M,毛,.. .,黾,%,气) f 3-1、 其中,n为一个手势所包含的特征向量个数。在实际的动态手势识别过程中, 万方数据 基于soflkinetic的运动类体感游戏设计与实现 肩部的移动相对比较微小,因此肩部的位置可以被用作基准点的计算。定义基准点 B(xb,yb,Zb)为肩部连线的中心,其值可通过公式(3.2)获得: 一 1 域黾,乩,zD=-;(x7+xs,¨十虬,7-7+毛) , 、 二 (3—2) 在计算出基准点之后,就可以对以上八个骨豁节点的数据进行正规化。定义 矿:兰兰 IZ-jil (3—3) 其中面为计算,到的基准点在原有坐标系中对应的向量;矿为归一化前骨路节点对应 的向量;歹为归一化后该骨{;墓节点对应的向量;Z为左肩对应的向量;i为右肩对 应的向量。由于左肩和右肩的相对固定性,采用左肩和右肩的距离作为标准长度。 通过以上方式就可以将原有的人体化坐标系转换成以双肩中心点为原点的双手坐 标系,其中基准点B为双手坐标系原点。这样,就消除了人体尺寸和距Kinect远近 对特征向量所产生的变化。 3.8本章小结 本章在需求分析的基础上,确立了系统的整体的技术路线,同时在硬件结构 以及软件层次上对系统进行了概要上的设计;并且在技术选型中确立了实现本系 统的技术组合,分别从服务器和客户端的类结构这两个方面进行了设计,为后续 的具体实现打下了基础。 24 万方数据 工程硕士学位论文 第4章基于softkinetic的运动类体感游戏系统实现 本章基于softkinetic的运动类体感游戏系统的需求和设计,给出系统的UI 的界面实现,针对关键技术难??问题给出相应的解决思路和实现过程,最终实现 了3类游戏。 4.1 UI界面实现 4.1.1应用的主界面 应用的主界面如图4.1所示,无需登录,直接运行。界面设计了图文、音乐、 影视、学习和运动(游戏)等功能界面。 图4.1 系统主界面 4.1.2我的图文 我的图文的功能是浏览照片和文件,如图4.2所示。 图4.2图文界面 4.1.3游戏选择界面 主打产品,设计的体感游戏的主界面,如图4.3所示。 万方数据 摧于sol,kinetic的运动类体感游戏设计‘j。丈现 图4.3 游戏选择界面 4.1.4操作界面 进入游戏后,首先会进入游戏操作说明界面,如图4.4示。操作说明中列举 了体感游戏中经常用到的规范性动作。 图4.4游戏操作说明 以“单词找找看”为例进行说明进入游戏后的操作界面,如图4.5所示。 1、游戏晃面区:中间最大的区域,游戏的运行进程。 2、动作识别区:包括两块,1)实时深度图,2)实时动作识别 3、退出游戏区:退出游戏的操作。 游戏界面区 图4.5游戏操作界面 万方数据 }e!E=={=!!!!!自!!!!!自!!!!!==!!==Es!自!!!自E!!E!自!l===!=自自!=!自!==!!!!E目!===上栏坝士学位论文 4.2关键技术难点和解决方案 4。2.1系统初始化 系统初始化包括摄像头初始化、Iisu中间件的各模块初始化工作,主要流程 如图4.6所示。 军 厂磊、、 \ / 图4.6系统初始化模块流程图 当采集到摄像头信息后,主要完成3个注册工作。 (1)注册系统参数 1、设置UI可用 将IISU的框架中的uI层设置为可用。 Ill——uiEnabl edParameter m—device.RegisterParameterHandlebool(”UI.Enabled”); 2、设置控制器个数 控制器最多不超过2人,可通过以下设置控制器的人数。 m~controllersCount m—device.RegisterParameterHandleint(”UI.ControllerCount”); (2)注册控制器 以下代码表示激活1号控制器,如果有2个人在摄像头下,那么需要开启第 万方数据 基于sol,kinetic的运动类体感游戏设计与实现 二个控制器。 2 m—eontrollerlsActiveData m—device.RegisterDataHandlebool(”UI.CON TROLLERl.IsActive”); (2)注册数据 1、状态数据 以下代码用以获取实时的状态数据,用以判断和甄别控制器是否能够被摄像 头抓取。 = m—pointerStatusData m—device.RegisterDataHandleint(”UI.CONTRO LLERl.POINTER.Status”); 2、深度图数据 以下代码用以获取实时的深度图数据,m—depthData是高保真的rawdata格式, 需要转化为BMP图才能显示。 2 m—depthData m—device.RegisterDataHandleIImageData(”SOURCE.CAM ERA.DEPTH.Image”); 3、注册灰度图数据 以下代码用以获取实时的灰度图数据,格式为bmp,可直接显示。 m——labelData m—device.RegisterDataHandleIlmageData(”SCENE.Labellmage”); 4、骨架数据 以下代码用以获取实时的骨架数据,但各个骨架节点的坐标需要通过归一化 来进行坐标转换。 m—pointerCoordinatesData=m—device.RegisterDataHandleIisu.Data.ector3 (”UI.CONTROLLERl.POINTER.NormalizedCoordinates”); 4.2.2实时显示深度图影像 实时显示深度图的流程如图4.7所示。其中将高保真格式rawdata转换为BMP 的流程如图4.8所示。 28 万方数据 工程硕士学位论文 图4.7实时显示深度图流程图 申请目标位图的变量,并 肾其内存区域锁定 工 获取图像参数 I 扫描线的宽度 . l 显示宽度与扫描线I 宽度的间隙 l 获取bmpData的内 存起始位置 ‘ 用stride宽度表示内 存区域的大小,将原 始字节数组转换为 内存中实际存放的 字节数组 图4.8 Rawdata转换为BMP流程图 29 万方数据 基于sottkinetic的运动类体感游戏设计与实现 其中最关键的地方在于原始字节转换,以下代码详述了该过程。 1、定义变量宽度stride表示内存区域的大小,从而算出字节数。 int scanBytes=stride幸height; 2、分别设置两个位置指针,指向源数组和目标数组。 int posScan 2 0,posReal=0; 3、为目标数组分配内存 byte[】pixelalues=new byte[scanBytes]; 4、下面的循环节是模拟行和列扫描 for(int X=0;xheight;x++)//列扫描 for(int Y=0;Ywidth;y++)//行扫描 pixelalues【posScan++】=rawalues[posReal++]; posScan+=offset;//行扫描结束,要将酲标位最指针移过那段“间 5、用Marshal的Copy方法,将刚才得到的内存字节数组复制至lJBitmapData 中 System.Runtime.InteropSerices.Marshal.Copy(pixelalues,0,iptr, zanBytes); bmp.UnlockBits(bmpData); 6、 解锁内存区域,为了修改生成位图的索引表,从伪彩修改为灰度 Col011Palette tempPalette; using(Bitmap tempBmp=new Bitmap(1,1, System.Drawing.Imaging.Pixell?ormal.Format8bppln dexed)) {tempPalette=tempBmp.Palette;} for(int i=O;i256;i++) {tempPalette.Entries[i]=System.Drawing.Color.FromArgb(i,i,i);) bmp.Palette=tempPalette; 算法到此结束,返回结果,从而实现了图4.5的实时深度图的显示,该效果 能实时捕捉到人体的动作,从而给玩家更好的游戏体验。 30 万方数据 T程硕上学位论文 4.2.3实时显示人体识别状态 该模块主要功能为即时提醒玩家当前状态,首先定义状态如下,如图4.9所 (1)初始化状态(10ad),即游戏正在加载。 (2)正常状态(normal),即摄像头覆盖全身骨架。 (3)异常状态(exception),即摄像头找不到人体。 (4)控制器激活状态(active),即控制器处于就绪状态,能够准确识别人 手。 (5)游戏退出状态(exit),即游戏将要退出。 (a)初始化状态 (b)正常状态 (C)异常状态 (d)控制器激活状态 (e)游戏退出状态 图4.9游戏状态图 实现状态切换的流程图,如图4.10所示。 其中关键判断的因素是通过变量m—pointerStatusData.alue,该变量是通过 Iisu不断获取人体的骨架数据的,如下所示。一旦有值,则说明骨骼被系统找到, 则显示正常状态,反之,则显示异常状态。 if(m—pointerStatusData.alue!=0) { ChangePictureBoxImage(flashFrm.pictureBox2, neW Bitmap(global::F1ashQiaohuPintu.Properties.Resources.normal)); )else{ ChangePictureBoxImage(flashFrm.pictureBox2, neW Bitmap(global::F1ashQiaohuPintu.Properties.Resources.exception)); 万方数据 基于so熊inetic的运动类体感游戏设计与实现 。 图4.10识别状态切换流程图 其中切换图片需要使用C捍技术中的委托,通过绕过主线程的控制,实现图 片控件的实时变化,其中关键代码如下。 private delegate void ChangePictureBoxlmageDelegate(PictureBox C,Bitmap b);//修改值 private void ChangePictureBoxlmage(PictureBox c,Bitmap b) if(c.InokeRequired) { ChangePictureBoxlmageDelegate method=new ChangePictureBoxImageDelegate(this.ChangePictureBoxlmage); c.Invoke(method,new object[】{c,b)); 32 万方数据 , 4.2.4游戏加载 游戏加载的关键在于载入flash播放器,然后载入flash小游戏,最后播放 flash,同时载入相对应的各种操作动作模块,其流程如图4.11所示。 (1)加载配置 配置采用NamealueCollection的结构来存储,加载配置的代码如下: private static IniReader—Inf=new IniReader(Application.StartupPath+ ”\\InI\\Conflg.ini”); 以奇虎跳跳跳为例,说明主要的配置有: [Param] 1、跳跃方差阈值,即跳跃的X,Y变量方差大于阈值,即判断跳跃。 varThreshold=O.063 2、轨迹点的数量,即时间飞行模型中的轨迹点数量 HISTORYCNT=1 5 3、键盘方向键左击次数,次数越多确保事件触发。 LEFTCNT=2 0 4、键盘方向键右击次数 RIGHTCNT=20 5、键盘方向键上击次数 UPCNT=6 6、键盘方向键下击次数 DOWNCNT=l 0 7、悬浮时间,即悬浮了38帧,即判断单机事件。 eXnTime=3 R 万方数据 基于soRkinetic的运动类体感游戏设计与实现 l 加载鼠标事件 两 \ / 图4.11游戏加载流程图 (2)加载flash 先定位flash的目录位置,然后选择模式为缩放模式。 0——相当于Scale取”ShowAll”(全屏模式) l——相当于Scale取”NoBorder”(无边框模式 2——相当于Scale取”ExactFit”(随播放器大小的缩放模式)。 axShockwaveFlashl.Movie 2 Application.StartupPath+”\\flash\\”+swfName +”.swf”: axShockwaveFlashl.ScaleMode=2; axShockwaveFlash 1.Play(); (3)加载鼠标、键盘事件 1、加载windows的光标位置函数,需要使用mfc的api,该api位于user31.dll [DllImport(”user32.dll”,CharSet=CharSet.Auto,SetLastError=true)] static extern int SetCursorPos(int X,int y); 2、加载windows的光标事件函数。 [Dlllmport(”user32.dll”,CharSet=CharSet.Auto,SetLastError=true)】 static extern void mouse—event(int dwFlags,int dx,int dy,int cButtons,int 34 万方数据 工程硕士学位论文 dwExtralnfo); 3、加载双击设置时间函数 2 [System.Runtime.InteropSerices.Dlllmport(”user32.dll”,EntryPoint ”SetDoubleClickTime”)] internal extern static int SetDoubleClickTime(int wCount); 4。2.5动作识别 (1)轨迹点采集模块 判断控制器(人手)的动作,首先要采集轨迹点,其流程如图4.12所示。 图4.12轨迹点采集流程图 1、m—pointerPosition表示获取的深度图坐标系转换为游戏界面坐标后的轨迹 点,其代码如下所示,其转换流程如图4.13所示。 m—pOinterPositiOn= getCameraCoordinates(m—pointerCoordinatesData.alue,0.1 f); 2、轨迹列表若小于轨迹点上限 if(pointList.CountHISTORYCNT) {pointList.Add(m—pointerPosition);) else{ pointList.RemoveAt(currentCnt%HISTORYCNT); pointList.Add(m—pointerPosition); ) 35 万方数据 基于soflkinetic的运动类体感游戏设计与实现 (2)轨迹点坐标转换模块 在将当前轨迹点插入队列之前,还需要对点的坐标进行转换,坐标转换流程, 如图4.13所示。 l酱兰茬中的x和z进行 图4.13坐标转换流程图 其关键代码如下: private ector3 getCameraCoordinates(ector3 pointerCoordinates,float margin) { float x 2 normalize(pointerCoordinates.X); float z 2 normalize(pointerCoordinates.Z); Screen screen 3 Screen.PrimaryScreen; float halfHeight=screen.Bounds.Height/2; float halfWidth=screen.Bounds.Width/2; ector3 coordinates 2 new ector3((x+1)枣halfWidth+margin, 0,(1一Z)乖halfHeight—margin); return coordinates; (3)悬浮动作识别模块 右手悬浮操作是静态动作,较为简单粗暴的算法是加入判别器,每个时刻循 环都计算右手的动作幅度,若在很小的范围内抖动,则判定悬浮。而更加效率的 36 万方数据 工程硕士学位论文 方法是对整体轨迹进行采集,设置更为科学的学习型算法来学习当前操作者悬浮 特征值作为幅度阈值。 如图4.14所示,悬浮动作是论文中系统中设定的单机事件的指定动作,当玩 家的控制器(例如右手)悬浮在某个位置超过悬浮阈值(例如2s)时,则触发单 机事件。 控制器为 顿不动为 图4.14悬浮动作定义 其识别流程如图4.15所示。 其关键代码如下: 1、计算控制器的x和z坐标的平均值 for(int i=O;icount;i++) { ave—x+2 pointList[i].一X; ave—Z+2 pointList[i].一Z; ) ave—X/2 count; ave—z/2 count; 2、计算控制器的x$1Jz坐标的方差 for(int i=O;icount;i++) { var—X+2(pointList[i].一X—ave—X)+(pointList[i].一X-ave—x); var—z+2(pointList[i].一Z—ave—Z)4(pointList[i].一Z-ave—z); ) 3、判断悬浮 if(var—XvarThresholdvar—ZvarThreshold) { isPress=true; ) 万方数据 基于softkinetic的运动类体感游戏设计与实现 孛 图4.1 5悬浮动作识别流程图 (4)画圈动作识别 画圈操作在体感游戏中常常作为enter操作键钮,与画叉相对。画圈在 softkinect中有内置行为模型,但具有一定的误判,一般认为是骨架旋转时容易丢 帧造成的。论文采用插值算法来进行模拟补帧,尽可能完善该画圈行为识别。 (5)跳跃动作识别 跳跃是强动态动作,需要判断双脚是否离地,由于跳跃发生的时间极短,动 作幅度剧烈,深度摄像头有可能漏帧,识别率低。论文计算人体的重心和肩膀、 头等重要器官的水平位置来进行判断,提高识别率。 跳跃动作识别的关键在于:当身体的重心(需计算)在某个位置超过跳跃阈 值时,识别为跳跃动作,其流程如图4.16所示。 38 万方数据 每帧循环 一 士 P呼】 上 l算出重心的平均值{ 、—≥__, 目^卜;灞镕 告 图4.16跳跃动作识别流程图 (4)静态姿态识别模块 以“自行车”游戏中“左倾”??“右倾”肢体姿态为例,获取骨架中4个关键位置 左右肩膀的Z值和左右手掌的z值,根据这4个点的变化来识别“左倾”、“右倾”, 其流程如图4.17所示。 选择4个骨架位置的原因在于为了更高的精度,因???如果仅仅是通过肩膀或 者是通过手掌都会有较大的误差。另外为了更加精确,对于左右肩膀和左右手掌 坐标值差距很小的情况,对识别时间做了要求,需要在24帧的左倾(右倾)判断 才线 万方数据 基于softkinetic的运动类体感游戏设计与实现 每帧循环 上 找到 左肩膀L SHOULD Z、 左手掌L HAND Z、 右肩膀R SHOULD Z、 右手掌R HAND Z、 的z坐标 N《未≥ ./ l识别为右倾动作I l识别为左倾动作 l 。 r 图4.17左倾、右倾识别流程图 (5)投掷动作识别模块 如图4.18所示,以《海盗扔鸡蛋》这款游戏为例,此款游戏的主要任务是扔 出手中的鸡蛋砸中目标,而目标是不断左右移动,如图4.1 8(a),或者是多目标的, 如图4.1 8(b)。 溪!I!¨溪攀鬻爹l曩翻穗 曩—■盛鬻 (a)目标是不断左右移动 (b)多目标 图4.1 8海盗扔鸡蛋游戏图 万方数据 工程硕士学位论文 若将扔鸡蛋的移动和投掷都固定在一个控制器上,则会有很大的误差??因为 投掷的时候带动甩臂,影响到控制器的位置,因此将该操作设为左右控制位置, 左手控制位置,右手甩臂投掷作为“发射鸡蛋”的动作,有效的解决了这一难题。 右手投掷的识别过程如图4.19所示。 l 识别为投掷动作 l 图4.19投掷运动识别流程图 4.3环境搭建与实现 在理解用户需求的基础上,所需要操作系统环境、开发工具和数据库的配置 如表4.1所示。 41 万方数据 基于softkinetic的运动类体感游戏设计与实现 表4.1 系统的实现环境 硬件环境 服务器 应用服务器:(CPU:Haswell i7.4790K、主频:4GHz、内存:8G DDR3、硬盘:256G SATA3固态硬盘) 数据库服务器:(CPU:Haswell i5.4590 11 50接口、主频:3.3GHz、 内存:4G DDR3、硬盘:128G SATA3固态硬盘) 客户端 CPU:Haswell i5-4590 1150接口、内存:4G DDR3、Depth Sence 320 深度摄像头l台 4.3.1模拟鼠标点击类体感游戏实现 该类游戏包括平台的UI界面和一些常见的flash游戏,例如奇虎小游戏,在 pc平台只需要操作鼠标左右键即可完成操作。采用了“悬浮”动作识别为左键单击, “移动”手势动作识别为鼠标按入拖动。 以巧虎拼词为例,主要是通过“悬停”动作的识别选择某个“单词”,然后悬停 就放下“单词”,游戏实现如图4.20所示。 图4.20巧虎拼图实现效果图 42 万方数据 工程硕士学位论文 4.3.2肢体姿态类体感游戏 如图4.21所示,该类游戏包括类似于骑行自行车这种肢体姿态类游戏,主要 识别3种姿态如俯身、左倾、右倾)来进行自行车的控制和操作。 (a)左转 (b)右转 一三一芝(c)加速 图4.21 3D自行车实现效果图 4.3.3剧烈运动型体感游戏 该类游戏主要包括跳舞类、甩臂类这种强烈运动型游戏。该类游戏误判率很 高,原因在于动作剧烈,深度摄像头有可能漏帧,具有较强的难度。攻克了一些 跳跃动作识别的基础上完成该类游戏的设计。以游戏“靴猫之舞”为例,按照游戏 中猫的4个方向的动作提示,然后做相应的动作,例如伸展左(右)手、上跳和 下蹲来完成游戏动作,该游戏界面如图4.22所示。 (a)游戏进入界面 (b)挥动右手 图4.22薛猫之舞实现效果图 如果体感设备成功识别,则右边小人为绿色,如果识别失败,则小人为红色。 右下角为游戏玩家,我们通过该人物可以来调整自己距离摄像头的位置,右面中 间四个箭头为靴猫在游戏中所做动作,上下左右分别为起跳,下蹲,左手伸开, 右手伸开四个动作。双手半举状态为退出游戏,即选中右上角的图标。 4.4系统测试 4.4.1用户测试结果 1.动作识别模块测试 该模块主要的测试内容是测试用户的右手悬浮动作、跳跃动作、双手举起的 万方数据 基于soflkinetic的运动类体感游戏设计与实现 识别,这里可测试系统能否正常处理,并给出相应的正确提示信息,同时实时显 示人体识别状态的图片。并且需要测试出识别率、识别的速度和与其他算法的比 对效果。 2.实时显示深度图模块测试 该模块主要的测试内容是看系统能否正常对用户的所有动作都有相应的深度 图显示,测试显示速度,主要体现在编解码的时间消耗。 4.4.2系统性’ti P.if,0试 论文中设计了基于飞行时间模型的轨迹点采集算法,根据轨迹点的方差判断 动作的识别。 1.当采用系统方法时,在识别性能上,轨迹点方式的技术应用与传统方法相 比,识别性能提高了50%,如表4.2所示。 表4.2轨迹点方式的技术应用与传统方法性能表 2.当采用系统方法时,在识别准确率上,轨迹点方式的技术应用与传统方法 相比,识别精度平均提高了10%左右,如表4.3所示。 表4.3轨迹点方式的技术应用与传统方法精度表 另外本系统已经通过实际市场用户检验,各项指标均达到或超过了设计要求。 4.5本章小结 在以上技术路线解决的基础上,给出了界面的实现,针对系统初始化、实时 显示深度图和人体识别状态,动作识别等关键技术难点问题,给出了相应模块的 设计和实现过程,实现3类代表性的运动类体感游戏,最后给出了系统的测试, 结果表明各项指标均达到或超过了设计要求。 万方数据 结论 SoftKinetic已经能够提供一定骨骼轨迹和手势识别模型,将原有识别技术的 应用范围更加扩大,推动了人体行为识别研究的发展,被应用于识别手势、四肢 动作及人体检测。SoftKinetic的推出,既拓展了体感的应用范围,也给体感游戏 引入了新的研究技术。但因为提供的仅仅是sdk开发包,还存在对于特殊动作行 为难以识别的问题,当前主要存在空间范围小、动作干扰大的识别问题。 以soflkinect的中间件iisu和sdk为研究基础,为更好的满足运动类体感游戏 的用户需求、提升动作识别的效率和精度,具体工作总结如下: 1.基于飞行时间的行为模型 1)运动轨迹点:在softkinect给出的时隙深度图像的基础上,结合人体三维 骨架,构建一定时长的运动轨迹点模型。 2)确定运动幅度:采用轨迹点的3维坐标的方差值来判断运动的幅度特征。 3)确定运动方向:最后通过检测位移数据来判断运动的方向特征。 2.动作行为识别 论文在飞行时间行为模型的基础上,解决以下静态和动态等行为识别问题: 1)悬浮:右手悬浮操作是静态动作,较为简单粗暴的算法是加入判别器,每 个时刻循环都计算右手的动作幅度,若在很小的范围内抖动,则判定悬浮。而论 文的采用了一种更加效率的方法,首先对整体轨迹进行采集,设置更为科学的学 习型算法来学习当前操作者悬浮特征值作为幅度阈值。 2)画圈:画圈操作在体感游戏中常常作为enter操作键钮,与画叉相对。画 圈在soflkinect中有内置行为模型,但具有一定的误判,一般认为是骨架旋转时 容易丢帧造成的。因此论文采用插值算法来进行模拟补帧,从而完善该画圈行为 识别。 3)推动:若仅仅局限使用单手操作体感游戏,游戏中很多的点击按钮操作, 都需要“推动”行为来进行。即使对于深度摄像头,z坐标的动作仍旧难以识别。 论文中的做法是结合人体各骨骼坐标值,全局来判断单手Z坐标的运动方向和幅 度,具有较低的误判率。 4)跳跃:跳跃是强动态动作,需要判断双脚是否离地,由于跳跃发生的时间 极短,动作幅度剧烈,深度摄像头有可能漏帧,具有较强的难度,论文中将计算 人体的重心和肩膀、头等重要器官的水平位置来进行判断。 3.体感游戏设计 论文在以上技术问题解决的基础上,实现以下具有代表性的运动类体感游戏: 45 万方数据 基于sotlkinetic的运动类体感游戏设计与实现 1)模拟鼠标点击类体感游戏 该类游戏包括平台的UI界面和一些常见的flash游戏,例如奇虎小游戏,在 pc平台只需要操作鼠标左右键即可完成操作。论文采用了“悬浮”动作识别为左 键单击,“移动”手势动作识别为鼠标按入拖动。 2)肢体姿态类体感游戏 该类游戏包括类似于骑行自行车这种肢体姿态类游戏。论文采用了人体骨骼 模型学习来识别。 3)剧烈动作类体感游戏 该类游戏主要包括跳舞类、甩臂类这种强烈运动型游戏。该类游戏误判率很 高,原因在于动作剧烈,深度摄像头有可能漏帧,具有较强的难度。论文攻克了 一些跳跃动作识别的基础上完成该类游戏的设计。 依据上述工作总结,论文具有的创新点是: 1.研究基于soflkinect的动态动作识别,提高识别效率和精度 在softkinect给出的时隙深度图像的基础上,结合人体三维骨架,构建一定 时长的运动轨迹点模型。采用轨迹点的3维坐标的方差值来判断运动的幅度特征。 最后通过检测位移数据来判断运动的方向特征。在飞行时间行为模型的基础上, 解决了以下静态和动态等行为识别问题。 2.实现soflkinect的运动类体感游戏平台 论文在以上技术问题解决的基础上,实现3类代表性的运动类体感游戏:模 拟鼠标点击类体感游戏;肢体姿态类体感游戏;剧烈动作类体感游戏,并且对游 戏设计中的操作性进行研究,从策划、设计、程序对体感操作等规则设定,形成 游戏操作和体感动作的统一对应规范,因此flash游戏可以无缝接入。该技术特点 表明绝大多数flash游戏可以很快的集成,该平台应用简便,只需要一台深度摄像 头和PC机,市面上绝大多数flash游戏可以无缝集成进来,具有较强的经济效益 和推广价值。 由于本人自身的水平有限、时间的仓促以及一些其它条件等的制约,本文对 基于softkinetic的体感游戏平台的分析、设计和阐述,还存在许多不足的地方, 有待于进~步的完善与提高。 1.手指识别模型 应该更深一层次去地研究soflkinetic以及kinect在动作识别现状,争取应用 一个手指动作的识别模型。 2.手机游戏共享 研究出更好的具有跨系统、跨平台、并且能够进行flash游戏共享的体感游戏 系统,提高游戏的应用广度。 万方数据 工程硕士学位论文 参考文献 胡琼,秦磊,黄庆明.基于视觉的人体动作识别综述.计算机学报,2013,12: 25 12.2524 [2】 江焯林.基于计算机视觉的人体动作检测和识别方法研究.华南理工大学,2010 [3】 .基于传感器的上肢动作识别系统.安徽大学,201 3 【4】 赵沁平.虚拟现实综述.中国科学(F辑:信息科学),2009,01:2—46 【5】 蔡美玲.三维人体运动分析与动作识别方法.中南大学,2013 [6】 董士崇.视频图像的运动分析.武汉理工大学,2005 [7】 张诗潮,钱冬明.体感技术现状和发展研究.华东师范大学学报(自然科学 版),2014,02:40—49+126 程锦发,韩宾,王军栋,鲁云.基于MEMS多功能体感输入系统研究与设计.自 动化与仪器仪表,2015,12:25.27 [9] 张云勇,刘锦德,敬万均.佩戴式虚拟现实技术.计算机应用,200l,06:10.11+14 【10】 刘防.电子体感游戏体育价值的研究.南京体育学院,2013 [1 1】 F.Nasoz,K.Alvarez,C.L.Lisetti,et a1.Emotion recognition from physiological signals using wireless sensors for presence technologies.Cognition,Technology Work,2004,6(1):4—14 K.Hara,T.Omori,R.Ueno.Detection of unusual human behavior in intelligent house.Neural Networks for Signal Processing,Proceedings of the 2002 12th IEEE Workshop,2002:697—706 [I 3] S。Park,M。Trivedi.Driver activity analysis for intelligent vehicles:issues and development framework.Proc of IEEE Intelligent ehicles Symposium, 2005:644.649 [14] A.Gritai,Y.Sheikh,M.Shah.On the use of anthropometry in the invariant analysis of human actions.Proe of IEEE Conference OH Pattern Recognition, 2004:923.926 [I 5】 C.C.Li,Y.Y.Chen.Human posture recognition by simple rules.Proc of IEEE ConferenceonSystems,Man,andCybernetics,2006:3237-3240 【16】 C.D.Liu,P.C.Chung,Y.N.Chung.Human h

  2、成为IP。