KinectAPI翻譯以及知識

Kinect入門幫助
如何運行示例
1 下載並安裝Kinect v2 SDK,詳情將在下一節中描述。
2 打開場景“KinectAvatarsDemo”,位於Assets/AvatarsDemo文件夾
3 運行場景。移動身體來觀察兩個Avatar(正常和鏡像)以及CubeMan是如何反映你的動作的
4 使用你的左右手來控制屏幕上的手型光標。
5 嘗試多個內置的手勢,並確保他們能被正確的檢測到。
6 關閉場景,將KinectManager的屬性 ‘Compute User Map’ 和 ‘Display User Map’置爲可用狀態,重新開啓場景
7 打開並運行“KinectGesturesDemo”場景,位於/ GesturesDemo文件夾。使用手向左或者向右揮表示將立方體向左或者向右轉動。
8 打開並運行“KinectInteractionDemo”場景,位於/ InteractionDemo文件夾。試着用手去抓住並拖拽一個屏幕上的物體,再釋放這個物體。

安裝Kinect v2 SDK
1 下載Kinect爲Windows SDK 2.0。
2 運行安裝程序。
3 連接Kinect v2傳感器。所需的驅動程序將會自動安裝。

爲什麼場景中需要兩個Avatar對象?
場景中兩個阿凡達的意義在於你可以同時展示你的鏡像和非鏡像運動。
首先,你能有一個Avatar反映你的鏡像運動。在這個例子中就是你正面臨的那個。這個Avatar的父物體是一個被名爲’UCharCtrlFront’在Y軸上旋轉了180°的空物體。同時,Avatar的遊戲物體CharacterFront’上的AvatarController組件的’Mirrored Movement’參數處於可用狀態。鏡像就是你伸左手時他伸的右手,就像照鏡子一樣。
第二個阿Avatar不是鏡像,他是背對着你的。和你的動作完全一樣。你的左邊同時也是他的左邊。換種方式看,你是背對着場景的主相機。控制的對象是’UCharCtrlBack’,他的Y軸旋轉量爲0,AvatarController的’Mirrored Movement’參數是禁用狀態。

爲了在場景中得到正確的Avatar的位置和運動,總是創建一個空的遊戲對象作爲Avatar的父物體。根據需要設置這個空物體的Y軸旋轉量。然後將Avatar局部的position和rotation都置爲0,你就可以通過移動和旋轉來控制你的avatar的運動了。記得注意你Avatar上AvatarController組件的’Mirrored Movement’參數。

如何重用Kinect-Example在你的項目裏
1 複製文件夾的KinectScripts資料文件夾的項目的資料文件夾的例子。這個文件夾包含所有需要的腳本和可選的過濾器。
2 複製文件夾“Resources”和“Standard Assets’’文件夾的項目的資料文件夾的例子。這些文件夾包含所需的庫,包裝類和資源。
3 等待Unity檢測和編譯新的資源和腳本。
4 添加“AvatarController”腳本到場景中的每個你需要控制的Avatar上
5 通過拖拽將Avatar的骨骼結點和AvatarController’腳本上的joint相對應(2.8以上版本似乎不需要)
5 看你是否需要鏡像Avatar,如果需要,勾選‘Mirrored Movement’參數
6 添加KinectManager腳本到MainCamera。如果您使用多臺攝像機,就創建一個空物體
7 將所有Avatar的物體拖拽到KinectManager的‘Avatar Controllers’列表中(2.8以上版本似乎也不需要)
8 如果你要看深度圖像,你可以開啓‘Compute User Map’ 和 ‘Display User Map’參數;如果你想看色彩圖像,開啓‘Compute Color Map’ 和 ‘Display Color Map’參數;看骨骼追蹤效果可以開啓‘Display Skeleton Lines’參數
使計算用戶地圖和地圖顯示用戶的參數,如果你想看到user-depth地圖在屏幕上。使“計算彩色地圖”和“顯示彩色地圖”參數,如果你想看彩色攝像機圖像在屏幕上。使顯示骨架線的參數,如果你想看看Kinect跟蹤user-depth地圖上的骨架。
9 你可以在你的腳本中使用“KinectManager”的公有方法。作爲示例,請參閱“GestureListener.cs”和“PresentationScript.cs

2.API函數翻譯
1.計算關節的方位
private void CalculateJointOrients(ref KinectInterop.BodyData bodyData)
2.獲取動作索引
public int GetJointIndex(KinectInterop.JointType joint)
3.獲取給定關節的父節點
public KinectInterop.JointType GetParentJoint(KinectInterop.JointType joint)
4.檢測到用戶數目
public int GetUsersCount()
5.獲取用戶體數據(僅用於內部目的)。
internal KinectInterop.BodyData GetUserBodyData(Int64 userId)
6.獲取用戶的相對位置,在靠近傳感器米。
public Vector3 GetUserPosition(Int64 userId)
7.得到用戶的旋轉
public Quaternion GetUserOrientation(Int64 userId, bool flip)
8.得到跟蹤的關節
public KinectInterop.TrackingState GetJointTrackingState(Int64 userId, int joint)
9.確定給定用戶的給定連接是否被跟蹤。
public bool IsJointTracked(Int64 userId, int joint)
10.Kinect中關節的位置,以米爲單位
public Vector3 GetJointKinectPosition(Int64 userId, int joint)
11.得到關節位置,以米爲單位
public Vector3 GetJointPosition(Int64 userId, int joint)
12.獲取指定用戶與翻轉座標關節位置,在米。
public Vector3 GetJointPositionFlipX(Int64 userId, int joint)
13.得到指定用戶的關節速度,以米/秒
public Vector3 GetJointVelocity(Int64 userId, int joint)
14.獲得相對於父節點的指定用戶的關節方向
public Vector3 GetJointDirection(Int64 userId, int joint, bool flipX, bool flipZ)
15.獲取指定用戶的給定關節之間的方向。
public Vector3 GetDirectionBetweenJoints(Int64 userId, int firstJoint, int secondJoint, bool flipX, bool flipZ)
16.得到關節的旋轉角度
public Quaternion GetJointOrientation(Int64 userId, int joint, bool flip)
17.在給定關節處獲取骨頭之間的角度。
public float GetAngleAtJoint(Int64 userId, int joint)
18.獲取給定關節在深度圖像上的三維重疊位置。
public Vector3 GetJointPosDepthOverlay(Int64 userId, int joint, Camera camera, Rect imageRect)
19.獲取給定關節在彩色圖像上的三維重疊位置。
public Vector3 GetJointPosColorOverlay(Int64 userId, int joint, Camera camera, Rect imageRect)
20.獲取深度貼圖紋理上的關節位置。
public Vector2 GetJointDepthMapPos(Int64 userId, int joint)

3骨骼翻譯
hip 臀部
spine 脊柱
shoulder 肩膀
neck 脖子
clavicle 鎖骨
elbow 肘部
hand 手
thumb 拇指
fingers 手指
knee 膝蓋
foot 腳
body 身體

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章