共用方式為


物件操作工具 - 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 架構檔