物件操作工具 — MRTK3

Object manipulator

ObjectManipulator 可讓您使用任何輸入裝置或形式,在 3D 空間中直覺式操作物件。 它會執行與 XRI XRGrabInteractable 類似的工作,但會提供額外的功能和混合實境特定互動。 雖然 與 XRGrabInteractable 我們的互動專案完全相容 (,但相反的也是真正的) ,但我們仍建議使用我們的實作來獲得最佳體驗。

注意

ObjectManipulator 專為直接且直覺地操作 3D 物件而設計。 如果您要尋找常見的 UI 互動,例如滑杆或按鈕,請參閱我們的 滑杆按鈕 文章。 避免使用 ObjectManipulator 來撰寫微互動。

架構

在 MRTK v2 中,不同類型的輸入大部分複雜邏輯和數學都會自行 ObjectManipulator 處理。 必須針對每種互動類型維護個別的程式碼路徑,在引進新類型的互動時,產生較少的彈性。 在 MRTK3 中, 互動者 負責如何將特定類型輸入轉譯成操作的詳細資料。 ObjectManipulator 只會接聽這些互動專案,並將相關的轉換套用至物件。 因此, ObjectManipulator MRTK3 在範圍中明顯更簡單且較小。 如需互動者如何透過其附加轉換進行通訊的描述,請參閱 互動器架構

n手部操作

ObjectManipulator 支援任意數目的參與互動動作專案,允許跨一個、兩個甚至 n 手部操作的一般化互動行為。 一般而言,所有參與互動者 attachTransforms 的幾何距心會用於多手互動。 身為 XRI 可互動,它與提交行為良好附加轉換的任何互動器類型相容。

如果您想要不允許多手操作,請將 XRI Selection Mode 設定為 Single 。 我們在偵測器中將此屬性別名為更特定的名稱 Multiselect Mode ,以避免與 MRTK Selection Mode 混淆,用來指定是否可以切換可互動 (請參閱 按鈕 檔以進一步厘清。)

Multiselect mode

條件約束

ObjectManipulator 會使用條件約束 API 來限制操作。 如需詳細資訊,請參閱 條件約束檔

操作邏輯插入

開發人員不需要子類別或修改腳本本身,即可自訂 的操作行為 ObjectManipulator 。 只要撰寫新的 ManipulationLogic<T> ,並在偵測器中指定類型即可。

重要

如果您發現自己為一種新互動或輸入裝置撰寫新的操作邏輯類型,您可能會進入錯誤的路徑。 只要附加轉換運作良好,現有的操作邏輯就應該適用于任意輸入類型。 請考慮改為調整或撰寫新的互動者。 如需如何撰寫行為良好互動邏輯的詳細資訊,請參閱Interactionor 架構檔和互動架構檔