在WWDC 2023上,苹果发布了Vision Pro头显和全新的visionOS操作系统,并宣布开启空间计算时代。在过去6年里,我们每年都会追踪苹果ARKit的功能迭代与更新,今年虽然移动端ARKit未更新,但推出了一些针对空间计算的ARKit功能,相当有看点。
去年上线的RoomPlan虽然未在WWDC展示应用场景,但因为在MR场景极具潜力,必然针对visionOS进行更新。
总的来说,ARKit、RealityKit、RoomPlan等移动端功能,都将集成并适配全新的visionOS,从而为Vision Pro头显带来与众不同的体验。要知道,苹果为visionOS准备了40多节课程,也足见重要程度。
(资料图)
为了更好的了解Vision Pro和visionOS的特性,今天我们对vision OS开发入门、ARKit、RoomPlan等几个课程进行总结,窥探苹果Vision Pro的更多可能性。
据苹果官网介绍,visionOS主要基于SwiftUI、RealityKit、ARKit几大框架,开发工具则包括Xcode、Reality Composer Pro和Unity。其中大部分是此前就推出的,值得注意的是Reality Composer Pro是一个新的工具,特点是开发者提供了一个预览和准备3D内容的工作流,好处是能帮助全面了解应用开发所需的所有3D模型,以及在场景中的组合方式,加快应用迭代。即使开发者只开发了部分场景,而没有构建一个完整的应用,也能在Reality Composer Pro中快速预览。
此外,开发者也可以通过MaterialX开放标准,在Reality Composer Pro中自定义材质,特点是无需代码,使用节点就能快速制作并预览。
1)窗口视图
我们知道,苹果的空间计算平台建立在开发者熟悉的ARKit基础上,相比于移动端ARKit,特点是是将虚拟和现实深度融合,并结合手和眼等自然输入方式。
在UI设计上也有很大不同,主要由窗口视图、体积视图和Space三大元素组成。其中窗口是一种2D界面,每个应用可以开启一个或多个窗口,窗口可以像macOS窗口那样支持页面重排、大小调整、自由移动/固定。应用界面可包含传统视图和操控机制,同时也可以显示3D模型,比如结合Model3D视图,在2D界面中嵌入动态的3D内容。苹果指出,Model3D与普通图像类似,可直接在应用中加载,并显示用RealityKit渲染的3D模型。
2)体积视图
除了窗口视图外,开发者可以使用体积视图来显示3D内容,有趣的是不同的应用之间可共享一个体积空间。体积视图可在空间中重新定位,并支持从多角度查看。此外,体积视图也是基于SwiftUI场景,基于RealityKit功能来渲染3D,因此对ARKit开发者来讲比较熟悉。
体积视图可看作是窗口的扩展,或是一种3D形态的窗口。相比于窗口,利用体积视图展示3D模型的区别是可全方位展示3D模型,允许用户从多角度查看。体积视图专为Shared Space界面设计,因此显示的3D模型都具有边界(类似于边界框)。
另外,开发者还可以在应用中添加RealityView视图,相比于体积视图,RealityView可在不同坐标显示更多个3D模型。
3)Space模式
visionOS的Space模式主要有两种,一种是不透明背景模式Full Space,另一种则是VST透视背景Shared Space。
在Full Space模式中,visionOS系统会在后台隐藏其他应用,只打开正在运行中的应用。即使在完全沉浸的VR模式中,ARKit应用也可以识别周围场景,允许AR与之互动。
在Shared Space界面中,窗口和体积视图以VST模式显示,允许用户在使用时也能看到周围环境。如果用户想要更沉浸的体验,则可以开启Full Space模式,在该模式下依然可以使用ARKit API的功能,比如在应用中引入复杂的骨骼追踪等等。
通过旋转数码旋钮,用户可以调整背景透视的程度,让UI在完全沉浸和完全透视之间自然过渡。同样,开发者也设置、固定应用背景透视的程度,比如无透视、混合透视或可自由调节。
窗口视图共享:SharePlay
visionOS可以像在macOS那样,允许用户共享任何窗口,包括AR快速查看内容。当人们共享Quick Look 3D模型时,visionOS会同步用户的方向,以及AR比例、动画和上下文信息,允许SharePlay绘画中每个人获得相同的体验,从而实现远程可视化协作。
我们知道,ARKit使用复杂的CV算法来理解周围的场景,以及用户的动作。相比于移动端ARKit,ARKit在空间计算平台的作用相当于一个成熟的系统服务,它深层次融入visionOS系统,为AR交互、VR游戏提供了动力。在WWDC 2023期间,苹果公布了ARKit两大新功能,主要面向空间计算:
1,环境追踪(World Tracking)
该功能允许开发者将AR内容锚定在物理场景中,ARKit会追踪每个锚点的6DoF运动,并更新其位置,确保用户佩戴头显四处移动时,AR图像与周围环境的相对位置保持固定。
WorldAnchor是一种可追踪的锚点,开发者在空间中添加的任何WorldAnchor,都会在系统后台自动保存,每次设备重启后,依然会显示在固定的位置。此外,持续性的锚点位置基于对应的场景,比如你在卧室固定的AR锚点只能在卧室访问,如果你移动到办公室,系统则需要重新测绘空间地图,由于是两个不同的空间,卧室内的锚点也不会出现在办公室中。
2,场景理解(Scene Understanding)
包含了一系列识别周围环境的功能,比如:平面检测(垂直和水平)、场景几何、图像追踪。其中,平面检测为ARKit寻找可放置锚点的水平、垂直表面(Plane Anchor)。识别到的表面可用来固定AR内容,或是优化物理模拟,允许AR与地板、墙壁产生自然交互。
场景几何结构为开发者提供包含多边形网格的锚点(Mesh Anchor),可看作是用一系列多边形网格构成的物理场景模型,可用于预测空间的外观。与平面检测相似,场景几何结构也可以促进AR锚点,以及高保真的物理模拟(比如用作支持物理手势交互的碰撞器)。
而图像追踪,则可以检测到真实场景中的2D图像,并赋予一个基于图像的锚点(Image Anchor),允许开发者在静态图像上放置AR内容。
3,其他更新
值得注意的是,ARKit新增了一项名为Particles的工具,该工具可快速构建云、雨、火花等动态粒子特效,并支持在Reality Composer Pro中预览。
苹果还推出了新的ARKit API,结合了此前在iOS上学到的经验,可以很好的满足空间计算独特的需求。ARKit API由三大要素组成:ARKitSession(功能组合)、DataProvider(场景、手势、平面追踪数据)、锚点。其中DataProvider提供驱动ARKitSession功能的数据。而锚点则意味着,苹果空间计算平台的AR内容需要通过锚点固定在物理空间中,以达到一种持续性的LBS AR效果。苹果解释,锚点代表了AR在真实场景中的位置和方向,部分类型的锚点是可追踪的。
由于Vision Pro头显搭载了多个摄像头和各类传感器,保护用户数据隐私至关重要,为此苹果在系统中确保相机图像帧等数据,不会被上传至客户空间(比如第三方App),而是发送到ARKit守护进程,以便后续算法安全处理。而算法生成的数据结果,还会经过仔细整理,才会发送给请求数据的客户端(以用户授权许可为前提)。
RoomPlan是ARKit 6带来的一项功能,特点是使用基于ARKit的机器学习模型来检测墙壁、窗户、门、缺口等空间元素,通过RoomCaptureView API,开发者可在应用中引入3D空间扫描功能,3D扫描空间后可生成USDZ格式的3D模型。
该工具新增功能如下:
1)自定义AR会话
在近期推送的iOS17系统中,苹果推出了自定义ARSession功能,该功能可将RoomPlan扫描结果与ARKit场景几何和平面检测数据结合,增强混合现实交互。此外,利用ARKit的高质量图像捕捉功能,可优化基于RoomPlan创建的3D建筑模型外观。同时,也可以将RoomPlan数据直接与现有的ARKit应用结合。
2)支持多房间(MultiRoom API)
此前,使用RoomPlan工具,开发者可通过一次扫描生成单个房间的3D模型。而通过MultiRoom API,你可以将房子里不同房间的扫描图像很好的合并,并导出一个统一的USDZ文件,从而解决了房间坐标系不匹配、手动缝合等问题。具体实现主要基于两种方式,一个是连续的ARSession,另一个则是基于ARWorldMap(持续的AR公共坐标)的ARSession的重定位功能。
MultiRoom适合单层住宅,可扫描一到四间卧室、客厅、厨房和餐厅,建议扫描面积不超过186平方米。
为了帮助更多人快速上手RoomPlan,苹果还推出了语音辅助模式,通过语音提示来指导用户进行扫描。
3)可识别物体增多
此前,RoomPlan可识别的房间元素有限,而在升级后,它可以扫描更多类型的房间结构和家具,比如倾斜、弯曲、不均匀的墙壁(用多边形来描述),或是洗碗机、烤箱、水槽等嵌入式厨房元素。此外,还可以分类家具的不同配置,比如单人沙发、L型沙发、方形沙发等等。
通常,RoomPlan模型主要由平面和对象来表示,而升级后,它还可以描述房间内的区域,包括客厅、卧室、厕所、厨房、餐厅。
RoomPlan还新增了一个新的结构:ModelProvider,可将类别和属性的合集映射到模型URL中,在导出RoomPlan扫描数据时,可将3D模型中的每个对象与对应的URL关联。参考:Apple