查看原文
其他

Unity Labs新一代AR/MR工具:Project MARS

Unity Unity官方平台 2022-05-07

Project MARS是Unity针对混合增强现实的新一代工具包,专注于帮助创作者,创作在世界各地运行的空间计算体验和游戏。


计算机技术的发展正处于一个非常微妙的转折点,无处不在的传感器与高速处理器终于能够实现自上世纪60年代就提出并实验的空间计算视觉。如今,我们有了各种小型且灵活的电脑,能够导入整个世界的信息,然后再利用它们做些有趣的事情。


长期以来,Unity一直被用于制作游戏和模拟场景中的数字世界,然而我们只能通过一个小小的窗口来体验它们,使用各种外部设备来控制我们的人物在庞大的世界中肆意奔跑,而我们自身仍坐在沙发上。


虚拟现实VR让我们进入这个世界,实现了人与虚拟空间更亲密的接触。混合现实MR则将数字对象带到了窗口的另一边,即真实世界中。



越来越多的创作者在学习Unity创作混合现实体验时,感受到Unity强大之处:我们为数字世界构造的所有系统都可以在混合现实开发中使用,例如:动画系统、物理系统和导航系统,它们可以创造出在真实世界中运行,并且能够对真实世界作出响应的应用。


在Unity Labs的创作工具团队深入研究AR/MR使用案例后,我们认识到不仅需要让应用能够在真实世界中运行,还要将更多真实世界的信息返回到编辑器中。我们需要一种简单的方法让Unity能够分辨出什么是现实,什么是虚拟,从而方便我们设计、开发、测试现实世界中的应用。


Unity推出Project MARS,这是一个全新的Unity工具包,旨在帮助创作者更好地制作能够在世界各地运行的空间计算体验和游戏。Project MARS工具包包含两个主要部分:Unity拓展及手机配套应用和AR头戴式显示器(HMDs)。


在Unite Berlin 2018上,我们公布了Project MARS。随着Project MARS Beta版发布日期逐渐接近,我们将为你介绍Project MARS的核心功能。


Project MARS核心功能

模拟视图

Simulation View模拟视图是Project MARS最重要的新功能之一。MR/AR应用中有一个有趣的特点:应用需要定义两个不同的世界,一个是Unity世界空间,另一个是现实世界空间。


在模拟视图中,我们可以在模拟的现实空间中摆放对象或测试事件这个新的编辑器窗口专门用于输入真实或虚拟世界的数据,例如:录制的视频、直播视频、3D模型和扫描数据,然后你就可以直接使用这些数据开始设计自己的应用。



该窗口包含的工具和UI可以用于观察、构建原型、测试和可视化稳定的AR应用,类似在现实中的运行效果。模拟视图解释起来很简单,但是为了开发它,我们需要创建一个复杂的系统来解决所谓的“模拟差距”。


模拟差距是指电脑中数字对象的完美数据和现有设备及传感器检测到的不完全且不完美数据之间,所存在的差异。我们尝试了各种不同的方法来解决这个问题,包括:对表面数据进行模拟探索,构建强大稳定的查询系统。


设备模拟视图

设备模拟视图和模拟视图相反。我们不仅可以在Unity编辑器中模拟真实世界,还可以模拟设备在世界中四处移动。


设备模拟视图帮助我们快速体验用户在移动AR设备所体验的内容,这样便无需在不同的空间中逐个实机测试AR应用的表现。在构建AR应用时也可以减少大量迭代时间,我们可以使用键盘和鼠标控制模拟设备的摄像头,或模拟运行配套应用的设备,导入真实数据到编辑器。



描述真实世界的新方法

Project MARS有一系列的新体系,帮助我们在工作流程中描述、理解和可视化真实世界的对象。状态定义对象,而多个对象则定义场景


 

状态(Conditions)会描述我们需要的特征:对象大小、GPS位置、形状等。我们定义现实环境(Real World Context),它由一套状态组成。


我们要描述一张桌子,可以使用的状态有:

  • Surface Size(表面大小):表示这个表面至少有1平方米。

  • Alignment(对齐):表示该平面是水平。

  • Elevation(高度):表示这个对象至少离地面1米。

 


重要的是这些状态需要足够模糊,能够容忍用户所在空间的各种变量,所以许多空间状态都是由最小值和最大值的范围来定义的,例如:表面大小的范围在1~3平方米之间。这种空间状态将调用场景Gizmos,让我们在编辑器中可视化并调整范围大小。



虽然以上这些大小、高度、地理位置和其它信息都属于对象的空间属性,但是状态本身并不一定是关于空间,我们也可以定义一天中的时间或天气,例如:该内容应该在晴天的中午展示。

 

为了创建更复杂,更特殊的行为,我们可以将这些现实环境结合起来,组成集合来描述较大型的场景。例如:你想开发一个AR视频直播应用,将回放控制放在咖啡桌上,将视频库放在书架上,而将虚拟屏幕放在房间里最大的墙上。


我们需要先定义每个现实环境,包括:咖啡桌、书架、墙面,再将它们归入到包含多个现实对象的房间描述中。



在这些描述现实的阶段中,需要考虑到用户的环境中可能没有我们描述的对象。如果用户环境没有之前示例中的书架,为了让应用能够正常运作,我们需要适当调整到一套更简单的要求。


为此我们提供备选(Fallback)事件我们可以在其中定义一个次优场景,然后再定义一个最简场景,例如:用户在该场景只会找到一个表面


这种“最理想→可接受→最简单”层级可以帮助我们平衡不同的场景,包括:富含深度环境行为的最佳场景,在该情况下,用户把环境映射到了应用设计时所构想的环境;以及提供基本功能的最简场景,在该情况下,用户的环境与设计内容完全不同,并且没有扫描数据。



总结:状态可以描述单个属性,一系列状态可以描述现实环境,而一系列现实环境则可以描述整个预想的环境或部分环境。


使用这些元素,我们就可以为应用设定一个“最理想→可接受→最简单”层级式的状态效果了。



我们还可以使用特征式状态(Trait Conditions)定义具体的特性,将其与基础技术栈或已命名属性相匹配。根据设备和软件的不同,命名任何东西,包括:房间情景对象、3D标记和定位锚点。


我们希望让该功能有尽可能多的灵活性,从而该功能适用于将来的世界数据技术,以及AR Foundation支持的属性类型。今天我们定义的特征一般是“地板”、“墙面”或“天花板”,但是展望未来,这些特征为识别对象(例如:猫,狗)和属性(例如:木头,草)打开了巨大的可能。


当定义好对象及其位置后,我们希望对象的放置过程可以更加细致。我们创建了一个地标(Landmarks)系统,让对象在对应现实环境中的放置和朝向更加精准




高级数据控制

推理式API是一种高级功能:用户编写作用于整个Project MARS世界的脚本可以一次性被理解,而不是一次一条数据。推理式API允许我们进行高级的数据推理,并能够组合、创建或转换数据


一个典型的例子是在扫描一块空间后,可以推断出地面是最低、最大的平面。HoloLens等部分设备会默认提供一块地面,但是其它感应器和技术栈则不会提供。推理式API功能可以混合、配对输入数据,更好地展示现实世界和其它有趣的事件。重要的是,这些代码不会影响到应用的逻辑。


配套应用

我们在Unity编辑器中做了大量工作,尝试将现实世界信息导入编辑器,但如果无法利用好擅长处理现实数据的移动设备,这会令人失望。所以我们创建了面向AR设备的Project MARS配套应用。

 

首次迭代是针对手机:我们通过Unity云服务把应用连接到项目,然后像放置3D贴纸一样布置资源。我们还可以定义状态、录制视频和世界数据,然后直接导出到编辑器中。这是拉近现实世界和数字世界的重要一步。


未来展望

Project MARS Alpha版测试

Project MARS正处于封闭Alpha版测试阶段,我们正寻求与致力于挑战空间应用极限的团队进行合作。我们希望让大家来测试Project MARS,提供反馈,帮助我们确立新的发展路线图重点。


我们已经创建好基础,希望Project MARS可以帮助用户制作出惊人的体验,确保我们的方向都是正确的。


感谢

在Project MARS开发过程中,我们受到Microsoft、Magic Leap、Google、Facebook等奋斗在MR创新前沿的公司的启发和帮助,他们的创新技术包括:基于地理位置的虚拟体验、汽车可视化、太空模拟器、建筑预览、创新的移动AR游戏等。感谢所有和我们交流并合作的公司,特别感谢Mapbox与我们合作构建了首个地理空间集成。


我们的成果基于混合现实研究团队先前的成果,AR Foundation和XR Interaction Toolkit套件为构建Project MARS提供了坚实的技术基础。


了解更多Project MARS内容,请访问:

https://unity.com/unity/features/mars


推荐阅读

使用Unity AR Foundation在增强现实中查看模型

Unity AR解决方案-AR Foundation及SenseAR介绍

使用AR模拟高速IndyCar赛车

使用Unity的VR功能创作交互式媒体体验

VR科幻游戏《 Ground Runner: Trails》开发经验

使用Cinemachine设置3D格斗游戏的摄像机

Marza动画星球新作《The Peak》

《使命召唤手游》首周下载破亿,技术演讲免费观看


促销活动

Humble Unity Bundle 2019限时优惠

促销时间:10月16日前(最后2天!

购买地址:

https://www.humblebundle.com/software/unity-2019-bundle



喜欢本文,请点“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存