作为一名开发者,我们可能会好奇构建VisionOS系统的App需要哪些新的技术栈呢?哪些以往的技术栈可以继续复用呢?VisionOS下的App和iPhone上的App最大区别是什么?

自VisionPro发布起来,《头号玩家》所构建的世界仿佛就在不远的将来。

作为一名开发者,我们可能会好奇构建VisionOS系统的App需要哪些新的技术栈呢?哪些以往的技术栈可以继续复用呢?VisionOS下的App和iPhone上的App最大区别是什么?

3D世界比2D世界所能承载的信息更多,这是毋庸置疑的。之所以人类困在2D互联网几十年,我认为它是设备的局限,而并非人类交互的最终选择。

一、VR、AR、MR

在介绍VisionOS前,我们先回顾一下 VR、AR、MR、XR 的区别。

(一)虚拟现实(Virtual Reality VR)

虚拟现实(VR)是一种(给人)沉浸式体验,也被称为计算机模拟现实。

简单来说:戴上VR眼镜就隔绝了现实世界。

(二)增强现实(Augmented Reality AR)

增强现实(AR)是指实时的,直接或间接的物理现实环境视图,通过计算机生成的感官输入(如声音,视频,图形或GPS数据)增强(或补充)其视图内的元素。流行的AR应用如“Pokemon Go ”,

简单来说:AR是根据现实场景进行的扩展。

(三)混合现实(Mixed Reality MR)

混合现实(MR),也被称为hybrid reality,是指真实和虚拟世界融合后产生的新的可视化环境,在该环境下真实实体和数据实体共存,同时能实时交互。也就是说将“图像”置入了现实空间,同时这些“图像”能在一定程度上与所我们熟悉的实物交互。MR的关键特征就是合成物体和现实物体能够实时交互。

简单来说:MR 是对 VR 和 AR 的混合,也是当下VisionPro采用的方案。

二、最大的区别:3D空间属性

相比iPhone上App只有2D的概念,VisionOS在3D空间新增了Volume和Space的概念:

  • Space
    • Shared Space (共享空间)
    • Full Space (专用空间)
  • Window
    • Volume

(一)Space概念

1. Shared Space (共享空间)

默认情况下,应用程序会启动进共享空间。就像 Mac 桌面上的应用一样,Shared Space 是应用程序并排存在的地方。

图上标注的ABCD属于不同的应用。

2. Full Space (专用空间)

在游戏、观影等需要独立空间的交互场景下,你可以单独开启一个专用空间。在专用空间中,你可以创建上述Window、Volume、3D 物体等基本元素去与用户交互。

(二)Window 和 Volume 的概念

WIndow 我们最熟悉,简单理解你可以认为Window就是我们在iPhone上开发App的WIndow,但VersionOS的WIndow不仅仅能容纳传统的 Views 视图和交互控件,而且还支持 3D 模型 和 RealityViews 的展示。这就意味着,在 Window 中允许 3D 内容与 2D 内容并存显示。

当然了,既然要涉及展示3D,那肯定要引入新的3D模型组件,那就是 Volume ,Volume也是一个Window,在View的定义上是一样的,唯一的区别是在App中的WindowGroup。

三、SwiftUI : 地位大大提升

作为使用SwiftUI开发过小组件的开发者,我最初接触SwiftUI和现在的SwiftUI已经改头换面,没错,我的意思就是它诞生初期的定位不稳定,且变动非常大,各种基建做得也不是很好。

但!那是不是说 SwiftUI 就不需要重点关注,重点关注 UIKit 就行了呢? 答案是:NO。

在VisionOS中,SwiftUI的地位被大大加强,SwiftUI 专门为 visionOS 添加了3D 场景类型,还为所有场景类型添加了3D 元素和布局选项。

不仅仅是某些特定组件只有SwiftUI支持,而且使用SwiftUI编写的iPhone App可以自动无缝切换到VersionPro上使用。

当然旧的App也支持切换到VersionPro上,但苹果官方极力推荐使用SwiftUI,一句话:你用SwiftUI,VersionPro他们保修!~

四、VersionOS技术栈相关

既然涉及到3D环境下的开发,那么计算机视觉、图形、多媒体专属的领域一定是要点对点的去研究,比如:音频的空间效果、3D模型等等。

但本文面向iOS开发者,所以我们从业务的角度出发,看看VersionOS从业务开发角度出发,我们要掌握什么。

1
2
3
1、SwiftUI 、UIKit:用于构建用户界面。
2、RealityKit:用于渲染 3D 内容、动画和视觉效果。
3、ARKit:环境空间理解。

从上图可以感知到,除了常规的SwiftUI技术外,我们最主要关注两个Kit:RealityKit、ARKit。

(一)RealityKit : 3D渲染利器

RealityKit 是 Apple 的3D渲染引擎,在2019年的WWDC中就将 RealityKit 和 SwiftUI 作为单独的framework进行介绍。

它可以实现物理照明、清晰纹理、金属材质、反光值等一切尽可能模拟出现实世界的工具,它是让你开发的VersionOS App美观的基础。

(二)ARKit : 现实交互的基础

ARKit 可以让我们的App充分利用用户的环境,上面我们也说了,VersionPro是对MR技术的深度应用,所以仅使用RealityKit渲染美观还不够,还需要使用ARKit来实现对外部空间的丝滑交互。

五、小结

技术在爆炸,作为业务人员却不可浮躁,如上文描述可知,切入VersionOS的角度是很多样的:

  • 如果你是iOS业务工程师,在VersionOS你依旧可以玩转SwiftUI和Kit
  • 如果你研究优化方向,那么VersionPro的耗电、卡顿、发热依旧可以发挥在iPhone上的经验

这说明什么? 说明 VersionPro 带来的应用革新,和AI带来的革新不同,VersionPro的革新是基于移动互联网的底座进一步创新,它是一步一步发展而来。