欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kinect 使用学习 (一)

程序员文章站 2022-04-16 21:29:26
...

Kinect 微软的体感设备 当前使用为 2.0 版本

1.KinectManager

 KinectManager是Kinect相关的主要和最基本的组件。它用于控制传感器和轮询数据流。

Kinect 使用学习 (一)

Kinect 使用学习 (一)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;
	}
}

Kinect文档Kinect APIKinect SDK v5x2