Heresy 這邊之前在取得 HTC Vive 後,有透過 OpenVR 這個開發環境,來做一些顯示、互動上的程式開發。
而在開發中的一個問題,其實就是在進行測試的時候,需要有 HTC Vive 的硬體、有的時候也需要戴起來到處走動,才能確認程式是否撰寫正確;某方面來說,就和開發 OpenNI / Kinect 時類似,必須離開電腦才能測試,其實有點麻煩。
由於 Valve 似乎沒有針對 OpenVR / SteamVR 推出模擬器,來方便開發(不過似乎有方法可以透過「null driver」來做到一定程度、參考),所以其實還滿麻煩的。
不過,前一陣子微軟的「Windows Mixed Reality for SteamVR」開始開放給一般人用的,某方面來說,倒是提供了一個相當方便的 OpenVR 開發模擬環境可以使用了!
<!–more–>
由於 Windows 10 1709 秋季創作者更新的「混合實境入口」這個 App,除了可以搭配 Windows Mixed Reality 的頭戴式顯示器使用外,本身也有提供模擬器的功能來在沒有連接對應的硬體的情況下,模擬硬體的存在,所以搭配 Windows Mixed Reality for SteamVR 的功能的話,就可以把「混合實境入口」的模擬模式,作為 OpenVR 程式開發的模擬器了!
如果要使用「混合實境入口」的模擬器功能的話,首先要到 Windows 系統的「設定」(可以用 Win + I 的快速鍵開啟)中,在「更新與安全性」的分類中、找到「開發人員專用」的分頁,然後在右側將「使用開發人員功能」切換成「開發人員模式」。
在切換成「開發人員模式」之後(記得要重開機),再開啟「混合實境入口」這個 App,理論上就會發現左下角的按鈕區最上方,多出一個工具的符號(下圖左側反白的圖示),點下去之後,就會出現「模擬」的選單(如下圖左側)。
而這邊可以看到,他允許使用者設定要模擬那些裝置,其中翻譯很爛的就是第一個「耳機」,他實際上就是「頭戴式顯示器」。
當把「耳機」切換為「開啟」後,就等同於系統接上了頭戴式顯示器,所以就會開始執行 Windows MR 的房間。而此時,左側也可以看到他預設會把「左控制器」的模擬也打開,讓使用者可以控制;同時也會針對各個裝置,提供當下的參數。
至於控制方法呢?這邊主要是透過鍵盤滑鼠來操作(也可以用 xbox 把手)。
一般狀況下,可以透過滑鼠左鍵的拖曳,來進行視角的旋轉,並透過「WASD」來移動;滑鼠左鍵鍵盤的 Enter 則是主要的按鈕。而壓住 alt 鍵、或是點選左方「左控制器」下的圖釘按鈕的話,則可以控制虛擬把手的移動、旋轉。
如果有需要的話,也可以把「右控制器」也打開,這樣就可以模擬有兩個控制器了。
這個時候如果開啟 SteamVR 的話,就可以看到「混合實境入口」會開始顯示 SteamVR 的內容,而在 SteamVR 的介面上,也會顯示 Windows MR 的頭戴式顯示器圖示;而如果有開啟控制器的話,那他也會顯示控制器的專屬圖示。(如果控制器圖示沒出來,建議把控制器的模擬功能關閉重開試試看)
而這時候,就可以來做 OpenVR 的程式測試了~像如果用 OpenVR 的 API 來讀取裝置資訊的話,則會得到類似下面的資訊:
(透過 GetStringTrackedDeviceProperty() 取得 Prop_TrackingSystemName_String、 Prop_ManufacturerName_String、 Prop_ModelNumber_String、 Prop_SerialNumber_String、 Prop_RenderModelName_String 這幾個屬性的值)。
基本上,個人覺得這個方法滿適合拿來測試 OpenVR 程式的基本顯示功能的。
但是在互動的部分,一來控制器的操作其實用鍵盤滑鼠來控制還是頗麻煩的,二來他並沒有能對應所有的功能(像是觸控板就不知道怎麼按下去、也沒有 grip…),所以真的要拿來測試互動,應該有相當的難度吧。
而如果想在控制器上畫東西的話…恩,Vive 和 Windows MR 的控制器外觀、功能都不盡相同,看來應該是得分開做了…