馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。
您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號
x
根據學員朋友的反饋,新增3節加餐課時,關于如何在新版SteamVR中基于Skeleton Input實現手部模型的替換,視頻課程已經補充更新完畢
在VR應用程序中,要呈現自制的手部模型,傳統的方式是直接將模型導入,放置在手柄控制器所代表的游戲對象下面。 這類方案雖然可以實現快速替換,但是當體驗者通過控制器按鍵進行交互時,比如按下Trigger或Grip鍵,手部的模型并不能夠像Interaction System中的Hand一樣做出相應的姿態及過程,開發者在這種情況下需要根據用戶的輸入編寫代碼調用不同的手部動畫來實現,而且類似于拇指在Touchpad表面滑動這樣的交互,實現起來相對困難。 新版SteamVR (2.x)中提供了基于骨骼輸入的Skeleton Input(骨骼輸入)功能,借由SteamVR_Behaviour_Skeleton組件能夠驅動綁定的骨骼信息,在程序運行時自動實現相應的手部“動畫”。
SteamVR會將像Valve Index這樣的手柄控制器所跟蹤到用戶手部骨骼信息,通過Skeleton Input功能模塊將這些運動數據反映到虛擬場景中的手部模型上,從而提升沉浸感體驗。如下圖所示,Index控制器能夠獲取中指、無名指、小拇指等骨骼運動數據。
而對于像HTC VIVE這樣的手柄控制器,雖然沒有額外的傳感器來識別用戶手部的骨骼信息,但是SteamVR能夠根據用戶的輸入,估算出大概的手部姿態,同樣能夠反映到場景中的手部模型上。
原理Skeleton Input(骨骼輸入)功能使用核心組件SteamVR_Behaviour_Skeleton實現,在程序運行時,動態更新手部的姿態。在該組件的源代碼中,UpdateSkeletonTransforms()函數會遍歷所獲取到的所有骨骼節點,調整它們的位置和旋轉信息,從而實現響應用戶輸入的機制。更多細節可參考該組件的源代碼。
在這里需要與另外一個組件——SteamVR_Skeleton_Poser區別開來,前者是在不與游戲對象接觸時的手部動作,而后者是游戲對象被抓取以后呈現手部姿態。 要實現基于Skeleton Input進行手部模型替換的目的,需要進行以下兩大部分的工作:
1. 將自制的手部模型進行骨骼綁定,以符合SteamVR的標準
2. 為模型掛載SteamVR_Behaviour_Skeleton組件并設置屬性,制作Render Model所需要的預制體
對于第一步,之所以要制作符合SteamVR 的標準,如上所述,在于SteamVR_Behaviour_Skeleton組件需要獲取到所有的骨骼信息,以便在程序運行時動態調節這些關節點的位置和旋轉角度,而對于這些骨骼對象的引用路徑,都被預定義在了一個SteamVR_Skeleton_JointIndexes靜態類中,見下圖:
所以,對于綁定到模型的骨骼,數量和組織順序必須與類中的定義保持一致。不同的模型具有不同的骨骼綁定信息甚至沒有。
模型設置
SteamVR提供了符合自己標準的骨骼綁定文件,在綁定前可以將左右手的骨骼信息分別導入到3D內容制作軟件(如Blender)中進行快速綁定而不用手動創建所需要的骨骼。如下圖所示。 具體的文件存放位置為:Steam安裝目錄\\\\\\\\steamapps\\\\\\\\common\\\\\\\\SteamVR\\\\\\\\resources\\\\\\\\skeletons。在3D內容制作軟件中,需要做的工作主要是以下三部分: - 將骨骼重定位并綁定到自制模型對應的關節點上
- 對骨骼權重進行重新分配,俗稱\\\\\\\"刷權重\\\\\\\",以符合更加自然的手指運動
- 使輔助骨骼不影響手部模型。
組件設置將模型導出并導入到Unity中以后,將其轉換為預制體并掛載SteamVR_Behaviour_Skeleton組件,設置以下三個屬性: - Input Source:輸入來源。確定驅動骨骼的手柄控制器來自右手或左手。
- Skeleton Root:骨骼根節點。該屬性指定組件從何處開始取得其下所有子節點的Transform然后將其賦予到聲明的bones數組中。
- Only Set Rotations:確保勾選,這樣在呈現自制模型時不會考慮模型縮放因素而影響模型的呈現效果。
組件設置完畢以后,將制作的預制體指定到Hand使用的Render Model預制體的Hand Prefab屬性中。 這樣便實現了模型替換的功能,以上僅為一般思路。 在完整的視頻課程中,我們將為大家提供制作前后的FBX模型文件,通過3個課時講解如何實現SteamVR的Skeleton Input功能,包括Skeleton Input的實現原理、在Blender中對手部動作進行骨骼綁定、導出需要注意的問題、導入后的制作過程、SteamVR_Behaviour_Skeleton組件的使用等等。
關注公眾號“XR技術研習社”或點擊這里了解課程詳情
|