EditorXR Runtime
2016年,Unity Lab的創作工具小組發布了EditorXR的第壹個版本,這是我們在XR頭戴式顯示器(HMD)的Unity場景視圖中工作的擴展。 EditorXR使您可以在空間上創建內容,將Unity Editor的創作工具的全部功能實現。自推出以來,實驗性EditorXR功能已與Unity平臺和XR社區壹起發展。這裏來分享我們的最新進展,並深入研究今年早些時候發布的令人興奮的功能:EditorXR Runtime。
最新更新(0.3版本)
我們最近在GitHub上發布了0.3版。此版本包含更新以支持Unity的最新版本,但更重要的是,它消除了我們對Oculus和SteamVR SDK的依賴。此更改使設置過程更加容易。
Spatial UI是另壹個主要功能,它是不斷改進菜單工作並在EditorXR中實現快速模式切換的壹項持續工作。此功能側重於易用性以及與AR HMD(如Magic Leap和HoloLens)兼容,後兩者不帶有控制器。開箱即用的EditorXR仍僅適用於Oculus和SteamVR,但我們計劃在將來正式支持更多設備。我們使用EditorXR的基礎系統來驅動MARS配套應用程序中的菜單和交互,從而為智能手機和AR HMD提供現實捕獲和創作功能。其他較小但仍值得註意的增強功能包括改進的雙手直接操作和默認Annotation和CreatePrimitive工具的菜單更新。
有關EditorXR功能頁面,可關註UNITY網站。
為什麽我們建立EditorXR Runtime
在四年的XR開發中,我們獲得的最大的學習之壹是在XR中編輯您的應用程序的工具和交互模式與用戶在XR中可以相結合的程度。因此,我們決定將為EditorXR創建的所有工具都提供給開發人員社區,以供他們的應用程序使用。
它是什麽?
EditorXR運行時允許您在使用Unity制作的XR應用程序中包含任何功能。從EditorXR開發的早期開始,我們就做出了壹個明智的決定,即對核心引擎進行盡可能少的更改,並使用任何用戶都可以使用的系統和API編寫代碼。這意味著您可以在自己的項目中使用我們為EditorXR設計的幾乎所有功能。
Unity的許多編輯器功能在播放器版本中不可用。因此,EditorXR運行時包含編輯模式下可用功能的子集。例如,檢查器使用的SerializedObject和SerializedProperty類在運行時並不存在。短期而言,我們根本不會在構建中包括檢查器,層次結構(和鎖定對象)、項目、探查器和控制臺工作區。檢查器、層次結構(和鎖定的對象)和項目工作區在播放模式下也不可用。我們計劃用運行時等效項替換這些Editor系統,其中壹些將與MARS配套應用程序壹起發布。
如何在運行時使用EditorXR?
在編輯模式下,VRView窗口是EditorXR的入口。當您打開視圖時,我們將引導系統,並在關閉視圖時將其關閉。在播放模式和播放器版本中,我們使用OnEnable和OnDisable。 EditingContextManager組件將啟動和關閉EditorXR,並且必須包含在使用EditorXR Runtime的任何場景中。也可以用您自己的管理器替換EditingContextManager,以從用戶腳本控制EditorXR的生命周期。在默認配置中,EditorXR會在啟用EditingContextManager後立即啟動,並在禁用組件時關閉。
為什麽要使用它?
在播放器或播放模式下運行EditorXR的優勢之壹非常簡單-更好的性能!在“編輯模式”下,EditorXR使用“編輯器GUI”按順序繪制場景,這在使用復雜布局時會導致不可避免的CPU開銷和性能受限。提醒壹下,如果關閉所有“編輯器”窗口(包括默認布局中的窗口),則在“編輯模式”中將獲得最佳性能,但在“播放模式”中則不需要。
在您運行遊戲代碼時,您還可以在上下文中利用場景操作工具。例如,在播放過程中可能需要幾分鐘,您想將壹棵樹向左移動壹點。在EditorXR中,可以使用轉換工具將其微移並查看感覺。當然,退出“播放模式”後,您仍然必須將“播放模式”的更改傳送回場景中,但這可以通過用修改後的對象制作預制件或使用“播放模式保護程序”之類的編輯器擴展輕松完成。我們正在努力使層次結構和檢查器在運行時可用,發布此功能後,您將能夠在HMD中的內部版本中檢查和調試場景對象。在某些情況下,例如,如果您嘗試在Oculus Quest上使用EditorXR工具,則只能使用播放器構建。這些功能尚未發揮出全部潛能,但是當前版本為構建不支持Unity Editor的平臺的創作工具奠定了堅實的基礎。
隨著我們不斷開發和改進EditorXR,我們計劃擴展默認UI,使其可在AR智能手機,HMD上,甚至在使用觸摸或鼠標和鍵盤交互的傳統平板電腦或屏幕上使用。我們構想在任何設備上,任何上下文中都有壹個統壹的Unity創作框架。用戶可以隨意使用我們的代碼進行任何操作。 Unity還正在構建基於播放器的創作工具,例如MARS配套應用程序,以支持利用無法運行Unity Editor的設備(XR或其他功能)的專業工作流程。
EditorXR Runtime的另壹個案例可能是在遊戲中附帶壹個關卡編輯器,或者以EditorXR為基礎構建創建和協作軟件。您可以利用“註釋工具”或“多邊形工作區”等現有功能,並構建自己的自定義工作流或滿足特定工作流的數據管道。您甚至可以創建和銷售VR生產力工具!
下壹步是什麽?
關於如何將EditorXR Runtime合並到現有項目中,仍然存在壹些懸而未決的問題。例如,如果要使用自己的控制器模型怎麽辦?如果現有交互需要使用觸發器或與此相關的任何其他按鈕映射,如何打開EditorXR菜單或使用工具?如何將更改保存到播放器版本之外?您是否應該擴展EditorXR的菜單來提升體驗,還是創建自己的菜單來提升EditorXR?至此,所有這些問題都由您決定;您可以簡單地編輯EditorXR並根據自己的需要進行修改。
XR互動工具包
隨著Unity XR交互工具包的發布,Unity開發人員實際上擁有壹套交互代碼,他們可以使用它們來創建XR體驗。因此,我們現在可以開始就用戶項目如何處理其場景設置的某些方面做出壹些假設,甚至更好的是,我們可以在EditorXR中刪除壹些代碼,這具有類似的目的。從控制XR攝影機裝備和MultipleRayInputModule的代碼開始,我們將用XR Interaction Toolkit中的等效代碼替換EditorXR中的通用代碼。這樣,我們可以在現有場景中以已配置的方式利用這些組件。如果已使用XR Interaction Toolkit設置了EditorXR,則將使用自定義的控制器模型和交互設置。也可以在非VR項目上使用EditorXR,在這種情況下,當EditorXR啟動和關閉時會創建默認設置。
智能手機和AR HMD
作為MARS配套應用程序的壹部分,我們已經更新了EditorXR的系統,使其可以在智能手機上運行,可在觸摸屏輸入用於操縱器和菜單。現有的VR菜單和工具如今無法直接轉換為AR。我們的目標是為智能手機和AR HMD引入等效的通用主菜單和工作區。朝這個方向邁出的第壹步是簡單地使底層系統能夠在這些平臺上運行,以便可以通過用戶的代碼對其進行設置。
序列化
保存和加載場景,撤消/重做以及層次結構和檢查器是Unity創作的關鍵功能。它們在運行時構建中丟失的事實意味著您僅限於場景操作,該操作僅會在構建運行期間持續。就是說,將Poly Workspace中的對象(即使只是暫時地)帶入您的遊戲非常有趣!為了彌合這些差距,我們正在開發壹個運行時序列化程序包,該程序包可以在播放器版本中導入/導出Unity場景。該功能準備好後,計劃將能夠使用EditorXR構建基本的場景編輯器。 Inspector和撤消/重做功能也依賴於序列化,我們將能夠提供這些功能的運行時版本。
資產
最後,通過AssetBundles以可預測的方式將新資產發布到EditorXR播放器的功能使您能夠在Project Workspace的傳真中工作,並最終演變為Poly Workspace等基於雲的資產管道。我們計劃在未來的幾個月和幾年中使用這些功能,很高興看到您可以在EditorXR的基礎上構建什麽。壹如既往,我們歡迎您的反饋和意見。您認為下壹步該怎麽做?
創作遊戲玩法
EditorXR Runtime帶來了我們非常激動的創新可能性:將XR內創作功能作為您的應用程序的功能,並讓您的播放器在中間設計自己的內容的潛力。這可能以您的應用程序的關卡編輯器的形式出現,具有用戶生成內容的所有優點,而過去類似功能的遊戲已從中受益。在VR或AR應用程序中,您還將獲得XR創作所固有的所有優勢:直接,自然,雙手操縱3D對象,按實際規模構建環境以及轉移肌肉記憶力和具體體驗(例如例如繪畫,雕刻等)進入數字領域,而無需學習復雜的新控件。
更進壹步,如果您希望構建壹個完全與創作有關的應用程序-下壹個Tilt Brush或Gravity Sketch,則EditorXR Runtime可以為您提供龐大的快捷方式和堅實的架構基礎。從我們在這裏提供的基礎開始;您可以對其進行修改,擴展和樣式化,以實現對下壹個出色的XR設計應用程序的了解。
使用XR技術來支持更多不同類型的創作者的想法是我們團隊非常熱衷的事情。我們認為EditorXR及其功能計劃深刻體現了Unity的願景,即讓世界成為擁有更多創作者的美好場所。
為了獲得更多的信息以及更新,請查閱:
https://unity.com/editorxr?_ga=2.133335950.1649892126.1577324024-1497138561.1577152077
記者:Matt Schoen/Unity