32-RealityKit 和 Reality Composer 简介

1,215 阅读4分钟

2019年WWDC的《 Session 603 - Introducing RealityKit and Reality Composer 》 主要内容速览:

  • RealityKit 简介,综合演示.
  • RealityKit 基础特色介绍,深入讲解.
  • Reality Composer 简介与演示.

RealityKit 简介,综合演示

在制作 AR 效果时,一直有各种困难

  • AR 物体与真实世界的交互
  • AR 附着于真实物体
  • 虚拟物体可以影响真实世界
  • AR 效果与真实环境匹配

所以苹果又打出了新的 AR 框架:RealityKit 它有以下特征:

  • AR First
  • 真实感渲染和模拟
  • 以 swift 标准设计
  • 支持 iOS 和 macOS

比如下图,请注意阴影,光照,还有镜头景深(近处清晰,远处模糊),AR 物体与摄像头中的真实世界完美融合在一起。

用 RealityKit 实现上面的效果,只需要 4 行代码,相比 ARKit 也要更方便:

RealityKit 基础特色介绍

如下所示,RealityKit 融合了各种功能以及 ARKit 和 Metal 框架。

Rendering(渲染)

  • 渲染支持基于物理的着色
  • 使用 Metal 技术构建:为苹果 GPU 优化,支持最新特性
  • 专注于 AR

Animation(动画)

支持骨骼动画(Skeletal)与变换动画(transform)

Physics(物理效果)

  • 支持碰撞检测 Collision detection
  • 支持刚体动力学 Rigid body dynamics
  • AR 支持

Synchronization(网络同步)

  • 支持多设备
  • 支持 ARKit 上多人协作地图构建
  • 支持多玩家

Entity-Component System(实体-组件系统)

实体与组件系统,可以让大家更好的创造与继承一个组件,它具有很好的扩展性,并能自动网络同步

Audio(音频)

  • 空间理解
  • 自动监听者配置
  • 在追踪的 3D 物体上播放音频

Reality File

  • 新的文件格式,包含所有供渲染和模拟的数据:如 Mesh,Material,Physics,Audio
  • 为 RealityKit 框架特殊优化
  • 可以从 Reality Composer 导出
  • 支持 AR Quick Look 的预览

框架基础

RealityKit 框架主要由 4 大组件构成:ARView,Anchor,Scene,Entity 四者的组织关系如图所示 在空间中的表现如图

这里重点讲一下ARView的功能

  • 建立环境
  • 处理手势
  • 聚焦于 app
  • 真实感镜头效果

这些功能的具体体现有:阴影(Shadowing),运动模糊(Motion Blur),景深(Depth of Field),摄像机噪点(Camera Noise)

阴影可以让用户更方便地通过视觉确定,AR 物体是浮在空中,还是贴在地面上。 RealityKit 中支持两种地面阴影,可根据性能与表现的需要选择:simple drop shadow 和 retreat shadow 运动模糊是 ARView 自动根据镜头的曝光时间和快门速度来计算出来的 景深效果也同理,根据镜头的光圈和焦距等计算出来 噪点也会让 AR 物体更真实,尤其是在低光照条件下

这里用 gif 不太能看出来,有需要可以去看官网高清视频,机器人头部明显多了噪点

RealityKit 深入讲解,代码演示

Entities and Components

Entity 是一种有效的 3D 资源组织形式,它可以帮你实现不同物体的绑定,相对移动,并能有效减少重复代码。

比如下图,Ball, Lamp, Camera 中的共同行为和特征将会被抽取出来,以免重复

创建一个 Entity 的主要代码如下:

  • AnchorEntity 效果如图 AnchorEntity 是虚拟物体在现实世界的连接点,也是根结点。支持的类型有: 代码如下:

  • ModelEntity ModelEntity 代表了场景中的可见部分,他包含了几何体,动画和物理效果

  • Mesh 默认支持的类型有 4 种:

  • Materials 材质类型有3 种:

  • SimpleMaterial:基于物理的材质类型,模拟了物体与光照、环境相互作用的原理

  • Unlit Material:不可照亮的材质类型,不能被光源照亮,不能被环境影响

  • OcclusionMaterial:用来遮蔽 AR 虚拟物体,露出摄像头的原始环境画面

代码示例如下:

  • Animation 支持骨骼动画和变换动画,创建代码如下:

Reality Composer 简介与演示

Reality Composer 是苹果新推出的 3D 创建工具,支持 macOS,ipadOS 和 iOS。

Content Library(素材库)

Content Library 中有丰富的素材可以让我们选择,并可以根据自己的需要轻松改变素材的形状,材质,颜色

Layout and Pre-Visualization(布局和预可视化)

提供所见即所得的预览方式,让用户更方便调整布局及外观。并且 Reality Composer 工具本身就支持以 AR 方式进行预览,无需再导入 Xcode 打包再用手机预览

Simple Interactions(交互简单)

只需简单几步,就能制作出交互动画

Reality Composer in Xcode(与 Xcode 协作)

当把 reality 文件放入 Xcode 时,会自动生成对应的代码文件,并且支持类型检查等特性,有效减少运行时崩溃问题。

参考

WWDC2019 相关视频