使用IntelRealScene设备结合Cocos引擎实现体感游戏开发
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引擎实现体感游戏开发的更多相关文章
- OpenNI结合Unity3D Kinect进行体感游戏开发(转)
OpenNI结合Unity3D Kinect进行体感游戏开发(转) 楼主# 更多 发布于:2012-07-17 16:42 1. 下载安装Unity3D(目前版本为3.4)2. 下载OpenN ...
- 使用HTML5开发Kinect体感游戏
一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...
- 【CityHunter】基于LBS的AR体感游戏设计理念
本人目前还不是游戏行业的圈内人士,并不懂得,游戏行业的生态圈,也不懂得,所谓的什么“中国市场环境”.所以不敢发表关于这方面的见解,不过我在这里想要插一句话,就是我认为啊,行业内,人与人之间还是有分层次 ...
- [体感游戏] 1、MPU6050数据采集传输与可视化
最近在研究体感游戏,到目前为止实现了基于51单片机的MPU6050数据采集.利用蓝牙模块将数据传输到上位机,并利用C#自制串口数据高速采集软件,并且将数据通过自制的折线图绘制模块可视化地展示出来等功能 ...
- C#开发体感游戏 Kinect应用知识
Kinect首先是一个XBox 360外接体感设备,通过无线方式捕捉动作感知.由PrimeSense提供Range Camera技术,同类产品如任天堂Wii.Play Station Move,必须让 ...
- 使用unity3d和tensorflow实现基于姿态估计的体感游戏
使用unity3d和tensorflow实现基于姿态估计的体感游戏 前言 之前做姿态识别,梦想着以后可以自己做出一款体感游戏,然而后来才发现too young.但是梦想还是要有的,万一实现了呢.趁着p ...
- scratch编程体感游戏
体感游戏有很多种,最常见的就是摄像头和声控了,今天我们要用scratch编写一系列的体感游戏!!!是不是很激动呢? 首先我们来编摄像头类的: No.1拳头打幽灵 挥动头就能打到幽灵了哟! 具体程序如下 ...
- Cocos引擎现身 IndiePrize 全球游戏开发者大会!Cocos的两大男神成为压轴嘉宾
2019全球游戏开发者大会今天11月10日,在深圳南山海上世界文化艺术中心拉开帷幕.除了号称精品游戏"奥斯卡"的IndiePrize将在现场展开最终角逐,更有来自美国.俄罗斯.澳大 ...
- cocos2dx+KinectV2 体感游戏之微信打飞机
https://download.csdn.net/download/qq_34609108/10038417 https://blog.csdn.net/qq_34609108/article/de ...
随机推荐
- linux使用秘钥登录(禁用root密码登录)
目的:为了巩固线上外网服务器的安全,避免黑客攻击植入木马,初步决定禁用root密码登录(安全强度低),统一使用秘钥登录(4096位长度,安全性较高) 具体操作如下: 一.生成ssh秘钥: ssh-ke ...
- spring框架中beans.xml文件报错XmlBeanDefinitionStoreException
第一次构建spring,实现简单的注入方式,就发生了beans.xml文件报错,报错信息如下图 org.springframework.beans.factory.xml.XmlBeanDefinit ...
- cocos2d-x开发: 完善接口范例分离模块
在上一篇文章中,我阐述了一下为什么要做分离这种工作,这篇文章没什么重点,只是将上一次没有完善的工作做完.原本我想做到像Lua-tests那样子,能够一次完全显示所有的tests,然后选择要执行的tes ...
- iOS之面试题:腾讯三次面试以及参考思路
使用了第三方库, 有看他们是怎么实现的吗? 例:SD.YY.AFN.MJ等! <1>.SD为例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- 从对集合数据去重到Distinct源码分析
今天在写代码的时候要对数据进行去重,正打算使用Distinct方法的时候,发现这个用了这么久的东西,竟然不知道它是怎么实现的,于是就有了这篇文章. 使用的.net core2.0 1.需求 假如我们有 ...
- nodejs中npm以及yarn常用指令
1.npm下载相关 1.npm install/i vue //下载vue的包 2.npm i vue --save-dev / -D //下载vue的包,并添加到开发依赖中 3.npm i //下载 ...
- 今天在Qt子界面中的Button,转到槽转不过去,报错Qt The class containing 'Ui::MainWindow' could not be found in...
在网上查了原因,因为我在修改button的名字时,没选中button,选中了子界面对话框Dialog,然后修改了名字,又没有改回去,所以button转到槽报错. 参考网站: https://zhida ...
- LVM的创建与管理
LVM的创建与管理1.创建物理分区 fdisk 或者 parted 工具分区. LVM分区的类型ID为8e2.创建物理卷 pvcreate 磁盘分区或整个磁盘3.创建卷组 vgcreate 卷组 ...
- IntelliJ IDEA(2018)安装和破解。
一.下载并安装, IntelliJ IDEA的官网:https://www.jetbrains.com 二.破解. 百度下载一个 JetbrainsCrack-2.6.2.jar ...
- Bugku Crack it
知识点:kali john工具 不知道hashcat怎么样 一. 用winhex打开 发现右边有root:等信息,想到了linux系统,看了别人的wp,kali中有一个工具john可以破解密码 二. ...