VIVE Tracker是VIVE VR系列產(chǎn)品的配件,可以通過綁定現(xiàn)實(shí)世界中的物體,來追蹤物體的位置。從使用的角度來看,它更像是一個(gè)閹割版的手柄,因?yàn)樗邆涫直粯拥奈恢米粉櫠鴽]有實(shí)體按鍵,由于體積小巧和便攜,它可以被綁定在任意物體上,將現(xiàn)實(shí)的物體帶入VR環(huán)境。
基站可以追蹤多個(gè)Tracker,所以場(chǎng)景中可以存在多個(gè)Tracker。
外觀結(jié)構(gòu)
如下圖,從右往左:
位置1:LED指示燈,用來指示Tracker的狀態(tài),與手柄相同,如藍(lán)色燈閃爍,則表示該設(shè)備尚未配對(duì);如綠色燈亮,則開始工作并正常;如紅燈,則表示電量低。
位置2:設(shè)備開關(guān)。
位置3:與手柄類似,用來接收基站信號(hào)的傳感器。
位置4.1:1/4英寸螺絲孔,可以將其固定在標(biāo)準(zhǔn)三腳架云臺(tái)上,與單反相機(jī)同。
位置4.2:用來加強(qiáng)穩(wěn)定的針槽。
位置4.3:彈簧針,6位。
位置5:USB接口,一方面用來充電,一方面用來與PC通信,比如更新固件等。
關(guān)于4.3位置的6位彈簧針,玩家可以通過自己制作一些電器開關(guān)之類的外設(shè)與其通信,發(fā)送電信號(hào),達(dá)到像手柄一樣向PC發(fā)送按鍵觸發(fā)事件的效果。下圖為6個(gè)針位分別對(duì)應(yīng)的按鍵信號(hào)名稱。由此可見,的確是個(gè)閹割版的手柄,或者說,像是一個(gè)沒有按鍵只有鍵位開關(guān)的鍵盤。
使用場(chǎng)景
Tracker有很多應(yīng)用場(chǎng)景,首先比較常用的就是追蹤物體,你可以將它綁定到一些物體上,比如球棒、球拍、球桿、座椅等等,在傳統(tǒng)行業(yè)里,可以綁定一些維修用的工具,扳手、錘子等,從而達(dá)到更加真實(shí)的體驗(yàn)。
另外,我們知道Tracker有彈簧針和USB 端口,還可以制作一些符合特定使用場(chǎng)合的外設(shè),以更加符合外設(shè)的使用習(xí)慣,比如現(xiàn)在比較典型的PPGun,通過USB端口通信,將原來手柄的按鍵映射到了槍體相關(guān)的功能部件上,如Trigger鍵對(duì)應(yīng)著槍的扳機(jī),Touchpad映射到了槍體的搖桿等等。
另外,Tracker可以作為動(dòng)作捕捉設(shè)備。我們知道,以現(xiàn)有的VR設(shè)備,只有手柄和頭盔,很難實(shí)現(xiàn)全身的動(dòng)作捕捉,那么使用Tracker,配合一些反向動(dòng)力學(xué)插件,比如FINAL-IK,我們就能實(shí)現(xiàn)在VR中的全身動(dòng)作捕捉。基站可以跟蹤多個(gè)Tracker設(shè)備,所以就可以將多個(gè)設(shè)備綁定在人的關(guān)鍵部位,比如雙腳、膝蓋、腰部等等,設(shè)備越多,捕獲的動(dòng)作就越精確。
初次使用Tracker
Tracker包裝中包含一個(gè)無(wú)線接收器,當(dāng)你需要在使用手柄的同時(shí)使用Tracker,那么需要將此無(wú)線接收器連接到PC,用來接收Trakcer的信號(hào),在使用時(shí),需要將兩個(gè)手柄同時(shí)打開;如果不使用無(wú)線接收器,則系統(tǒng)將Trakcer認(rèn)為是一個(gè)像手柄一樣的控制器。
初次使用Tracker,需要進(jìn)行設(shè)備的配對(duì),當(dāng)按下開關(guān)以后,藍(lán)色燈會(huì)閃爍,表示設(shè)備正在等在配對(duì),在SteamVR Runtime中右鍵(注意,這是是SteamVR運(yùn)行時(shí),我們?cè)谥暗恼n時(shí)里也區(qū)分過SteamVR SDK和SteamVR運(yùn)行時(shí)),選擇“設(shè)備”-“配對(duì)控制器”完成設(shè)備的配對(duì)。配對(duì)成功后,即可看到代表了Tracker的圖標(biāo),如下圖。
在Unity中使用Tracker
作為開發(fā)者,最關(guān)心的當(dāng)然是如何在引擎里面使用Tracker。我們以Unity為例,Tracker的開發(fā)并不需要額外的SDK支持,只需要導(dǎo)入VR開發(fā)必備的在SteamVR SDK即可。在SteamVR中,所有基站能夠追蹤的物體,都認(rèn)為是Tracked Object。
1. 場(chǎng)景中需要一個(gè)可視的物體來標(biāo)記Tracker,在引擎中,可以新建一個(gè)GameObject用來標(biāo)記Tracker,命名為Tracker,在其上添加SteamVR_TrackedObject腳本。
添加完畢以后,腳本中的Index屬性,可以在下拉列表指定可追蹤的物體對(duì)應(yīng)的VR設(shè)備,默認(rèn)為HMD,即頭盔,Device1、Device2分別對(duì)應(yīng)兩個(gè)手柄,以此類推。(注:此處可以不進(jìn)行分配)
2. 為Tracker容器添加一個(gè)可視化的3D物體,這里添加一個(gè)Cube。
3. 選擇CameraRig,在Steam VR_Controller Manager的Objects屬性中,將Tracker添加到數(shù)組元素中。如下圖
4.點(diǎn)擊Play,可以看到Cube標(biāo)識(shí)了Tracker的位置以及朝向。
與現(xiàn)實(shí)物體進(jìn)行綁定
既然已經(jīng)標(biāo)識(shí)了Tracker的位置,那么我們就可以在場(chǎng)景中添加一個(gè)與現(xiàn)實(shí)世界相同的模型來進(jìn)行映射,我們之前介紹過將手柄自定義為一個(gè)虛擬道具,那么使用Tracker將現(xiàn)實(shí)物體帶入到VR中以后,會(huì)得到更加真實(shí)的感覺,首先是don't make me think,用戶不需要了解道具如何使用,手柄的按鍵如何使用,只需要按照自然的使用方法即可。其次是能夠獲得與現(xiàn)實(shí)一樣的真實(shí)操作感。
由于缺少現(xiàn)實(shí)道具,筆者將三腳架映射為長(zhǎng)矛。
1. 刪除添加的Cube,講準(zhǔn)備好的長(zhǎng)矛模型拖入場(chǎng)景,作為"Traker"容器的子物體。
2. 為"Trakcer"容器添加可視化的節(jié)點(diǎn)。
3.調(diào)整道具與"Tracker"容器的相對(duì)位置,筆者將Tracker放置于三腳架云臺(tái)的頂端,故在場(chǎng)景中,需要保持這樣的位置關(guān)系,如下圖。
4.調(diào)整道具朝向,旋轉(zhuǎn)90度,位置及朝向,需根據(jù)模型坐標(biāo)點(diǎn)以及具體應(yīng)用場(chǎng)景調(diào)整。
5.點(diǎn)擊Play進(jìn)行測(cè)試,當(dāng)移動(dòng)三腳架時(shí),場(chǎng)景中的道具進(jìn)行了相應(yīng)的變化。
總結(jié)
以上為Tracker的基本使用方法,后續(xù)的開發(fā)與Tracker并沒有太多關(guān)聯(lián),可以歸并到VR的基本開發(fā)路線上來。Tracker單就功能來說,并沒有太多高深的黑科技在里面,對(duì)其進(jìn)行的開發(fā),也沒有太多新的知識(shí),所以限制其發(fā)揮功能的只是想象力,各位可以根據(jù)自己的VR應(yīng)用場(chǎng)景,充分發(fā)揮想象,以開發(fā)出更多有創(chuàng)意的內(nèi)容。
本文為《HTC VIVE交互開發(fā)實(shí)例教程》第50課文字版摘要。