本文章由cartzhang编写,转载请注明出处。 所有权利保留。

文章链接: http://blog.csdn.net/cartzhang/article/details/44748475

作者:cartzhang

说明:kinect使用的是一代版本,SDK为1.8版本

一、概述

根据上篇博客,可大致知道Kinect舒适区范围。下面就借助Ue4平台来表现一下。

建立工程,加载Kinect库。当然,我并没有直接使用Kinect库,而是自己封装了一个自己的库。

使用方法与添加UE4的各种库类似,具体可以UE4的wiki上自行搜索,当然自己也有尚未解决的问题。

二、BP代码部分

在我的Character的头文件上加入调用Kinect玩家位置的函数

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gameplay)
bool BGetPostionSucess;
UFUNCTION(BlueprintCallable, Category = KINECTUE)
FVector4 GetPlayerPositon();

CPP中代码如下:

FVector4 AU4UE4TestCharacter::GetPlayerPositon()
{
FVector4 VPosition = FVector::ZeroVector;
BGetPostionSucess = false;
UDKinect::UDKVector pPosition;
int iFlag = KinectGetUserPosition(USER_INDEX, pPosition);
if (iFlag == 0)
{
BGetPostionSucess = false;
//GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "can get player position for the moment");
}
else{
VPosition = FVector(pPosition.x, pPosition.y, pPosition.z);
BGetPostionSucess = true;
}
return VPosition;
}

这样就基本搞定了代码部分。

三、Blueprint的函数实现

首先是初始化舒服区的位置,在BP中写一个函数即可。

根据之前博客范围,我想把左右范围控制在角度为60度,这样做有就跟为90-60= 30度,这样根据正切函数就可以得到舒适距离与左右范围的为dist/tan60;因此在下图中有个变量叫做根号三,就是约等于1.732。

我本有意画个图,奈何画的比较烂,不贴了。

初始化图:

说明:MinZ为舒适区的最近距离,MaxZ为舒适区设置的最大距离。这个根据Kinect摄像头的高度和角度来调节。

接下来就是画线了:画了红绿两种线段来表示区域。

红色交汇处为左上角点,绿色交汇点为右下角点。

Basic position是kinect的位置,也可以叫做相对位置点。

然后就是玩家位置了,BP如下:

四、主BP调用

这些函数搞定以后,就是在关卡的BP中进行调用了。这个就简单多了。

初始化调用:

位置实时判断表示:

五、测试结果

若都写完了,编译也没有错误,就Play来运行检测一下。

看你的Kinect是否可以找到玩家位置,我这里用来一个小木块来代替了玩家,做了个小gif.

THE  END!

---------------------------

若有问题,请随时联系!

非常感谢!

Kinect舒适区范围--UE4 的Blueprint测试范例的更多相关文章

  1. 刻意练习,逃离舒适区——怎么样成为一个高手[罗辑思维]No.183_知识笔记

    2016/10/30 14:31:32   一.对事物的见解分为两类:         1.评论性的见解               说的内容都是对的,符合常理的,但是却是不解决问题的.       ...

  2. 从web到游戏,走出舒适区

    最近很久没有更新博客了,实在太忙.因为在这段时间里我做了一个改变了我现在职业生涯的一个决定,而我现在正在为这个决定而加倍的努力付出. 我认为我还是有必要把这个比较重要的节点记录下来,我也是第一次在自己 ...

  3. ue4 character 物理测试

    charactor里 CapsuleComponnet Mesh CharacterMovement 3个组件里有有物理开关 目前看Mesh的Simulate Physics+Enable Gravi ...

  4. redis集群配置及运行命令(windows和centos)附Python测试范例代码

    表示配置主服务器器的IP和端口 slaveof <masterip> <masterport> # 设置slave是否是只读的.从2.6版起,slave默认是只读的. slav ...

  5. ASP.NET MVC4 Jquer 日期控件 测试范例

    <!doctype html>   <html lang="en"> <head> <meta charset="utf-8&q ...

  6. 【jmeter测试范例】001——TCP测试

    1.打开Jmeter(或者运行NewDriver.java启动Jmeter) 2.新建一个测试计划 ······ 3.新建线程组 4.设置线程组的参数 1.线程的数量 2.要在多久内完成,即每个请求发 ...

  7. Kinect 摄像头范围介绍和玩家舒适距离实测

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/44588097 作者:ca ...

  8. 【测试工程师面试】 记录XX银行面试

    LZ在一个18线小城市做测试,近来想走出自己的舒适区,去做一点不一样的测试工作. 18线地区,测试工作并不多.最好的差不多就是LZ目前待着的公司了.遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人 ...

  9. 月薪15k的测试员需要学习什么技术?

    想了很久,决定还是要写一篇这样的文章出来,月薪15k的测试员需要学习什么技术?我觉得测试想要月薪15k并不难,只要做到我说的这几点肯定是可以的! 克服懒惰 我觉得,越是聪明的人越是觉得自己“懒惰”.大 ...

随机推荐

  1. 解决eclipse端口被占用的问题

    问题如图所示,在eclipse中开启tomcat服务器时报错:端口已被占用. 这是因为在tomcat开启的状态下,eclipse异常关闭,导致tomcat一直占用端口. 解决办法如下: 1: 输入命令 ...

  2. 【习题 7-5 UVA-690】Pipeline Scheduling

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 一定在这里写完思路再敲代码!!! 处理出5个工作单元在哪些时刻会被用到. ->设为initstatu 因为每次都会面临之前已经 ...

  3. Solr 读数据流程

    Solr 读数据流程: 1.用户提供搜索关键词,也就是搜索语句,需要经过分词器处理以及语言处理. 2.对处理之后的关键词,搜索索引找出对应Document 即记录. 3.用户根据需要从找到的Docum ...

  4. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器

    摘要      本文将对“MVC公告发布系统”的发布公告功能添加日志功能和异常处理功能,借此来讨论ASP.NET MVC中拦截器的使用方法. 一个小难题      我们继续完善“MVC公告发布系统”, ...

  5. 给已有数据的oracle表建立外键关系

    PS:这里是给自己做个备忘,下次遇到同类问题的时候,方便查找: 客户在有主外键关系的2张表进行页面删除时报错已有子记录,运维后台处理的时候应该找出相应的数据,先删除子记录,在删主表记录:但客户要的急, ...

  6. 设置Maven默认的JDK为1.7,解决Update Maven Project默认为1.5和Maven打包报错2个问题

    1.之前,一直遇到这个问题. Update Maven Project的时候,JDK变成了1.5的.    如果项目中有使用"@overdide",程序就会报错,需要手动修改JRE ...

  7. ajax实现简单的点击左侧菜单,右侧加载不同网页

    实现:ajax实现点击左侧菜单,右侧加载不同网页(在整个页面无刷新的情况下实现右侧局部刷新,用到ajax注意需要在服务器环境下运行,从HBuilder自带的服务器中打开浏览效果即可) 原理:ajax的 ...

  8. 今天遇到奇怪的事:SVN本地代码的标记突然没了,Clean up也报错

    今天遇到奇怪的事:SVN本地代码的标记突然没了.Clean up也报错 脑子一想这样的情况,能够先把原来的文件夹改一个名字.又一次把代码check out下来,再合并提交更新,但这样也太LOW了吧 上 ...

  9. ajax中打开新页面使用window.open方法被拦截的解决方法

    $('.testA').unbind('click').bind('click',function(){ var result=""; $.ajax({ url:'http://l ...

  10. R语言- 基本统计分析

    目的: 1.描述性统计分析 2.频数表和;列连表 3.相关系数和协方差 4.t检验 5.非参数统计 在上一节中使用了图形来探索数据,下一步就是给出具体的数据来描述每个变量的分布和关系 1.描述性统计分 ...