|
最近做一個kinect的軟件,只有一個人玩的,玩家識別是靠近識別。如果有多人在攝像頭畫面內(nèi)的時候,識別到的0 號玩家離開了之后,不能夠自動識別1號玩家。 需要所有人離開攝像頭畫面區(qū)域或者遮擋一下攝像頭,再次玩家進入才能識別,而且識別不靈敏。 經(jīng)過測試,發(fā)現(xiàn)kinect檢測到人后,會給userID一個數(shù)字,當(dāng)這個人離開后,還會檢測到有其他人,但是給他的編號是0。但是 userID 是0的時候,kinectManager里面標(biāo)識的是 沒有檢測到玩家。 感覺有些矛盾。最終我的解決辦法如下:紅色區(qū)域就是 當(dāng)檢測到玩家ID是0的時候,再次將kinectManager里面用戶清除 然后重新檢測(其實我其他地方點擊按鈕做了這個KinectManager.Instance.ClearKinectUsers(); 但是不知為啥沒效果)。 // 是否初始化完成 if (_manager && _manager.IsInitialized()) { // 是否人物被檢測到 if (_manager.IsUserDetected()) { long userId = _manager.GetPrimaryUserID(); GameManager.Instance.textPeopleCount.text = "識別到玩家:"+userId; if (userId==0) { KinectManager.Instance.ClearKinectUsers(); KinectManager.Instance.ResetFilters(); // KinectManager.Instance.ResetGesture(); // KinectManager.Instance.res } // 獲取用戶ID // 獲取目標(biāo)關(guān)節(jié)點的索引(以左手為例) int jointIndex = (int)KinectInterop.JointType.HandLeft; // 判斷目標(biāo)關(guān)節(jié)點是否被追蹤 if (_manager.IsJointTracked(userId, jointIndex)) { } } |
|
|
來自: 鴻蛟家平 > 《Unity 好文章》