Steam VR SDK學習筆記 二

2021-07-24 08:44:01 字數 1918 閱讀 5727

steam vr unity tooklkit:

vr arc teleporter :

今天匯入了乙個叫 vrtk - steamvr unity toolkit 的外掛程式,基本上考慮了所有將會用到的情況。

下面要總結的就是在這個外掛程式下手柄的用途:

首先說一下vrtk_controllerevents類,這個類提供了各種按鈕事件的委託,而按鈕按下或者鬆開的過程一般只會呼叫事件方法一次,是以下情況的前提條件。

一、雷射光線

指令碼:vrtk_******pointer

呼叫事件(vrtk_controllerevents):aliaspointeron、aliaspointeroff

可用事件(vrtk_controllerpointerevents_listenerexample):

pointin

只要射線碰到有collider的物體就會執行,執行多次。

pointout

移出有collider的物體或者從乙個物體到另乙個物體時執行,執行一次。

destinationset

在鬆開pointer的按鈕傳送至另一位置時執行,執行一次。

二、與物體互動

1.touch(觸控)

指令碼:vrtk_interacttouch+vrtk_interactableobject

可用事件(vrtk_interactableobject類):

interactableobjecttouched

在ontriggerstay()中呼叫,碰到物體時執行一次,傳入被touch的物體

interactableobjectuntouched

在ontriggerstay()中呼叫,兩個物體切換時執行一次,傳入untouch的物體

在ontriggerexit()中呼叫,離開物體時執行一次,傳入untouch的物體

2.grab(抓取)

指令碼:vrtk_interacttouch+vrtk_interactgrab+vrtk_interactableobject

呼叫事件(vrtk_controllerevents):aliasgrabon、aliasgraboff

可用事件(vrtk_interactableobject類):

interactableobjectgrabbed

由按鈕事件呼叫,只在按下時執行一次,傳入grab物體

interactableobjectungrabbed

由按鈕事件呼叫,只在鬆開時執行一次,傳入ungrab物體

分析:得到touch的物體並初始化該物體位置再使用fixjoint將它的pose與手柄的pose保持一致。釋放的過程亦然,只是釋放時會將手柄的速度應用給物體的rigidbody,實現throw效果。

3.use(使用)

指令碼:vrtk_interacttouch+vrtk_interactgrab+vrtk_interactuse+vrtk_interactableobject

呼叫事件(vrtk_controllerevents):aliasuseon、aliasuseoff

可用事件(vrtk_interactableobject類):

interactableobjectused

由按鈕事件呼叫,只在按下時執行一次,傳入use物體

interactableobjectunused

由按鈕事件呼叫,只在鬆開時執行一次,傳入unuse物體

分析:這種情況相當於自定義的使用用途,可以自定義用法,比如例子中的openthedoor。

三、傳送

在外掛程式的例子中雷射光線就能實現簡單的傳送,而還有乙個外掛程式叫vr arc teleporter,可以實現比它更好一點的傳送方式,原理為在一幀中發射最多500條逐漸向下的射線,如果碰到地面則中斷得到碰撞點。如果按下trigger則將相機位移至該點。

學習筆記二

1 算符運算子 1 5為1 1 5為 1 即只看被除數的符號。b a 先賦值後運算 a b 先運算後賦值。2 字串資料與任何資料使用 都是相連線,最終都會變成字串,例如 ad 2 結果為 ad2 3 轉義字元 通過 來裝便後面字母或符號的含義 n換行 linux b 退格 r 按下回車鍵,windo...

學習筆記(二)

k 近鄰演算法中的python知識 1.建立乙個3x3的單位矩陣a,a.shape的結果為 3,3 2.建立乙個一維矩陣b,b.shape為矩陣的長度。3.建立乙個4x2的矩陣c,c.shape 1 為第一維的長度 2,c.shape 0 為第二維的長度 4 4.tile函式位於python模組 n...

學習筆記 二

從 站還原表 flashback table to before drop rename to 閃回刪除的表時,恢復的索引 觸發器和約束條件將保留各自的 站名稱。因此,建議在閃回刪除的表前查詢 站和dba constraints。使用這種方法,可以將恢復的索引 觸發器和約束條件重新命名為更實用的名稱...