物件操作工具 - MRTK3
ObjectManipulator
可透過任何輸入裝置或形式,在 3D 空間中直覺操作物件。 它會執行與 XRI XRGrabInteractable
類似的工作,但提供額外的功能和混合實境特定互動。 XRGrabInteractable
雖然 與我們的互動專案完全相容 (,但相反的也是) ,但我們仍建議使用我們的實作獲得最佳體驗。
注意
ObjectManipulator
特別設計用來直接且直覺地操作 3D 物件。 如果您要尋找常見的 UI 互動,例如滑杆或按鈕,請改為參閱滑 杆 和 按鈕 文章。 避免使用 ObjectManipulator
來撰寫微互動。
架構
在 MRTK v2 中,不同類型的輸入大部分複雜邏輯和數學都會自行 ObjectManipulator
處理。 必須針對每種互動類型維護個別的程式碼路徑,在引進新類型的互動時,產生較少的彈性。 在 MRTK3 中, 互動者 負責特定輸入類型如何轉譯為操作的特定類型。 ObjectManipulator 只會接聽這些互動專案,並將相關的轉換套用至物件。 因此, ObjectManipulator
MRTK3 在範圍內相當簡單且較小。 如需互動專案如何透過其附加轉換進行通訊的說明,請參閱 互動式架構 。
n
-handed 操作
ObjectManipulator
支援任意數目的參與互動專案,允許跨一、兩個甚至 n
手部操作的一般化互動行為。 一般而言,所有參與互動者 attachTransforms 的幾何心都用於多手互動。 做為 XRI 可互動的,它與提交良好行為附加轉換的任何互動器類型相容。
如果您想要不允許多手操作,請將 XRI Selection Mode
設定為 Single
。 我們會將偵測器中的這個屬性別名為更特定的名稱 Multiselect Mode
,以避免與 MRTK Selection Mode
混淆,用來指定是否可以切換可互動 (請參閱 按鈕 檔以進一步厘清。)
條件約束
ObjectManipulator
會使用條件約束 API 來限制操作。 如需詳細資訊,請參閱 條件約束檔 。
操作邏輯插入
開發人員可以自訂 的操作 ObjectManipulator
行為,而不需要子類別,或修改腳本本身。 只要撰寫新的 ManipulationLogic<T>
,並使用 屬性在偵測器 ManipulationLogicTypes
中指定類型。
同樣地,開發人員可以撰寫 的新實 ITransformSmoothingLogic
作,並使用 屬性在偵測器 TransformSmoothingLogicType
中指定類型,來自訂平滑行為。
重要
如果您發現自己為新類型的互動或輸入裝置撰寫新的操作邏輯類型,您可能會進入錯誤的路徑。 只要附加轉換的行為良好,現有的操作邏輯就應該適用于任意輸入類型。 請考慮改為調整或撰寫新的互動器。 如需如何撰寫行為良好互動邏輯的詳細資訊,請參閱 Interactionor 架構檔和Interactionable 架構檔 。