轻松制作智能化AR体验,Unity MARS Simulation系统原理介绍

Unity MARS的Simulation系统具备编辑器内(播放与编辑模式)的环境感知功能,可识别如平面和图像标记等内容,极大地减少增强现实(AR)应用开发时的测试时间。本文将介绍Simulation模拟系统及其使用方法,帮助创作者们加快环境适应性AR体验的开发迭代。


Unity MARS 是Unity发布的业内首款智能化MR及AR内容创作工具,各行各业的创作者都能基于MARS无缝创作AR体验(点击回看)。该工具在设计时主要针对了三个AR开发者最常遇到的难题:空间数据具有极大的不确定性;针对现实进行迭代、测试的难度较大;应用难以有效适应周遭环境。


Simulation系统可以在Unity编辑器内测试AR体验,预览AR设备与周遭环境的互动,从而减少迭代时间。该系统还可以在拟真或扫描得到的环境中进行测试,帮助开发者高效开发具有适应性与广泛性的AR应用与体验。Simulation与MARS的代理系统、条件匹配系统组合使用时,可以帮助创作者们进一步推进空间计算的边界。


Simulation系统主要有以下两个核心功能,两者虽然概念上有所分离,但是一同使用时就可以大幅减少迭代时间:

在编辑模式下单独预览场景的运行。

在编辑器中建立环境场景,根据环境生成AR数据。

本文,我们将深入介绍Simulation系统是如何改善AR开发体验的。


应用运行预览的原理

Simulation可以在编辑模式中预览场景的执行,加快迭代速度,即时显示出物体在现实中的行为。在运行预览过程中,Simulation会将活跃场景的游戏对象复制到一个预览场景(称作内容场景)中,并且在每个运行的MonoBehaviour上设置runInEditMode标签。请参阅Unity MARS说明文档来详细了解如何编写与Simulation场景预览功能兼容的MonoBehaviour。



在Simulation视图中,用户可以跳出Unity场景,单独与预览场景互动。Simulation视图是一个单独的自定义场景,其中展示了渲染于环境场景之上的内容场景(关于环境场景将在下一节讨论),视角为第三人称或摄像机视角。


在Unity MARS中,Simulaiton预览的默认行为都为即时模式(Instant Mode),即整个运行都在单帧上发生,而MARS会尝试一次性将所有代理匹配起来。虽然该行为并不贴近现实,但它能在代理和运行条件加入后即时地提供反馈。


用户也可以手动启用/停用Simulation预览的连续模式(Continuous Mode)。连续模式类似于播放模式,内容场景中的行为会逐帧运行,直到预览停止。由于物理和输入等部分Unity系统只能在播放模式中运行,连续模式下应用的互动与行为将有不少限制。连续模式预览可以查看应用如何随数据变化而变化,也允许用户快速修改场景。



Simulation系统将跟踪内容场景相对于活跃场景的状态,在有场景修改时同步数据。如果某个对象的属性有了改动,Simulation会指出改动并提示对象失去同步,表明改动需要重新同步后才能应用到预览中。在重新同步时,系统会用新的复制来取代该对象后再运行。


Simulation有一个自动同步预览的功能,代理一经修改就能在视图中立即反映出来。而Unity MARS的可视化制作功能不仅能在标准场景视图中使用,也能在Simulation视图中使用。两者结合使用时,用户一旦更改代理在环境中的条件,就能立即看到调整后的成果。然而对于难以复制的大型复杂场景来说,我们建议禁用自动同步选项,在必要时手动完成重新同步。


Simulation生成的AR数据


环境构造是Simulation的基础。环境指的是区别于应用内容的对象。从实际效果上来说,环境是一个单独的场景,在Simulation视图和播放模式的Game视图中计算独立的物理和光照,渲染发生在内容的底层。为了让编辑器中的测试能尽可能贴近实际AR设备测试,编辑器中的环境将充当现实世界。


数据传输器则是环境和内容间的数据连接。类似于其它AR数据传输器,Simulation的传输器与应用内容并行存在,并且能访问环境中的信息。传输器同时兼容播放模式、编辑模式与运行预览功能,具备多种数据生成方式,而数据源主要为合成、记录和实时三种数据。


01  合成数据


合成数据是人工生成的数据,源自一种于环境场景中实例化的预制件,并非现实数据。Unity MARS默认带有一套房间、建筑和户外空间等环境的预制件,而用户也可自行搭建模拟环境。


Simulation在发布时就已带有处理合成AR数据的能力,包括动作捕捉、地理定位、平面搜寻、点云检测、图片标识检测和光照估量等,未来还会有更多功能加入。大部分功能可即时捕捉环境预制件中合成对象生成的数据。



Simulation系统也能模拟数据探测流程,为动作捕捉、点云检测和平面搜寻创造出数据。模拟的数据探测可以根据环境预制件(模拟出的“真实世界”)和主摄像机在内容场景(模拟出的“设备”)中的状态,来动态地生成数据。为了模仿移动设备上的数据探测,我们仅在摄像机移动时检测数据,并且仅检测位于镜头内的环境,来提高模拟的精确度。同时移动设备上的平面经常会结合成“一块”,我们也创建了类似的平面,但平面的朝向只能局限于上、下、左、右、前方和后方。


02  记录数据


Simulation还能通过回放AR的运行记录来捕捉数据。记录可使用即将上线的Unity MARS智能助手APP(点击回看)或Simulation系统录制。MARS本身也提供有面部捕捉数据的示例记录。


运行记录数据将储存在Timeline资源内,每种数据类型都有各自的轨道。记录经由环境场景中的Playable Director播放,而应用内容中的模拟对象会与数据轨道绑定,以生成实际的数据。若想详细了解运行记录的使用,请参阅Unity MARS说明文档。


在Timeline上的运行记录使用方法与普通时间轴相同,用户可以修改循环行为、微调轨道上的数据内容。



在编辑模式下,用户可在Timeline窗口中拖动记录的播放头。需要注意的是代理系统和MARS的其它行为并不能逆时间轴播放,Simulation系统会将播放头的拖动视作一次更改,会要求重新同步运行预览。在运行重启时,记录也会重新开始,运行速率会加快,以跟上新的时间轴。想要详细了解如何编写支持时间轴再同步的行为,请参阅Unity MARS说明文档。


03  实时数据


此类数据源自实时的现实事件。Simulation在发布时自带用网络摄像头捕捉实时图像的功能。此处的环境便为视频播放器对象和摄像机四方图像,应用内容中的数据传输器可传输原始的图像纹理。要想从纹理中获取面部捕捉数据,需要有第三方应用的许可。


Unity MARS与AR开发的多层次处理


Unity MARS的数据可以源自AR Foundation、Simulation或自定义的数据生成器。


所有数据须经过抽象层(包括代理匹配系统使用的Unity MARS数据库),及泛用AR功能层处理,因此应用和系统可以无视数据的来源设备或软件直接使用数据。


Simulation是一个强大的AR开发泛用工具。在今年晚些时候,Unity MARSSimulation系统将不再依赖代理系统。Simulation将成为一个单独的XR子系统,创作者将能自由使用编辑器的预览和AR功能,在任何类型的XR项目中增加开发灵活性、增添模拟功能。当然,包括Simulation在内的所有Unity MARS功都将兼容AR Foundation


来源:Unity

发布时间:2020年09 月07日

服务 SERVICE

全平台互联网解决方案

  • 跨平台游戏
  • 全平台应用
  • 响应式网站
了解更多

微信

微信二维码

合作伙伴 PARTNERS

华三科技 重庆移通学院 影创科技 昌辉集团 雷科电气 中睿政和 国际文化艺术交流中心 海娜国 猪八戒网 阿里云 腾讯云 七牛云 又拍云 新网 华三科技 重庆移通学院 影创科技 昌辉集团 雷科电气 中睿政和 国际文化艺术交流中心 海娜国 猪八戒网 阿里云 腾讯云 七牛云 又拍云 新网

Loading