Highlight
ARKit 6 增加了 4K 30fps 视频、运行中高分辨率照片、HDR、底层 AVCaptureDevice 配置、稳定平面锚点、Motion Capture 改进和更多 Location Anchors 城市支持,让 AR App 能同时获得更高画质和更细的相机控制。
核心内容
AR App 一直要在画质、追踪和性能之间取舍。影视预览、虚拟制作和摄影测量需要更多像素;游戏和交互体验需要更高帧率;扫描和后期处理又希望拿到相机的原始信息。
ARKit 6 的更新集中在这个取舍上。它给高画质场景提供 4K 视频和高分辨率单帧照片,给高对比场景提供 HDR,给需要定制影像风格的 App 暴露 AVCaptureDevice,同时把平面锚点、人体追踪和地理锚点继续向前推进。
这场演讲不是只列 API。它先解释 ARKit 过去如何用 binning(像素合并)把相机图像降到 HD,以换取 60fps 和较低内存占用;再说明 ARKit 6 如何在新硬件上跳过这一步,让 App 直接使用 4K 画面。(02:25)
对于开发者,关键判断很实际:如果 App 做影视、虚拟制作、Object Capture 或摄影,优先看新画质能力;如果 App 是游戏或依赖高刷新率的互动体验,HD 60fps 仍然可能更合适。(06:26)
详细内容
4K 视频模式:为像素饥渴场景准备
(04:10)ARKit 6 可以跳过 binning,直接使用 3840×2160 的图像区域,以 30fps 输出 4K 视频。RealityKit 仍会处理缩放、裁切和渲染;自己写 Metal renderer 的 App 可以继续从 ARSession.currentFrame.capturedImage 取得画面。
演讲提到,开启 4K 要先查询配置是否支持 4K video format,再把它赋给 configuration 并运行 session。(04:49)下面是根据逐字稿中 API 名称整理的最小调用方式:
let config = ARWorldTrackingConfiguration()
if let format = ARWorldTrackingConfiguration.recommendedVideoFormatFor4KResolution {
config.videoFormat = format
}
session.run(config)
关键点:
ARWorldTrackingConfiguration()创建世界追踪配置。recommendedVideoFormatFor4KResolution在设备和配置支持 4K 时返回 4K video format。if let处理不支持 4K 的设备;演讲说明不支持时会返回nil。config.videoFormat = format把 session 切到 4K 视频格式。session.run(config)用更新后的配置启动 AR session。
4K 模式适用于 iPhone 11 及更新机型,以及配备 M1 芯片的 iPad Pro。它的输出是 3840×2160、30fps。iPad 全屏显示时,因为 16:9 画面要裁切两侧,最终渲染可能看起来更放大。(05:25)
使用 4K 时还有一个内存规则:不要长期持有 ARFrame。4K 帧占用更多内存,保留太久会阻止系统释放图像,可能造成渲染掉帧,最后让 ARCamera tracking state 退回 limited。可以通过 Console 警告检查是否持有了过多图像。(05:53)
高分辨率背景照片:不中断 ARSession 拍单张照片
(07:30)ARKit 6 允许 App 在 ARSession 运行期间按需请求一张高分辨率照片。视频流不会中断,也不需要另起一个 AVCaptureSession。在 iPhone 13 上,这张照片可以使用 wide camera 的完整 1200 万像素。
这对 Object Capture 很直接。App 可以用 AR 在真实物体上叠加拍摄引导,再在合适角度触发高分辨率照片,给摄影测量算法更好的输入。(09:06)
先选择支持高分辨率捕获的视频格式:
if let hiResCaptureVideoFormat = ARWorldTrackingConfiguration.recommendedVideoFormatForHighResolutionFrameCapturing {
// Assign the video format that supports hi-res capturing.
config.videoFormat = hiResCaptureVideoFormat
}
// Run the session.
session.run(config)
关键点:
recommendedVideoFormatForHighResolutionFrameCapturing查询支持高分辨率背景照片的 video format。if let避免在不支持该能力的设备上强行配置。config.videoFormat = hiResCaptureVideoFormat让当前配置使用支持 hi-res capture 的格式。session.run(config)启动或重启 session,让该格式生效。
当用户点击屏幕、扫描到目标角度或 App 的其他事件发生时,再触发单帧捕获:
session.captureHighResolutionFrame { (frame, error) in
if let frame = frame {
saveHiResImage(frame.capturedImage)
}
}
关键点:
captureHighResolutionFrame触发一次 out-of-band 高分辨率图像捕获。- completion handler 异步返回
ARFrame和error。 if let frame = frame确认捕获成功后再访问图像。frame.capturedImage是要保存或送入后续处理的高分辨率图像。saveHiResImage代表 App 自己的保存逻辑;真实项目里要尽快写盘或处理,避免长时间持有大图。
HDR:让高对比环境保留更多细节
(11:22)HDR(High Dynamic Range,高动态范围)会捕获更宽的颜色范围,并映射到显示设备。演讲用后院画面对比说明:打开 HDR 后,暗部木栅栏和亮部云层能保留更多细节。
启用 HDR 要检查当前 video format 是否支持:
if (config.videoFormat.isVideoHDRSupported) {
config.videoHDRAllowed = true
}
session.run(config)
关键点:
config.videoFormat.isVideoHDRSupported查询当前 video format 是否支持 HDR。- 演讲说明当前只有 non-binned video formats 支持 HDR。
config.videoHDRAllowed = true允许 ARKit 使用 HDR。session.run(config)用 HDR 设置运行 session。
HDR 会带来性能开销。只有在高对比环境或画质需求明确时才应该打开,例如户外建筑预览、影视分镜、需要保留天空和阴影细节的 AR 拍摄 App。(12:22)
AVCaptureDevice:控制曝光、白平衡和对焦
(12:29)有些 AR App 需要手动控制相机设置,例如曝光、白平衡或触发对焦事件。ARKit 6 让配置可以访问 primary camera 对应的底层 AVCaptureDevice。
if let device = ARWorldTrackingConfiguration.configurableCaptureDeviceForPrimaryCamera {
do {
try device.lockForConfiguration()
// configure AVCaptureDevice settings
…
device.unlockForConfiguration()
} catch {
// error handling
…
}
}
关键点:
configurableCaptureDeviceForPrimaryCamera返回可配置的底层AVCaptureDevice。if let device处理设备或配置不支持直访相机的情况。try device.lockForConfiguration()在修改相机设置前加锁。- 注释位置可以配置曝光、白平衡等
AVCaptureDevice设置。 device.unlockForConfiguration()修改完成后释放配置锁。catch处理加锁或配置失败。
这里要克制。ARKit 的相机画面既是渲染背景,也是场景分析输入。强烈过曝之类的设置会影响 ARKit 分析场景,降低输出质量。(12:58)
ARKit 6 还会在每个 ARFrame 暴露 EXIF tags。它们包含白平衡、曝光等信息,可以用于后期处理或记录拍摄条件。(13:29)
Plane Anchors:锚点方向更稳定,几何变化进入 ARPlaneExtent
(13:53)iOS 15 中,plane geometry 更新时,plane anchor 的 rotation 也会随之更新。这样会让依附在 anchor 上的可视化内容跟着旋转。
iOS 16 中,plane anchor 和 plane geometry 更新被解耦。平面可以继续扩展和更新几何,但 anchor rotation 保持不变。所有平面几何信息进入 ARPlaneExtent,其中 rotationOnYAxis 表示几何在 Y 轴上的旋转。(14:39)
演讲给出的 RealityKit 可视化代码如下:
// Create a model entity sized to the plane's extent.
let planeEntity = ModelEntity(
mesh: .generatePlane (
width: planeExtent.width,
depth: planeExtent.height),
materials: [material])
// Orient the entity.
planeEntity.transform = Transform(
pitch: 0,
yaw: planeExtent.rotationOnYAxis,
roll: 0)
// Center the entity on the plane.
planeEntity.transform.translation = planeAnchor.center
关键点:
ModelEntity创建用于显示平面的实体。.generatePlane(width:depth:)根据planeExtent.width和planeExtent.height生成平面 mesh。materials: [material]给这个平面指定材质。Transform(pitch:yaw:roll:)设置实体方向。yaw: planeExtent.rotationOnYAxis使用几何自己的 Y 轴旋转,而不再依赖 anchor rotation 变化。planeEntity.transform.translation = planeAnchor.center把实体移动到 plane anchor 的中心坐标。
每次平面更新时,都要重新考虑 width、height、center 和 rotationOnYAxis。要启用这个新行为,项目 deployment target 需要设为 iOS 16。(16:16)
Motion Capture 和 Location Anchors:追踪范围继续扩大
(16:34)Motion Capture 增加了 2D skeleton 的左耳和右耳 joint,并改善整体 pose detection。iPhone 12 及更新机型、最新 iPad Pro 和 M1 iPad Air 上,3D skeleton 抖动更少,时间一致性更好;人物被遮挡或靠近相机时追踪也更稳定。要使用这些改进,deployment target 需要设为 iOS 16。
(17:29)Location Anchors 增加了更多地区。演讲列出的新增范围包括加拿大 Vancouver、Toronto、Montreal,Singapore,日本包括 Tokyo 在内的七个都会区,澳大利亚 Melbourne 和 Sydney;稍后还会支持 Auckland、Tel Aviv 和 Paris。
逐字稿给出的可用性检查入口是 ARGeoTrackingConfiguration.checkAvailability:
ARGeoTrackingConfiguration.checkAvailability(at: coordinate) { available, error in
if available {
// Create ARGeoAnchor-based content at this coordinate.
}
}
关键点:
checkAvailability(at:)用于检查某个坐标是否支持 Location Anchors。coordinate是 App 想放置或验证地理 AR 内容的位置。- completion handler 返回该坐标的可用性。
available为真时,再创建基于ARGeoAnchor的 AR 内容。- 这段是根据逐字稿描述整理的调用示例;具体错误处理和锚点创建要按项目需求补齐。
核心启发
-
做一个 AR 取景复拍工具:让用户走到历史照片的拍摄位置,再用 AR 引导构图。ARKit 6 的高分辨率背景照片可以在 session 不停止的情况下保存高清照片;入口是
captureHighResolutionFrame。 -
做 Object Capture 拍摄向导:围绕真实物体显示角度、距离和漏拍提示。ARKit 负责叠加 3D UI,高分辨率照片给摄影测量提供更好的输入,再把结果交给 RealityKit 或 Object Capture 流程。
-
做虚拟制作预览器:在现场用 4K AR 背景合成虚拟道具或场景。先查询 4K video format,再根据设备性能决定使用 4K 30fps 还是 HD 60fps。
-
做可控影像风格的 AR 相机:通过
configurableCaptureDeviceForPrimaryCamera调整曝光、白平衡或对焦事件。适合需要统一色调的品牌滤镜、展陈或影视类 AR App。 -
做稳定的平面标注工具:利用 iOS 16 的
ARPlaneExtent更新尺寸和旋转,让桌面、墙面或地面标注在平面扩展时不被 anchor rotation 带着乱转。
关联 Session
- Create parametric 3D room scans with RoomPlan — RoomPlan 使用 ARKit 和机器学习生成房间的参数化 3D 扫描,适合继续理解空间扫描工作流。
- Bring your world into augmented reality — 这场演讲展示 Object Capture、RealityKit 和 ARKit 如何把真实物体变成可交互 AR 内容。
- Understand USD fundamentals — AR 资产和扫描结果常进入 USD 或 USDZ 管线,这场演讲补充 3D 场景描述基础。
- Qualities of great AR experiences — ARKit 6 解决底层能力,这场演讲讲如何把这些能力设计成清晰的 AR 体验。
评论
GitHub Issues · utterances