物件操作工具 — MRTK2

Object manipulator

ObjectManipulator是操作行為的新元件,先前位於ManipulationHandler中。 物件操作工具會進行一些改善和簡化。 此元件是操作處理常式的取代專案,即將淘汰。

ObjectManipulator腳本會使用一或兩手讓物件可移動、可調整且可旋轉。 物件操作工具可以設定為控制物件如何回應各種輸入。 腳本應該使用大部分的互動形式,例如HoloLens 2清楚的手部、HoloLens 2手部光線、HoloLens 1 個注視和手勢,以及沉浸式頭戴式裝置動作控制器輸入。

如何使用物件操作工具

若要使用物件操作工具,請先將 ObjectManipulator 腳本元件新增至 GameObject。 請務必同時將碰撞器新增至 物件,使其可抓取界限相符。

若要讓物件回應近乎清楚的手部輸入,請同時新增 NearInteractionGrabbable 腳本。

藉由將固定的主體元件新增至 物件,即可為物件操作工具啟用物理行為。 新增此元件所啟用的物理行為會在 物理和碰撞中更詳細地討論。

此外,操作也可以透過將 操作條件約束元件 新增至 物件來限制。 這些是處理操作的特殊元件,並以某種方式變更操作行為。

Using the Manipulation Handler in the Unity editor

偵測器屬性和欄位

Object Manipulator Structure

一般屬性

主機轉換

將操作的物件轉換。 預設為元件的 物件。

操作類型

指定是否可以使用一手或兩手操作物件。 因為這個屬性是旗標,所以可以選取這兩個選項。

  • 單手操作:選取時啟用單手操作。
  • 雙手:選取時啟用兩個手部操作。

允許遠距操作

指定操作是否可以使用與指標的遠距互動來完成。

單手操作屬性

接近單手旋轉模式

指定物件在一手附近抓取物件時的行為方式。 這些選項僅適用于已表達的手部。

  • 繞物件中心旋轉:物件會使用手部旋轉來旋轉,但與物件中心點有關。 物件在旋轉時似乎移動較少,但手部與物件之間可能會有中斷連線感。 更適合用於遠距互動。
  • 旋轉擷取點:旋轉物件與指指之間關於抓取點的手部。 它應該會覺得物件是由手部所持有。

單手旋轉模式遠

指定物件在距離上以一手抓取物件時的行為方式。 這些選項僅適用于已表達的手部。

  • 旋轉物件中心:使用手部旋轉來旋轉物件,但與物件中心點有關。 適合用於在物件旋轉時不移動物件中心的距離檢查。
  • 繞抓取點旋轉:使用手部旋轉來旋轉物件,但關於指標光線點擊點。 適用于檢查。

雙手操作屬性

雙手操作類型

指定兩個手部操作如何轉換物件。 因為這個屬性是旗標,所以可以選取任意數目的選項。

  • 移動:如果選取,則允許移動。
  • 調整:如果選取,則允許調整。
  • 旋轉:選取時允許旋轉。

Manipulation Handler

條件約束

啟用條件約束

此設定會啟用連結 的條件約束管理員。 轉換變更將由註冊至所選 條件約束管理員的條件約束來處理。

條件約束管理員

下拉式清單允許選取任何附加 的條件約束管理員。 物件操作工具可確保隨時都會附加 條件約束管理員 。 請注意,相同類型的多個元件會顯示在 unity 中的相同名稱之下。 為了更容易區分相同物件上的多個條件約束管理員,可用的選項會顯示所選取條件約束管理員的設定提示, (手動或自動條件約束選取) 。

移至元件

條件約束管理員選取專案隨附 [移至元件 ] 按鈕。 此按鈕會導致偵測器捲動至選取的元件,以便進行設定。

物理特性

只有在物件具有 RigidBody 元件時,才會顯示本節中的設定。

發行行為

指定操作物件應該在釋放時保留的實體屬性。 因為這個屬性是旗標,所以可以選取這兩個選項。

  • 保持速度:當物件釋放時,如果選取此選項,則會保留其線性速度。
  • 保持Angular速度:釋放物件時,如果選取此選項,則會維持其角度速度。

使用強制進行接近操作

執行接近操作時,是否使用物理力來移動物件。 將此設定為 false 會讓物件感覺更直接連接到使用者手。 將這個設定為 true 會接受物件的品質和慣性,但可能會覺得物件是透過彈簧連接。 預設值為 false

平滑處理

平滑遠

是否針對遠距互動啟用畫面播放速率獨立平滑。 預設會啟用遠平滑。

接近平滑

是否啟用畫面播放速率獨立平滑處理,以進行接近互動。 預設會停用接近平滑,因為效果可能會被視為與手部「中斷連線」。

平滑作用中

過時,未來版本將會移除。 應用程式應該使用 SmoothingFar、SmoothingNear 或兩者的組合。

移動 lerp 時間

要套用至移動的平滑量。 0 的平滑表示沒有平滑。 最大值表示值不會變更。

旋轉 lerp 時間

要套用至旋轉的平滑量。 0 的平滑表示沒有平滑。 最大值表示值不會變更。

Scale lerp time

要套用至縮放比例的平滑量。 0 的平滑表示沒有平滑。 最大值表示值不會變更。

操作事件

操作處理常式提供下列事件:

  • OnManipulationStarted:操作啟動時引發。
  • OnManipulationEnded:操作結束時引發。
  • OnHoverStarted:當手/控制器將可操作、接近或遠方時引發。
  • OnHoverEnded:當手/控制器取消暫留操作、接近或遠處時引發。

操作的事件引發順序為:

OnHoverStarted - >OnManipulationStarted - >OnManipulationEnded - >OnHoverEnded

如果沒有操作,您仍會取得具有下列引發順序的暫留事件:

OnHoverStarted - >OnHoverEnded

物理和碰撞

將固定的實體元件新增至與物件操作工具相同的物件,即可啟用物理行為。 這不只會啟用上述 發行行為的 設定,也會啟用衝突。 若沒有固定的主體元件,衝突在操作期間不會正確運作:

  • 在操作的物件與靜態碰撞器之間發生衝突 (亦即,具有碰撞器但沒有固定物件) 無法運作的物件,操作的物件會直接通過不受影響的靜態碰撞器。
  • 操作物件與固定物件之間的衝突 (亦即具有碰撞器和固定體的物件,) 導致固定物件有衝突回應,但回應是跳躍且非自然的。 操作物件上也沒有任何衝突回應。

新增固定的主體時,碰撞應該能正常運作。

沒有固定的主體

No Rigid Body

使用固定的主體

Rigid Body

彈性 (實驗性)

透過物件操作工具操作物件時,可以使用彈性。 請注意, 彈性系統 仍處於實驗狀態。 若要啟用彈性,請連結現有的彈性管理員元件,或透過 Add Elastics Manager 按鈕建立並連結新的彈性管理員。

Bounds Control Elastics

另請參閱