萱草|轻松制作智能化AR体验,Unity MARS Simulation系统原理介绍( 二 )


Simulation生成的AR数据
环境构造是Simulation的基础 。 环境指的是区别于应用内容的对象 。 从实际效果上来说 , 环境是一个单独的场景 , 在Simulation视图和播放模式的Game视图中计算独立的物理和光照 , 渲染发生在内容的底层 。 为了让编辑器中的测试能尽可能贴近实际AR设备测试 , 编辑器中的环境将充当现实世界 。
数据传输器则是环境和内容间的数据连接 。 类似于其它AR数据传输器 , Simulation的传输器与应用内容并行存在 , 并且能访问环境中的信息 。 传输器同时兼容播放模式、编辑模式与运行预览功能 , 具备多种数据生成方式 , 而数据源主要为合成、记录和实时三种数据 。
01 合成数据
合成数据是人工生成的数据 , 源自一种于环境场景中实例化的预制件 , 并非现实数据 。 Unity MARS默认带有一套房间、建筑和户外空间等环境的预制件 , 而用户也可自行搭建模拟环境 。
Simulation在发布时就已带有处理合成AR数据的能力 , 包括动作捕捉、地理定位、平面搜寻、点云检测、图片标识检测和光照估量等 , 未来还会有更多功能加入 。 大部分功能可即时捕捉环境预制件中合成对象生成的数据 。
萱草|轻松制作智能化AR体验,Unity MARS Simulation系统原理介绍Simulation系统也能模拟数据探测流程 , 为动作捕捉、点云检测和平面搜寻创造出数据 。 模拟的数据探测可以根据环境预制件(模拟出的“真实世界”)和主摄像机在内容场景(模拟出的“设备”)中的状态 , 来动态地生成数据 。 为了模仿移动设备上的数据探测 , 我们仅在摄像机移动时检测数据 , 并且仅检测位于镜头内的环境 , 来提高模拟的精确度 。 同时移动设备上的平面经常会结合成“一块” , 我们也创建了类似的平面 , 但平面的朝向只能局限于上、下、左、右、前方和后方 。
02 记录数据
Simulation还能通过回放AR的运行记录来捕捉数据 。 记录可使用即将上线的Unity MARS智能助手APP(点击回看)或Simulation系统录制 。 MARS本身也提供有面部捕捉数据的示例记录 。
运行记录数据将储存在Timeline资源内 , 每种数据类型都有各自的轨道 。 记录经由环境场景中的Playable Director播放 , 而应用内容中的模拟对象会与数据轨道绑定 , 以生成实际的数据 。 若想详细了解运行记录的使用 , 请参阅Unity MARS说明文档 。
在Timeline上的运行记录使用方法与普通时间轴相同 , 用户可以修改循环行为、微调轨道上的数据内容 。
萱草|轻松制作智能化AR体验,Unity MARS Simulation系统原理介绍在编辑模式下 , 用户可在Timeline窗口中拖动记录的播放头 。 需要注意的是代理系统和MARS的其它行为并不能逆时间轴播放 , Simulation系统会将播放头的拖动视作一次更改 , 会要求重新同步运行预览 。 在运行重启时 , 记录也会重新开始 , 运行速率会加快 , 以跟上新的时间轴 。 想要详细了解如何编写支持时间轴再同步的行为 , 请参阅Unity MARS说明文档 。
03 实时数据
此类数据源自实时的现实事件 。 Simulation在发布时自带用网络摄像头捕捉实时图像的功能 。 此处的环境便为视频播放器对象和摄像机四方图像 , 应用内容中的数据传输器可传输原始的图像纹理 。 要想从纹理中获取面部捕捉数据 , 需要有第三方应用的许可 。
Unity MARS与AR开发的多层次处理
Unity MARS的数据可以源自AR Foundation、Simulation或自定义的数据生成器 。
所有数据须经过抽象层(包括代理匹配系统使用的Unity MARS数据库) , 及泛用AR功能层处理 , 因此应用和系统可以无视数据的来源设备或软件直接使用数据 。