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

非常感謝下面這位大大的無私奉獻!
需求:屏幕中顯示房間環境作為背景,顯示人物的投影圖像(彩色或者單色)。
做法:從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案例。
