ObjectManipulator 它能以任何輸入裝置或模態,直覺地操作三維空間中的物體。 它執行與 XRI XRGrabInteractable類似的任務,但提供額外功能及混合實境專用互動。 雖然 與 XRGrabInteractable 我們的互動式 (完全相容,反之亦然,) ,我們仍建議使用我們的實作以獲得最佳體驗。
注意事項
ObjectManipulator 專門設計用於直接且直覺地操作 3D 物件。 如果你在找常見的介面互動,如滑桿或按鈕,請參考我們的滑 桿 與 按鈕 相關文章。 避免用來 ObjectManipulator 寫微互動。
架構
在 MRTK v2 中,大多數針對不同類型輸入的複雜邏輯與數學運算都由自己處理 ObjectManipulator 。 每種互動類型都必須維護獨立的程式碼路徑,導致引入新型互動時彈性較差。 在 MRTK3 中, 互動 者負責如何將特定類型的輸入轉譯成操作。 ObjectManipulator 只是監聽這些互動者,並將相關的轉換套用到物件上。 因此, ObjectManipulator MRTK3 的遊戲變得更簡單且範圍更小。 請參閱 Interactor 架構 ,說明互動者如何透過 attach 轉換進行溝通。
n-手控操作
ObjectManipulator 支援任意數量的互動者,允許在一手、兩手甚至偶 n手操作間進行可通用的互動行為。 一般而言,所有參與互動者的 attachTransforms 的幾何重心用於多手互動。 作為 XRI 可互動物件,它與任何提交良好行為 attach 轉換的互動器相容。
如果你不想允許多手操作,請將 XRI Selection Mode 設為 Single。 我們在檢查器中將此屬性別名為更具體的名稱 Multiselect Mode ,以避免與我們的 MRTK 混淆,MRTK Selection Mode用於指定互動物件是否可切換 (請參閱 按鈕 文件以進一步說明 )
條件約束
ObjectManipulator 使用 Constraints API 來約束操作。 更多資訊請參閱 Constraints 文件 。
操作邏輯注入
開發者可以自訂 的 ObjectManipulator 操作行為,而無需子類別或修改腳本本身。 只要寫一個新 ManipulationLogic<T> 檔案,並在檢查器中指定帶有屬性 ManipulationLogicTypes 的型別即可。
同樣地,開發者可以透過撰寫新的實作 ITransformSmoothingLogic ,並在檢查器中指定該屬性的 TransformSmoothingLogicType 型別來自訂平滑行為。
重要事項
如果你發現自己為一種新的互動或輸入裝置寫新的操作邏輯類型,那你很可能走錯了路。 只要 attach 轉換行為良好,現有的操作邏輯應該能適用於任意輸入類型。 考慮調整或寫一個新的互動者。 閱讀 Interactor 架構文件 與 Interactable 架構文件 ,了解更多如何撰寫良好行為互動邏輯的資訊。