摘要:随着数字化体验时代的发展, 人们越来越关注自然的人机交互方式。体感技术作为一种最新的交互体验方式, 也越来越多地受到人们的重视, 体感技术通过多种技术手段把虚拟平台和现实平台相结合, 实现自然地人机交互方式。本文基于Processing进可视化编程, 并基于Kinect进行多目标跟踪实现准确地识别和交互, 致力于实现自然和谐、身临其境的虚拟游戏体验。
关键词:Processing; Kinect;
1、Processing介绍
Processing是一种具有革命前瞻性的新兴计算机语言, 它的概念是在电子艺术的环境下介绍程序语言, 并将电子艺术的概念介绍给程序设计师。它是Java语言的延伸, 并支持许多现有的Java语言架构, 不过在语法 (syntax) 上简易许多, 并具有许多贴心及人性化的设计。Processing可以在Windows、MAC OS X、MAC OS 9、Linux等操作系统上使用。目前最新版本为Processing 3。以Processing完成的作品可在个人本机端作用, 或以Java Applets的模式外输至网络上发布。
2、开发基于Processing的人机交互小游戏
2.1、打飞机小游戏的设计
首先设计一个飞机类, 并为其设计初始化方法Plane、飞行方法fly, 显示方法display, 被击毁得分方法Crash
设计一个子弹类cannonball, 并为其设计初始化方法cannonball () 、开火方法、飞行方法fly () 和显示方法display ()
设计一个大炮类cannon, 并为其设置初始化方法、开火方法fire () 和显示方法display () ,
设计完三个类之后将三各类实例化, 并在Setup () 方法和draw () 方法中调用
图1 打飞机游戏
2.2 弹球小游戏设计
设计一个小球类circle () , 并为其设置初始化方法circle () 、移动方法move () 、反弹方法judge () 以及显示方法display () , , 在setup方法中初始化所有设置并在draw方法中调用Mouse Pressed方法来判断鼠标的状态以控制小球的发射。
图2 弹球游戏
3、游戏中加入使用Kinect体感交互
Processing支持通过API调用Kinect设备。这里我们使用Kinect V2 API。
(1) 获得玩家人数
在setup () 方法中激活enable Depth Img属性和enable BodyTrack Img属性, 将他们设置为true。在draw (0方法中通过getBody Track Image方法获得人体跟踪图像, 通过get Depth Image获得深度图像, 调用get Raw Body Track跟踪人体获得图像序列, 并通过get Num Of Users获得玩家的数量。
(2) 进行人体和脸部跟踪
在setup () 方法中激活enable HDFace Detection属性和enable Color Img属性, 将他们设置为true, 在draw () 方法中使用get HDFace Vertex方法获得脸部集合图形。
(3) 获得人体骨架
通过enable Body Track Img获得人体骨架后最终手部的点, 以此来代替鼠标进行操控游戏中玩家的动作。
4、总结
本文基于Processing构建了两个交互小游戏, 并设计了通过Kinect进行体感交互操作。主要步骤分为基于Kinect的人体骨架模型构建和人体行为识别。Kinect可实现人体骨骼追踪功能, 通过识别人体的关键关节点位置来确定人体的骨骼, 最终实现使用者的三维空间表示。其原理可分为以下三个步骤:利用数字图像处理技术可以完成前景分割;识别人体轮廓区域内的各个身体部位, 如头部、躯干和四肢等。从正面、侧面等多个角度去分每一个可能的像素来确定关节点的坐标。基于主成分分析法的特征提取、基于SVM的每帧人体行为分类和基于人体运动数据库的行为识别通过以上技术, 我们能够快速的创建基于体感交互的应用与游戏。