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 相关视频