一、AR、VR、MR
VR:虚拟现实(Virtual Reality),利用计算机生成一种模拟环境,使用户沉浸到该环境中
AR:增强现实(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,是一种将真实世界信息和虚拟世界信息“无缝”集成的新技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。
MR:混合现实(Mixed Reality),在虚拟世界、现实世界和用户之间搭起一个交互反馈的信息回路,以增强用户体验的真实感。
二、AR和ARFoundation
AR有两种类型:
一种是基于计算机视觉的AR:利用计算机视觉方法建立现实世界与屏幕之间的映射关系,使我们想要绘制的图形或是 3D 模型可以如同依附在现实物体上一般展现在屏幕上。
一种是基于地理位置信息的AR:利用GPS、指南针、陀螺仪和加速度计来实现。
在移动端,各个平台都有自己的一套AR实现API,android使用ARCore,IOS使用ARKit。这增加了我们工作量和开发成本。因此Unity利用其跨平台的优势,开发了一个与平台无关的AR开发工具包ARFoundation,将 ARCore XR Plugin 、ARKit XR Plugin、Magic Leap XR Plugin、Windows XR Plugin 等AR开发工具包,进行了二次封装,统一API。Unity将这个AR开发工具包命名为“ARFoundation”。
ARFoundation降低了开发成本。
三、AR Foundation的架构
unity搭建了一个开放型的架构体系的平台-Subsystems。Subsystems是一系列功能的逻辑分组,一个Subsystems就可以当做是一个AR Foundation功能部分的C#代码。每个Subsystems之间是互相独立的。
四、ARFoundation支持的功能
设备跟踪:跟踪设备在物理空间中的位置和方向。
平面检测:检测水平和垂直表面。
点云:世界坐标空间中的点的集合。
锚点:设备跟踪的任意位置和方向。
光线估算:估算物理空间中的平均色温和亮度。
环境探针:一种用于生成表示物理环境特定区域的立方体贴图的方法。
人脸跟踪:检测和跟踪人脸。
2D图像跟踪:检测和跟踪2D图像。
3D对象跟踪:检测3D对象。
网格划分:生成与物理空间相对应的三角形网格划分。
身体追踪:在物理空间中识别出的人类的2D和3D表示。
多人协作:在共享的AR体验中跟踪其他设备的位置和方向。
人体分割和遮挡:将距离现实世界中的对象的距离应用于渲染的3D内容,从而实现物理对象与虚拟对象的逼真的融合。
射线广播:查询物理环境中检测到的平面和特征点。
直通视频:优化了将移动摄像机图像渲染到触摸屏上作为AR内容的背景。
会话管理:启用或禁用AR功能时自动对平台级配置进行操作。
遮挡:在真实场景中的位置实现虚拟物体遮挡
五、AR支持的手机设备
1. Android:
Android 7.0 或更高版本。
支持的列表:
其中华为手机均不支持ARCore,需要另外使用华为AR引擎。
2. IOS:
目前支持 A9 处理器以上的手机,也就是iPhone 6s/SE以上的版本的手机或iPad产品。
支持的配置:https://developer.apple.com/documentation/arkit/arconfiguration
六、其他AR平台和技术
国内其他AR技术如SenseAR、EasyAR、太虚AR等。
七、参考文献
1. Unity api:Unity - Manual: Unity User Manual 2021.3 (LTS)
2.ARFoundation示例:
https://github.com/Unity-Technologies/arfoundation-samples
3. ARCore:ARCore 和支持的开发环境概述 | Google Developers
4. ARKit:ARKit - 简体中文文档 - Apple Developer