Kinect 使用学习 (一)
程序员文章站
2022-04-16 21:29:26
...
Kinect 微软的体感设备 当前使用为 2.0 版本
1.KinectManager
KinectManager是Kinect相关的主要和最基本的组件。它用于控制传感器和轮询数据流。
2.简单手势动作识别
创建空物体 KinectManager
添加脚本 KinectManager,KinectGestures 用于手势跟踪
创建自定义脚本 KinectGesturesController 添加至挂载以上两个脚本的物体下 获取手势跟踪的接口,以及实现方法
自定义脚本要实现KinectGestures.GestureListenerInterface接口并实现其方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Windows.Kinect;//记得引用Kinect命名空间
public class KinectGesturesController : MonoBehaviour,KinectGestures.GestureListenerInterface
{
//因为一人调试,使其输出显示在屏幕上
public Text TextInfo;
string Info;
//动作取消时调用
public bool GestureCancelled(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint)
{
return true;
}
//动作完成时调用
public bool GestureCompleted(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint, Vector3 screenPos)
{
KinectManager manager = KinectManager.Instance;
if (!manager || (userId != manager.GetPrimaryUserID()))
return false;
if (gesture == KinectGestures.Gestures.SwipeLeft)
{
Info = "向左挥手";
}
else if (gesture == KinectGestures.Gestures.SwipeUp)
Info = "向上挥手";
return true;
}
//动作进行时调用
public void GestureInProgress(long userId, int userIndex, KinectGestures.Gestures gesture, float progress, KinectInterop.JointType joint, Vector3 screenPos)
{
}
//检测到玩家时调用
public void UserDetected(long userId, int userIndex)
{
KinectManager manager = KinectManager.Instance;
if (!manager || (userId != manager.GetPrimaryUserID()))
return;
// 检测玩家的手势
manager.DetectGesture(userId, KinectGestures.Gestures.SwipeLeft);
manager.DetectGesture(userId, KinectGestures.Gestures.SwipeRight);
manager.DetectGesture(userId, KinectGestures.Gestures.SwipeUp);
Info = "获得玩家 \n"+ "玩家ID"+userId+"\n 玩家序列索引"+userIndex;
}
//丢失玩家时调用
public void UserLost(long userId, int userIndex)
{
Info = "丢失玩家";
}
void Update ()
{
TextInfo.text = Info;
}
}
上一篇: 安装Kafka与flume联合使用
下一篇: VINS_FUSION入门系列-初始化