ARKit 基础

ARKit = AVFoundation + CoreMotion + CoreML

图像/3D检测识别跟踪、人脸遮挡OK?、同时开前后摄像头、多人协作、

景深、地理位置锚点

不包含图形渲染API,使用RealityKit、SceneKit、SpriteKit、Metal等

不足

  • 在运动中做运动跟踪
  • 跟踪动态环境(湖面)
  • 热漂移(手机升温)
  • 昏暗环境

ARSession

管理AR应用的状态和整个生命周期,ARKit API 的主要入口

ARAnchor(AR锚点)

无法添加虚拟元素
将虚拟物体固定到AR场景中

工作原理:

视觉校准技术,使锚点姿态不随着时间变化

使用:

1. 在可跟踪对象上(平面、人脸等)创建锚点
2. 将虚拟物体链接到锚点

使用场景:

  • 虚拟物体“焊接”到某物体上
  • 姿态不变
  • 几个虚拟物体相对位置不变、独立性
  • 提高跟踪性

注意:

  • 尽可能重复使用锚点(独立锚点的对象可以 平移/旋转)
  • 保持物体靠近锚点(1m)
  • 分离未使用的锚点

种类:

  • ARPlaneAnchor 平面
  • ARImageAnchor 2D图像
  • ARObjectAnchor 3D物体
  • ARFaceAnchor 人脸(姿态、表情)
  • ARBodyAnchor 人体
  • ARParticeipantAnchor 多人共享的
  • AREnvironmentProbeAnchor 环境光探头
  • ARMeshAnchor 使用LiDAR重建场景的场景网格的Anchor
  • ARGeoAnchor 地理位置信息

ARFrame(AR帧)

相比于视频流包含了与AR有关的参数

RealityKit

专为AR设计

主要功能:

  • 渲染(反射、阴影)
  • 动画(骨骼/变换 动画)
  • 物理仿真
  • 网络同步:整合了近距离通信框架
  • 实体组件:避免了多继承(swift不支持)的维护问题
  • 3D音效
  • 其他很多功能自动处理

体系架构:

  • ARView
    • 将渲染场景呈现给用户的一个窗口
    • 都包含Scene实例
    • 处理输入交互
  • Scene
    • 放置实体对象的容器
    • 创建ARView时自动创建
    • 可通过ARView的属性访问
  • AnchorEntity
    • 继承自Entity类
    • 挂载了AnchorComponent组件
  • Entity
    • AR应用最基本组成元素
    • 遵循Component协议、包含components集合,用于挂在各类组件
    • 层次结构可以保存到文件中
    • 预定义了8类实体