(映维网 2019年12月24日)Unity于2016年发布了EditorXR的第一个版本,Scene View(场景视图)在XR头显中工作的扩展。EditorXR允许你在空间中创建内容,将Unity Editor创作工具的全部功能带入其中。实验性的EditorXR功能自亮相以来就与Unity平台和XR社区一同发展。Unity的这篇博文介绍了项目的最新进展,并深入探讨了他们早前发布的功能:EditorXR Runtime。下面是映维网的具体整理:
1. 最新版本(0.3)
Unity最近将0.3版本托管至GitHub。这个版本包含用以支持最新版本Unity的更新,但更重要的是,它消除了对Oculus和SteamVR SDK的依赖。这一变化令设置过程更加容易。
另一个主要的功能是Spatial UI,这是Unity不断努力优化菜单并在EditorXR中实现快速模式切换而产生的一项成果。这个功能侧重于易用性,以及兼容诸如Magic Leap One和微软HoloLens等不包含双控制器的AR头显。开箱即用的EditorXR依然仅适用于Oculus和SteamVR,但这家公司计划在将来正式支持更多设备。他们利用EditorXR的基础系统来驱动MARS配套应用中的菜单和交互,从而为智能手机和AR头显提供现实捕获和创作功能。其他值得注意的功能包括优化的双手直接操作,以及默认Annotation和CreatePrimitive工具的菜单更新。更多信息请参阅GitHub页面。
Unity同时在官网添加了永久的,并将其作为相关的信息中心。
2. 为何要构建EditorXR Runtime
团队表示,四年XR开发的最重要经验教训之一是在,用以在XR中编辑应用的工具和交互模式与用户能够在XR中所做之事互为交织。所以,Unity决定将他们为EditorXR创建的所有工具都提供给开发者社区。
2.1 是什么?
EditorXR Runtime允许你在基于Unity开发的XR应用中纳入引擎的任何功能。这家公司从EditorXR开发的早期就决定尽可能少地改动核心引擎,并选择面向所有用户的系统和API来编写代码。这意味着你可以在自己的项目中使用Unity为EditorXR设计的几乎所有功能。
Editor的众多功能不支持player build。所以,EditorXR Runtime包含Edit Mode可用功能的子集。例如,Inspector使用的SerializedObject和SerializedProperty类不存在于运行时。短期而言,Unity根本不会在版本中纳入Inspector,Hierarchy(和Locked Objects),Project, Profiler和Console Workspaces。Inspector,Hierarchy(和Locked Objects)和Project Workspaces同样不支持Play Mode。Unity计划用运行时等效项来替换所述Editor系统,而其中一些将与MARS配套应用一起发布。
2.2 如何在运行时中使用EditorXR?
对于Edit Mode,VRView窗口是EditorXR的入口。当你打开视图时,系统启动;当你关闭视图时,系统关闭。Play Mode和player build使用OnEnable和OnDisable。EditingContextManager组件将启动和关闭EditorXR,并且必须包含在使用EditorXR Runtime的任何场景中。要通过用户脚本控制EditorXR的生命周期,你可以用自己的管理器替换EditingContextManager。在默认配置下,EditorXR会在启用EditingContextManager后立即启动,并在禁用组件后关闭。
3. 为什么要用它?
在player build或Play Mode中运行EditorXR的其中一个优势是:更佳的性能。对于Edit Mode,EditorXR使用Editor GUI按顺序绘制场景,而这在使用复杂布局时会导致不可避免的CPU负载和性能受限。提醒一下,如果关闭所有Editor窗口(包括默认布局中的窗口),则Edit Mode将能获得最佳性能,但Play Mode不需要。
在运行游戏代码时,你同时可以在情景中利用场景操作工具。比方说,假如你希望将一棵树向左移动一点,你可以在EditorXR中使用转换工具进行微移。当然,退出Play Mode后你依然需要将相关改动转移回场景之中,但这可以通过利用修改后的对象制作预制件,或使用诸如Play Mode Saver之类的编辑器扩展轻松完成。Unity正在努力使令Hierarchy和Inspector支持运行时,并且当所述功能发布后你将能够在头显中检查和调试场景对象。对于某些情况,例如你尝试在Oculus Quest中使用EditorXR工具,你只能使用player build。这种功能尚未发挥出其全部潜能,但对于为不支持Unity Editor的平台构建创作工具,这一版本奠定了坚实的基础。
在不断开发和改进EditorXR的过程中,团队计划扩展默认UI,使其可以支持智能手机,头显,甚至是采用触控屏或鼠标/键盘的传统平板电脑或PC。Unity希望任何设备,任何情景都具备一个统一的Unity创作框架。用户可以随意使用其代码进行任何操作。Unity同时正在构建诸如MARS配套应用程序等基于player的创作工具,从而支持无法运行Unity Editor,但可以利用相关设备和XR的专业工作流程。
EditorXR Runtime的另一个用例是位游戏提供一个以EditorXR作为基础的关卡编辑器。你可以利用Annotation Tool或Poly Workspace等现有功能,并构建自己的自定义工作流程或满足特定工作流程的数据管道。你甚至可以创建和销售VR生产力工具。
4. 下一步?
关于如何将EditorXR Runtime合并到现有项目中,我们需要解决多个悬而未决的问题。例如,如果要使用自己的控制器模型?如果现有交互需要使用扳机键或与此相关的任何其他按钮映射时,你将如何打开EditorXR菜单或使用工具?如何将改动保存到player build之外?你是否应该扩展EditorXR的菜单以提升体验,又或者是否创建自己的菜单以提升EditorXR?前述问题都由你来决定;你可以简单地编辑EditorXR并根据自己的需要进行修改。如果你已经在扩展EditorXR,或者这篇文章鼓励你将EditorXR包含在自己的项目中,你可以与Unity联系并予以反馈。
4.1 XR Interaction Toolkit
随着 XR Interaction Toolkit的发布,Unity开发者拥有了一套可用来创建XR体验的交互代码。所以,我们现在可以就用户项目如何处理其场景设置的某些方面进行假设,甚至可以在EditorXR中删除一定的代码。从XR Camera Rig和MultipleRayInputModule的代码开始,Unity将用XR Interaction Toolkit中的等效代码替换EditorXR中的通用代码。这样,我们就可以在现有场景中以已配置的方式利用所述组件。如果已使用XR Interaction Toolkit设置了EditorXR,则它将使用自定义的控制器模型和交互设置。你同时可以在非VR项目中使用EditorXR。对于这种情况,EditorXR在启动和关闭时会创建默认设置。
4.2 智能手机和AR头显
作为MARS配套应用程序的一部分,Unity已经更新了EditorXR的系统,使其可以支持智能手机,并将触控屏输入用于操纵器和菜单。现有的VR菜单和工具如今无法直接转换为AR。团队的目标是为智能手机和AR头显引入等效的通用主菜单和工作区域。朝这个方向迈出的第一步是,简单地令底层系统支持所述平台,以便可以通过用户的代码来设置它们。
4.3 序列化
保存和加载场景,撤消/重做,以及Hierarchy和Inspector是Unity创作的关键功能。它们不存在于运行时版本中的事实意味着你仅限于场景操作。将Poly Workspace中的对象带到游戏中非常有趣,而为了弥合这一空白,团队正在开发一个可以在player build中导入/导出Unity场景的运行时序列化程序。当预备妥当后,你将能够使用EditorXR构建基本的场景编辑器。Inspector和撤消/重做功能同样依赖于序列化,而Unity将能够提供所述功能的运行时版本。
4.4 Assets
最后,通过AssetBundles以可预测方式将新asset发布到EditorXR player build的功能将允许你能够在Project Workspace的复刻版本中工作,并最终演变为Poly Workspace等基于云端的asset管道。Unity计划在未来的数月和数年中使用所述功能么。一如既往,Unity希望大家能够积极地提供反馈和意见。
5. 全新的可能性
EditorXR Runtime带来了创新的可能性:将XR创作功能变成应用程序的功能,并允许玩家在其中设计自己的内容。这可以以关卡编辑器的形式出现,并提供用户生成内容的所有优点。在VR或AR应用程序中,你同时将获得XR创作所固有的一切优点:直接,自然,双手操纵3D对象,按实际规模构建环境,以及将肌肉记忆力带到数字领域,无需学习复杂的新控件等等。
更进一步,如果你希望构建一个相关艺术创作应用(如下一个Tilt Brush或Gravity Sketch),EditorXR Runtime将可以为你提供坚实的快捷方式和架构基础。利用Unity提供的基础,你可以对其进行修改和扩展,从而实现下一个出色的XR设计应用程序。