Fac9e1b9b501bc62fa7c822fb2bc5f3e
既生瑜何生亮? 苹果 ARKit 与 RealityKit 带来的困惑

说明

苹果一直在 AR 方向上不断努力,2017 年就推出 ARKit,2019 年却又推出了 RealityKit 和 Reality Composer 编辑器。

也许很多 AR 开发者会感觉,ARKit 还没搞熟练呢,RealityKit 就来了,疑惑也随之而生:

  • 是不是现在必须开始转移到 RealityKit 上去了?
  • RealityKit 与 ARKit 有什么不同?
  • 是不是两三年后,ARKit 就被放弃了,只能用 RealityKit 来开发了?


那么现在要开始学习的话,到底应该学哪个呢?

对比

目前,我在实际开发中已经有使用 ARKit 一年多的经验,最近,也看了 Raywenderlich 出的 RealityKit 新书,写了几个 Demo,试用了 Reality Composer。这些问题也在困扰着我,所以先对比一下:

项目 ARKit RealityKit
系统版本 A9 芯片+,iOS 11.0+ iOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+
开发语言 Objective-C, Swift Swift
渲染技术 SceneKit(基于 OpenGL 或 Metal) 未公开(基于 Metal)
渲染特色 同SceneKit,可自定义光照及其他接口 真实感渲染, 仅支持PBR
Shader支持 支持,OpenGL/Metal 文档显示支持 shader,暂无实际使用方式
物理引擎 支持,且可深度自定义 支持拟真物理,少量参数可自定义
手势交互 不支持,需自己编写 支持移动,缩放,旋转等
动画 支持,CAAnimition, SCNAnimation,SCAction,模型自带动画等 支持移动,缩放,旋转等 Matrix 动画,模型自带动画
多人网络 支持,需自己编写 MultipeerConnectivity 相关代码 支持,自带 MultipeerConnectivity 相关属性与方法
音乐音效 3D音效,普通音效,背景音乐 3D音效,普通音效,背景音乐
贴图格式支持 color (NSColor, UIColor, CGColorRef), image (NSImage, UIImage, CGImageRef),layer (CALayer), path (NSString or NSURL), SpriteKit scene (SKScene), texture (SKTexture, id or GLKTextureInfo), NSNumber, AVCaptureDevice/AVPlayer is supported on macOS 10.13, iOS 11 and tvOS 11. 文档中material支持 (colors, shaders, textures, etc.),但目前只有SimpleMaterial``UnlitMaterial两个具体的类
开发模式 OOP+MVC POP+ECS,原生支持Combine框架
top Created with Sketch.