AR开发从未如此简单-Unity MARS入门模板初探

🤖 由 文心大模型 生成的文章摘要
上个月,Unity正式发布了业内首款智能化混合现实及增强现实内容创作工具Unity MARS,在与早期MARS用户的交流中,我们注意到大家都开始熟悉起MARS制作增强现实的功能,讨论具体设备解决方案的声音逐渐减少,关注内容如何与现实数据相连、适应的声音正在增多。这也意味着大家的关注点从基础问题转移到了关于空间计算的场景问题上。
Unity MARS为在虚拟世界、编辑器或运行时中描述、引用现实世界提供了一种新的设计语言。它允许开发者描述、制作前所未有的大型应用。跟所有语言一样,Unity MARS也需要学习。
在我们普及AR工作流,与客户沟通的过程中,我们设计了入门模板(Starter Templates),这套模板收录了典型的AR应用案例,方便开发者迅速上手。目前Unity MARS包含以下入门模板:
空白模板(Blank Template)
桌面(Tabletop Template)
人脸面具模板(Face Mask Template)
游戏模板(Game Template)
培训模板(Training Template)
01   空白模板
各位自主创作者和领头人可以使用空白模板开启你的项目,模板包含预制定的MARS Session用户和摄像机对象,以及点云和平面成像程序,在扫描环境后可以形成图像信息。在Unity MARS中打开一个场景时,所有代理对象会自动生成。
Unity MARS会创建代理对象,或现实环境的替身。由于用户的位置对应着模拟摄像机的位置,MARS通常会首先匹配用户的位置信息。
02   桌面模板
我们提供有一种“对象出现在桌面”的经典示例,要制作此类场景有几种不同的方法,可以使用Unity MARS的拖放操作工作流,也能使用MARS面板中的快捷创建代理对象。模板中所有条件数值已经过调试,其中放置了一个简单的立方体,用户可以用自己的数字内容来替换立方体。
模板比例有1:1(可与真实大小的对象互动)和10:1两种比例,10:1的微缩模板展示了制作大型内容(类似城市)桌面可视图像的最佳实践。推荐在制作内容时使用1:1比例,随后将MARS Session切换为使用世界尺度(World Scale),将对象渲染得相对较小。根据实际尺寸制作内容,再将尺度缩小,可让内容性能达到最佳——仅制作小型对象可能会造成精度问题。
03   人脸面具模板
人脸面具模板主要为了帮助开发者制作位于人脸面部的内容。用户可以象装饰假人一样来装饰模型,内容可以是网格(如奇形怪状的眼镜),也可以是粒子系统或其它特效这类较虚无的东西。模板默认带有面部特征点可视化程序,可展示MARS跟踪到的每个面部特征。
04   游戏模板
平台闯关类游戏一直是常青的3D游戏。在游戏模板中,我们将这类控制人物搜集奖励的游戏体验带入AR领域,在AR中的平台闯关探索的并不是虚拟世界,而是真实世界。
在游戏模板中,一个小机器人将踏上搜集水晶的旅途。水晶自动被放在现实中,可以与环境做到无缝互动。作为一个平台闯关类的基础模板,用户可以将机器人和水晶替换为自己的人物和奖励,制作自己的游戏。
模板提供有两种变量:基础模板和高级模板。
基础模板与高级模板对比
基础模板使用了MARS的拖放工作流进行开发,内容会直接被摆放到AR平面上,形成一个非常直白的场景。
高级模板借助了复杂AR游戏机制的原则和方法,内容带有语义标签和对抗力。语义标签可用于在场景中标记“出生点”位置,让所有代理对象(包括人物和搜集物品)都能匹配到位置上。对抗力可保证内容不会相处重叠,可避免低精确度设备检测出的两个邻近平面重叠的情况。模板生成的Unity场景技术上更为复杂(不熟悉Unity MARS概念的用户可在说明文件中查阅)。
控制方案
我们使用了直接触控,游戏模板中机器人将移动(如果路径不连贯,则会跳跃)到用户点击的位置。由于沉浸式应用中的对象不容易跟踪,方案还需将人物重新放置到用户视图的中心。
水晶会在机器人与之相碰撞时旋转、消失。两者都独立于MARS运行,可独自放在纯数字环境中。
复制器
游戏模板使用了Unity MARS的复制器(Replicator)原生对象类型。如果场景中包含有不止一个同类型数据,复制器将复制该代理对象或对象组。基础与高级模板都使用了复制器来匹配所有大小合适的平面为碰撞代理对象。基础模板的复制器将负责生成整个带水晶的平面。而在高级模板中,水晶并非直接放在世界中,而是通过生成点的位置而生成。复制器会复制生成点代理对象,匹配到相应位置,减少在场景中调整内容的必要,还能实现同时匹配多种类型的对象。
05   培训模板
培训模板的制作目的是方便开发者制作引导式体验,引导式体验可借助一系列可自定义触发器自动推进,引导终端用户完成一系列的步骤。作为一个培训用例,模板展示了如何执行特定的操作。
开发者可以复制、修改场景中已有的预制件,扩展模板的功能。该响应式体验可在移动端或头戴显示器(HMD)上流畅运行,无须额外的场景或版本,基本互动已包含在其中。
培训模板需要在实地与现实设备互动,意味着系统需要能轻易接入外部系统。同时,模板使用了非平面代理对象,方便重新定位内容到一个已知位置或设备上。
培训模板由三部分组成:导览系统、UI 开发(用户界面面板,将在下方讨论)和响应性Unity MARS行为。
导览系统
导览系统由一系列步骤组成,某段时间内仅有一个活跃步骤,每一步都会激活特定的图像和脚本。
一个步骤可以有多个推动进程的触发器。我们制作了最为常见的步骤合集,包括接近距离、代理对象状态和目光。触发器为单功能脚本,会告知步骤的推进时机。用在Unity MARS中后,就能制作出可对现实反应的步骤式体验。
UI开发
在培训模板中,我们开发了一套用户互动(UI)组件,其中最主要的是一个可以显示用户开发进度的UI面板。面板将展示流程的每个步骤描述,引导用户完成培训步骤。用户可在移动栏的下拉列表中选择不同的步骤,查看哪些步骤是已经完成的。
除了主面板外,开发者还能使用额外的空间UI组件来帮助用户游览空间、将注意引导到不同的兴趣点上,包括箭头、屏外标识这些借助Unity MARS对抗力与环境互动的对象。箭头预制件使用了对齐力,会根据方向旋转、一直面对着用户;而屏外标识则会结合兴趣点屏幕空间位置相对于视野产生的两种对齐力来移动。如果兴趣点处于视野外,则标识位置受头部姿势影响,如果在视野内,则标识会指向对象,吸引用户注意。
响应性
AR适用于多种形式,我们希望我们的模板能够支持所有的形式。AR体验的两种主要设备类型为智能手机和HMD,我们将其分别分类为“平面”和“空间”沉浸级。
响应性涉及到画布操控,即UI画布的重新归属、摆放。在平面设备上UI元素只会锁定在屏幕上;在沉浸设备上UI可存在于空间中。为了操纵画布,我们针对每种沉浸级制定了特定的条件和行为,在编辑器中模拟了两种情景。
平面和空间两种UI版本有一些较为关键的不同点。在屏幕和头戴显示器上,“向前”和“向后”按钮,以及移动栏的位置都会不同。此外,在空间版本中UI步骤面板会以3D漂浮在空间中,而平面版本中则会占据整个屏幕。这些不同都是基于各媒介的示能(affordance)来决定的。