【Unity/Kinect】顯示Kinect攝像頭內容,屏幕顯示環境背景及人體投影


最近學習用Unity做些體感小游戲,使用Kinect的Unity插件,結合一些官方Demo學習(網上資源用Unity做的較少,蛋疼)。插件及其Demo就在Unity商店里搜Kinect即可找到,其中下圖這個包里面包含了大量實用場景和局部功能的Demo,絕對是入門神器!
這里寫圖片描述

非常感謝下面這位大大的無私奉獻!

http://www.manew.com/thread-50097-1-1.html

需求:屏幕中顯示房間環境作為背景,顯示人物的投影圖像(彩色或者單色)。
做法:從Kinect設備讀取數據,然后給UGUI控件顯示。

寫一個腳本掛到Canvas身上:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

/// <summary>
/// 從Kinect獲取數據。
/// </summary>
public class GetDataFromKinect : MonoBehaviour {

    public RawImage image; // 空白圖片,用於顯示

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        // 判斷設備是否初始化完成。最開始的幾幀沒有完成,所以需要在Update中去每幀檢測。
        bool isInit = KinectManager.IsKinectInitialized ();
        if (isInit) {
            if (image.texture == null) {
                // 從設備獲取彩色數據,需要勾選Compute Color Map。
                Texture2D colorMap = KinectManager.Instance.GetUsersClrTex ();
                // 從設備獲取深度數據,需要勾選Compute User Map。
                // Texture2D userMap = KinectManager.Instance.GetUsersLblTex ();
                // 把彩色數據設置給控件顯示
                image.texture = colorMap ;
            }
        }

    }
}

注意點:

  • 通過該方式獲取到的圖片是上下顛倒的,還需要將該圖片控件的RectTransform組件里的Scale設為-1。
  • 要把圖片控件的Position設為x=0.5,y=0.5,否則圖像內容在左下角外邊。
  • 勾選了Compute Color Map則人體投影為彩色圖,沒有勾選則為單色圖。
  • 想要調整人影的透明度,需要給該圖片控件添加Canvas Group組件,調整Alpha值。
  • 更多細節參考Kinect v2 Example資源包中的KinectDemo/OverlayDemo案例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM