1. 挂一个 KinectManager,勾选如下:
2. RawImage 加个脚本即可
脚本如下:
using UnityEngine;
using UnityEngine.UI;
public class GetBodyTexture : MonoBehaviour
{
KinectManager manager;
public RawImage bodyRaw;
private Texture2D foregroundTex;
RectTransform rect;
void Start()
{
manager = KinectManager.Instance;
if (bodyRaw == null)
{
bodyRaw = GetComponent<RawImage>();
}
rect = GetComponent<RectTransform>();
// kinect 深度摄像头分辨率 512,424
rect.sizeDelta = new Vector2(512, 424);
// 自适应 Game 窗口
float scaleValue = Camera.main.pixelRect.width / 512;
rect.localScale = new Vector3(scaleValue, -scaleValue, 1);
}
void Update()
{
if (manager && manager.IsInitialized())
{
foregroundTex = manager.GetUsersLblTex();
bodyRaw.texture = foregroundTex;
}
}
}
结果如下:
--------------------- 分界线 后面处理图像降噪 -------------------------
---- 分界线 这后面不用看 都是垃圾
1.需要有两个摄像头,在新场景中新建一个camera取名为BackgroundCamera,
2.主摄像头和BackgroundCamera都添加一个组件GUIlayer,将主摄像头的Depth属性设置为0,BackgroundCamera摄像头的Depth属性设置为-1
3.新建一个空物体,取名为BackgroundImage,添加一个组件GUITexture,将所需要的背景图拖进去
4.新建一个空物体取名为KinectController,添加KinectManagerhe 和 BackgroundRemovalManager这两个脚本组件,这里有特别需要注意的是KinectManager需要注意的是将Compute User Map 属性设置为BodyTexture 并且将Compute Color Map属性勾选,而BackgroundRemovalManager脚本则需要将主摄像头赋值给属性Foreground Camera,这两个脚本的设置如下图所示;
5.哦几把K,完事让我们运行一下去看看效果