英特尔开发人员专区原文地址

Cocos游戏开发引擎对于广大开发者来说都比较熟悉,Intel RealScene是什么呢,简单理解是一种特殊的摄像头,可以捕捉用户的手势,面部表情等,进而实现AR,VR的特殊应用,本案例通过摄像头结合Cocos引擎实现一款跑酷游戏,游戏截图如下:

图1-cocos+IntelRealScene实现的跑酷游戏

1.游戏玩法:

1.在摄像头前坐好

2.当游戏主角前方有障碍物或陷阱时候迅速移动头部向左,游戏主角会跳起

3.恢复坐好状态

(目前我的最好成绩是24秒!!!)

2.项目运行工程网盘地址:

链接: http://pan.baidu.com/s/1ntB0kwL 密码: nzrd

3.项目源码网盘地址:

链接: http://pan.baidu.com/s/1qWj9Iws 密码: buj6

4.开发和运行环境要求:

4.1 Win7以上64位操作系统

4.2 使用了Intel F200摄像头设备

4.3 正确安装F200驱动程序(下载在)

4.4 安装vs2013

5.开发核心步骤

5.1 登录www.cocos.com下载最新版的cocos引擎源码,然后安装,并创建一个新的Cocos工程(此处略过10000字,详细方法可以登录cvp.cocos.com),并使用vs打开。

5.2. 重要,若要cocos支持RealScene设备需要加载库,可以通过属性表一次性完成该操作,在VS中找到【视图】【其他窗口】【属性管理器】,如下图:

然后找到添加属性按钮,如下图:

选择C:\Program Files (x86)\Intel\RSSDK\props

选择任意VS2010-13.Integration.MD.props 或者 VS2010-13.Integration.MT.props,

如下图:

在项目名上面右键,查看项目属性,检查是否加载成功,如下图:

我们看到包含目录和库目录中已经有了关于RSSDK的内容,说明属性文件生效,但是这时候编译工程会出现找不到lib库的错误,解决方法如下:

在库目录增加一行只想RSSDK\sample\common\lib\x64\v140

然后编译项目,ok。

6.核心编码

6.1 在AppDelegate中启动摄像头并在独立线程中更新数据。

#include "CCStdC.h"

#include <SDKDDKVer.h>

#include <pxcsession.h>

#include <stdio.h>

#include <stdlib.h>

#include <pxcsensemanager.h>

#include <util_render.h>

#include <pxcfaceconfiguration.h>

引入以上库文件,在构造函数启动线程

AppDelegate::AppDelegate() {

std::thread t([&](){

printf("init realsence\n");

PXCSession* session = PXCSession_Create();

if (session)

{

PXCSession::ImplVersion version = session->QueryVersion();

CCLOG("SDK Version is %d.%d\n", version.major, version.minor);

session->Release();

}

//// ///////////初始化rs模块

PXCSenseManager* senseManager = PXCSenseManager::CreateInstance();

if (senseManager)

{

CCLOG("intel PXCSenseManager ok");

senseManager->EnableFace();//开启脸部识别模块

CCLOG("intel realsence EnableFace");

if (senseManager->Init() == PXC_STATUS_NO_ERROR)

{

CCLOG("intel senseManager->Init() ok");

// 获取faceModule

PXCFaceModule* faceModule = senseManager->QueryFace();

PXCFaceData* faceData = faceModule->CreateOutput();

PXCFaceConfiguration* faceConfiguration =

faceModule->CreateActiveConfiguration();

////设置3d跟踪模式

faceConfiguration->SetTrackingMode(

PXCFaceConfiguration::TrackingModeType::FACE_MODE_COLOR_PLUS_DEPTH);

faceConfiguration->detection.isEnabled = true;

faceConfiguration->ApplyChanges();

bool quit = false;

while (!quit)

{

// //获取跟踪的坐标

faceData->Update();

int faceNum = faceData->QueryNumberOfDetectedFaces();

if (faceNum > 0)

{

PXCFaceData::Face *trackedFace =

faceData->QueryFaceByIndex(0);

PXCFaceData::DetectionData* detectionData =

trackedFace->QueryDetection();

PXCRectI32 rectangle;

detectionData->QueryBoundingRect(&rectangle);

Game::x = rectangle.x;

Game::y = rectangle.y;

Game::w = rectangle.w;

Game::h = rectangle.h;

}

senseManager->ReleaseFrame();

}

faceData->Release();

faceConfiguration->Release();

senseManager->Close();

}

else{

CCLOG("intel realsence error2");

}

senseManager->Release();

}

else{

CCLOG("intel realsence error1");

}

});

t.detach();

}

以上代码,会时时更新数据,捕获人脸的x,y,w,h在屏幕的坐标,缺省是640X360的范围,可以通过Log查看数据的变化。

6.2 在GameScene中启动计划任务scheduleUpdate,并在每一帧处理。

void Game::update(float t)

{

//每帧保存一个点

if (allPoint.size() < 60)

{

MyPoint * newp = new MyPoint(x, y, w, h);

newp->autorelease();

allPoint.pushBack(newp);

}

else

{

MyPoint * newp = new MyPoint(x, y, w, h);

newp->autorelease();

allPoint.eraseObject(allPoint.front());

allPoint.pushBack(newp);

int farx = (allPoint.back()->x - allPoint.front()->x);

std::string str =

StringUtils::format("%d %d %d %d  %d", x, y, w, h, farx);

CCLOG("%s", str.c_str());

if (farx >30 && farx<200)

{

if (this->_dir == Stop)

{

this->_dir = Up;

allPoint.clear();

}

}

}

。。。。。。

}

这里用60个点来记录每一帧人脸坐标的变化,通过计算是否有超过40的移动来确定玩家是否跳起(这里很偷懒,可以使用的人脸的点可以达到78个点)

英特尔开发人员专区原文地址

使用IntelRealScene设备结合Cocos引擎实现体感游戏开发的更多相关文章

  1. OpenNI结合Unity3D Kinect进行体感游戏开发(转)

    OpenNI结合Unity3D Kinect进行体感游戏开发(转) 楼主# 更多 发布于:2012-07-17 16:42     1. 下载安装Unity3D(目前版本为3.4)2. 下载OpenN ...

  2. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  3. 【CityHunter】基于LBS的AR体感游戏设计理念

    本人目前还不是游戏行业的圈内人士,并不懂得,游戏行业的生态圈,也不懂得,所谓的什么“中国市场环境”.所以不敢发表关于这方面的见解,不过我在这里想要插一句话,就是我认为啊,行业内,人与人之间还是有分层次 ...

  4. [体感游戏] 1、MPU6050数据采集传输与可视化

    最近在研究体感游戏,到目前为止实现了基于51单片机的MPU6050数据采集.利用蓝牙模块将数据传输到上位机,并利用C#自制串口数据高速采集软件,并且将数据通过自制的折线图绘制模块可视化地展示出来等功能 ...

  5. C#开发体感游戏 Kinect应用知识

    Kinect首先是一个XBox 360外接体感设备,通过无线方式捕捉动作感知.由PrimeSense提供Range Camera技术,同类产品如任天堂Wii.Play Station Move,必须让 ...

  6. 使用unity3d和tensorflow实现基于姿态估计的体感游戏

    使用unity3d和tensorflow实现基于姿态估计的体感游戏 前言 之前做姿态识别,梦想着以后可以自己做出一款体感游戏,然而后来才发现too young.但是梦想还是要有的,万一实现了呢.趁着p ...

  7. scratch编程体感游戏

    体感游戏有很多种,最常见的就是摄像头和声控了,今天我们要用scratch编写一系列的体感游戏!!!是不是很激动呢? 首先我们来编摄像头类的: No.1拳头打幽灵 挥动头就能打到幽灵了哟! 具体程序如下 ...

  8. Cocos引擎现身 IndiePrize 全球游戏开发者大会!Cocos的两大男神成为压轴嘉宾

    2019全球游戏开发者大会今天11月10日,在深圳南山海上世界文化艺术中心拉开帷幕.除了号称精品游戏"奥斯卡"的IndiePrize将在现场展开最终角逐,更有来自美国.俄罗斯.澳大 ...

  9. cocos2dx+KinectV2 体感游戏之微信打飞机

    https://download.csdn.net/download/qq_34609108/10038417 https://blog.csdn.net/qq_34609108/article/de ...

随机推荐

  1. 2.4G电动车防盗方案 超低功耗单发器 SI24R2F

           对于现在的电动车防盗标签和校园卡的市场,主要以2.4G为主做标签,各色各样的2.4G国产芯片渐渐的能满足这块RFID领域.但是作为RFID的推动领导者,深圳市动能世纪科技有限公司专注于超 ...

  2. PCA方法从原理到实现

    一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题 ...

  3. MyBatis配置数据库连接

    <environments default="default"> <environment id="default"> <tran ...

  4. 部分用户间接性访问不了linux服务器解决方法

    linux的/etc/sysctl.conf中应设置 net.ipv4.tcp_tw_reuse = net.ipv4.tcp_tw_recycle = 参考文章: https://ieevee.co ...

  5. LeetCode31.下一个排列 JavaScript

    实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空间. ...

  6. Ajax数据获取(未完待续。。。)

    @:网站内容通过Ajax获取数据然后重新渲染产生 这种时候我们如何拿到自己想要的数据: 1:打开检查,在network选项中查看浏览器发送了哪些请求.(清空,再刷新,得到新的请求) 在截图的左下角可以 ...

  7. MsSql 游标 修改字段两个表关联 表向另个表插入记录

    -- 方法1:游标-- 声明变量DECLARE @SystemUserId AS UNIQUEIDENTIFIER -- 声明游标DECLARE C_SystemUser CURSOR FAST_FO ...

  8. ionic ios 打包 真机测试常见问题

    1.ionic 项目在windows下正常打包安卓包时  迁移到mac下打包ios时  不需要复制平台目录platforms即可  不用再mac下去安装各种插件信息 2.ionic 下不能访问api信 ...

  9. vue-cli 项目安装失败 tunneling socket could not be established, cause=connect ECONNREFUSED

    1.安装vue-cli npm install vue-cli -g 2.初始化项目 vue init webpack project 此时报错:vue-cli · Failed to downloa ...

  10. Unity判断鼠标是否在UI(UGUI)上

    "EventSystem.current.IsPointerOverGameObject()" UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了 ...