本文将带你从开发者的角度,了解本次 WWDC 中 vsionOS 2 更新了哪些功能。我们分为 ARKit 部分、 RealityKit 部分 、SwiftUI 部分、 Metal 与 WebXR 等主要模块进行梳理。
其中: ARKit 为 Vision Pro 提供 6Dof 追踪,场景理解和识别等功能。
RealityKit 为 Vision Pro 提供原生 3D 渲染、动画、物理模拟、多人共享与协作等功能。
SwiftUI 在 visionOS 中提供了很多系统级功能的支持,是 2D 与 3D 之间的桥梁。如 2D 界面、窗口管理、系统级预览等。
Metal 与 WebXR 为 Vision Pro 提供第三方渲染的功能,由其他第三方引擎(如 Unity、UE、Godot、WebXR 等)实现渲染与动画功能。
ARKit 更新
由于 Vision Pro 的正式版在今年 2 月才发售,至今只有 4 个多月,因此本次 WWDC 只添加了很多的优化,但除了企业功能外并没有特别重大的新增更新。
除了企业级功能外,真正新增的只有环境光照估计、物体识别与追踪、房间识别与追踪这三个功能,另外手部追踪使用预测的方法优化了延迟,平面识别支持了倾斜平面。
相关 Session
企业级功能
企业级更新了一系列重大功能,带来了更多可能性:
- 开放主相机视频数据
- ReplayKit 录屏可以录制透视影像
- 神经网络引擎访问
- 条形码与二维码识别
- 物体追踪参数可调整
- 提高了功耗墙
相关 Session
RealityKit 更新
本次 RealityKit 更新很多,主要涉及几何网格创建、骨骼动画与 IK(逆向运动学),还推出了 TabletopKit
来专门处理多人协作/对战。同时本次更新弥补了手机 AR 与 Vision Pro 开发上的巨大差异,统一了开发 API 形式和功能,简单说就是将完善后 Vision Pro 的 API 复制到了 iOS、iPadOS 和 macOS 上。
跨 Apple 平台支持
去年 visionOS 推出后,不仅 API 形式与 iOS 平台有巨大差异,同时功能也互相不同:iOS 不支持 ShaderGraph
、传送门,而 visionOS 不支持 CustomShader(CustomMaterial),不支持灯光,不支持物体识别……
今年,苹果先完善了 visionOS 的功能:增加灯光功能、物体识别追踪功能等,然后将几乎全套 API 搬到了 iOS 18+ 和 macOS 15+ 上,用 SpatialTrackingSession
统一了开发 API 形式与功能,开发者只需关注少数不同之处即可:比如输入方式、交互方式。SpatialTrackingSession
同时还带来了新的隐私数据访问方式,可以从 AnchorEntity 中直接获取隐私数据了。
以手部追踪为例:以前,无需申请权限即可使用 AnchorEntity 获得手部的 Entity 并将自己的模型放置于手部 Entity 下面跟随移动,但无法获得手部的世界坐标位置信息,也无法与其他物体产生物体碰撞与交互,无法获取手部内的关节信息。如果需要这些手部详细信息,需要通过
ARKitSession
申请用户授权,并从 ARKit 中获取才行。 现在,使用SpatialTrackingSession
也可以申请用户授权,用户同意后直接从 AnchorEntity 中获取世界坐标位置和关节位置,并可启用碰撞功能。即使用户不授权,也仍然可以显示出 3D 模型跟随手部移动。
对于 iOS 和 iPadOS 平台已经存在的应用和游戏,苹果也在 game 相关 session 中给出了平滑迁移的一系列建议。
目前来说,iOS 上仍有少数一些独占功能:ObjectCapture
、RoomPlan
、FaceAnchor
、BodyAnchor
、GeoAnchor
、PostProcess
等,希望以后也可以来到 visionOS 平台,涉及隐私的也可以以企业级 API形式来提供。今年,ObjectCapture
功能也进行了迭代更新,简化了 iOS 端的操作,macOS 则提供更加强大的纹理和网格设置。
- Discover RealityKit APIs for iOS, macOS and visionOS
- Explore game input in visionOS
- Bring your iOS or iPadOS game to visionOS
- Discover area mode for Object Capture
动画、几何、渲染、空间音频
动画方面更新了骨骼动画与 IK(逆向运动学),还有 BlendShadpe 与 Action 动画。 物理模拟支持了更多 Force 类型,并支持 Joint 连接。
几何方面新增 LowLevelMesh
,优点是能自定义几何体内存结构,更高效的修改更新以及与 Compute Shader
方便融合等。还提供了根据 SwiftUI.Path
直接挤压拉伸生成 3D 网格的 API,非常实用。
渲染方面,首先终于有了剔除面配置,可设置不剔除来显示双面材质。另外 3D 模型的 HoverEffect 也可设置 ShaderGraph
自定义效果了。还新增了动态灯光与阴影组件,传送门穿越渐变效果组件。
音频新增 AudioGeneratorController
实时音频流的播放控制器,用于处理程序性生成音频。
最后,今年终于有了 RealityKit 的 Debugger 功能,不用再羡慕以前 SceneKit 的 3D 调试功能了!对开发者真是天大的好消息!!!
除了 Debug,苹果还在 3D 资产优化篇中给出了一系列的性能优化方法,比如多边形数量的限制参考值:沉浸式不超过 50 万,共享空间不超过 25 万三角形,10 万是安全值。
- Compose interactive 3D content in Reality Composer Pro
- Build a spatial drawing app with RealityKit
- Enhance your spatial computing app with RealityKit audio
- Optimize your 3D assets for spatial computing
- What’s new in USD and MaterialX
- Break into the RealityKit debugger
音视频播放
用 Vision Pro 观影,是目前的一个重大需求,本次 WWDC 讲解了 2D 多视角视频的窗口管理功能 ,3D 图像/视频的不同格式区别,它们的播放与录制知识。
还讲解了利用 Docking Region
、Reverb
、Virtual Environment Probe
等实现自定义观影环境功能。为了理好示范观影环境功能,苹果还把去年的 Demo:Destination Video
进行了更新,用上了这些新的环境功能。同时,环境功能也可以在 SharePlay 中使用。
- Explore multiview video playback in visionOS
- Build compelling spatial photo and video experiences
- Enhance the immersion of media viewing in custom environments
SharePlay
今年 SharePlay 除了看电影,还专门推出了 TabletopKit
这个框架,来处理多人协作与游戏的情况,可以更方便地处理他人与桌面场景的相对位置与交互。
今年还提供了个 Persona templates
来设置 SharePlay 中形象。
SwiftUI 与系统功能更新
visionOS 中的窗口样式是通过 SwiftUI 管理的,今年新增了一系列方法来调整内容与窗口,包括尺寸、样式、位置等。
Volume 样式的缩放调整,Ornament 和 ToolBar 的使用,同时还有 ViewPoint 调整,World alignment 调整等。
Immersive 样式新增了不同窗口的坐标转换,可以让同一个 App 的多个 RealityView 互相计算出相对位置。Immersive 样式新增了 SurroundingsEffect
功能,可以给透视画面叠加颜色(tintColor)。
SwiftUI 中 2D UI 的 hover effect 也新增了成组、延迟等新功能,与前面讲到的自定义 3D 模型 hover effect 一起使用,可以极大增强 UI 层面的交互效果。
另外,由于 iOS/macOS 的 3D 文件预览(QuickLook)前些年从 RealityKit
切换到了 Storm
,导致对 USD 文件特性和 MaterialX 材质支持与 RealityKit 中显示效果有轻微不同,今年也进行了更新,双方支持的特性统一了起来,显示效果也更接近。
新的预览可以简单修改大小、方向与颜色等,USD 格式转换工具集成在访达(Finder)中,可用右键直接调用导出为 USD 格式。新推出的 PreviewApplication API
可以让你只需几句代码就将 3D 预览集成在你自己的 App 中,得到系统级的平滑切换与拖拽操作支持。
- Work with windows in SwiftUI
- Dive deep into volumes and immersive spaces
- Create custom hover effects in visionOS
- What’s new in SwiftUI
- What’s new in USD and MaterialX
- What’s new in Quick Look for visionOS
- Get started with HealthKit in visionOS
Metal 与 WebXR 更新
本次更新之后,使用 Metal 渲染也可以带有透视效果了,以前第三方渲染只能使用 full immersive
功能,背景黑乎乎无法看到透视画面,现在可以使用带有透视的 mix
样式了。同时自带的 Safari 浏览器默认支持 WebXR 功能,不用自己手动去设置里打开了。
相关 Session
- Render Metal with passthrough in visionOS
- Optimize for the spatial web
- Build immersive web experiences with WebXR
设计与其他
UI 与 UX 设计也是苹果关注的重点,很多在 visionOS 上推出产品的团队(比如 Encounter Dinosaur 团队)都谈到了他们的设计过程和原理。
相关 Session
- Design great visionOS apps
- Create custom environments for your immersive apps in visionOS
- Design interactive experiences for visionOS
总结
本次更新后,visionOS 的功能已经很接近完整了,除了因为隐私问题暂不提供的功能外,目前的功能已经可以应对开发一个中等规模的 App 了。而 Metal 渲染与 WebXR 的更多支持,也会吸引更多第三方游戏进行 Vision Pro。
最后,希望明年 WWDC25 推出更多 AR 功能~