WWDC Quick Look 💓 By SwiftGGTeam
Discover area mode for Object Capture

Discover area mode for Object Capture

观看原视频

Highlight

Area mode 跳过 bounding box 检测步骤,直接用 startCapturing 即可进入户外区域扫描,配合 Mac 端 Quad Mesh 和 16K 纹理可产出影视级 3D 模型。

核心内容

Object Capture 之前的物体模式要求你围绕一个可移动的物体走一圈、设置 bounding box、再逐面拍摄。这对桌面上的花瓶很好用,但遇到户外地形、靠墙的浮雕、无法绕行的岩壁就力不从心——你根本没法走一圈,也没法把整面山坡翻过来扫底部。

Area mode 专为这类场景设计。它去掉了 bounding box 检测环节,将准星变成一把”刷子”:你在表面上方缓慢移动,系统自动连拍并重叠。拍摄完毕还可以用新增的 camera pose visualization 回查覆盖范围,确保在离开现场前拿到足够数据。模型直接在 iPhone 上生成,也可以导出到 Mac 做更高质量的处理。

在 Mac 端,今年新增了 Quad Mesh 输出和最高 16K 纹理。Quad Mesh 带有合理的 edge loop,方便在 Blender 等 DCC 工具中做 UV 编辑和骨骼绑定;16K 纹理则让大场景和 VFX 离线渲染的细节大幅提升。在统一内存充裕的 Mac 上,最多可处理 2000 张图片。此外,新的 Data Loading API 让你只需几行代码就能加载带深度、重力等元数据的 PhotogrammetrySample,并附加自定义 objectMask 来排除干扰前景。

详细内容

iOS 端:进入 Area Mode

去年的调用流程是 start -> startDetecting(设置 bounding box)-> startCapturing。Area mode 不需要新 API:直接跳过 startDetecting,调用 startCapturing 即可进入区域扫描 UI(03:41)。

同时建议用新增的 hideObjectReticle modifier 隐藏物体模式的准星框,让用户从一开始就明确处于区域模式(04:06)。

拍摄注意事项:

  • 户外选择阴天或阴影处,避免硬阴影
  • 沿规律路径缓慢移动,保证图片重叠
  • 从不同高度拍多行,覆盖各角度
  • 超过 6 英尺的区域建议在 Mac 上以高精度处理
  • 支持 iPad Pro 2021、iPhone 12 Pro 及后续机型

Mac 端:Quad Mesh 与 16K 纹理

Mac 上的新 Sample App 提供可视化界面选择图片文件夹、设定输出类型。今年新增两种输出:

  • Quad Mesh:四边形网格,带 artist-friendly edge loop,适合后续 UV 编辑、骨骼绑定和动画
  • 16K 纹理:自定义 detail level 最高 16K,大场景和离线渲染受益明显(05:19

在统一内存充裕的 Mac 上可处理最多 2000 张图片(05:37)。

Data Loading API:自定义 Mask 与 Pipeline

当拍摄背景不可控或有动态遮挡物(如手挡住被摄物),可以给每张图片附加 objectMask,告诉重建算法哪些像素是前景。今年的新 API 让加载过程从数百行简化到几行:

func loadSampleAndMask(file: URL) -> PhotogrammetrySample? {
    do {
        var sample = try PhotogrammetrySample(contentsOf: file)
        sample.objectMask = try loadObjectMask(for: file)
        return sample
    } catch {
        return nil
    }
}

关键点:

  • PhotogrammetrySample(contentsOf:) 是新的同步初始化器,从图片文件自动加载 RGB、深度图、重力向量等所有可用元数据(08:30
  • sample.objectMask 属性接收自定义位图 mask,将干扰区域排除出重建
  • 失败时返回 nil,后续 compactMap 会自动跳过
func createCustomPhotogrammetrySession(for images: [URL]) -> PhotogrammetrySession {
    let inputSequence = images.lazy.compactMap { file in
        return loadSampleAndMask(file: file)
    }
    return PhotogrammetrySession(input: inputSequence)
}

关键点:

  • images.lazy 确保不会一次性把所有图片载入内存,session 迭代时逐张加载(09:30
  • compactMap 自动忽略加载失败的 nil 元素
  • 返回的 PhotogrammetrySession 可直接用标准 request 处理重建

此外,Object Capture 拍摄的图片现在还包含 camera transform、intrinsics matrix 和校准数据,可用于自建后端重建管线或高级可视化(10:35)。

核心启发

  • 做什么:户外场景 3D 采集 App。用 Area mode 让用户在徒步、旅行时直接用 iPhone 扫描岩石纹理、花园地形、墙面浮雕,一键生成可在 visionOS Quick Look 中查看的 3D 纪念品。为什么值得做:现有 3D 扫描 App 大多只支持物体模式,户外大场景是空白市场。怎么开始:基于 Apple 官方 Sample App,去掉 startDetecting 调用,添加 hideObjectReticle,接入区域模式。

  • 做什么:电商/房地产 3D 展示管线。在 Mac 端用 Quad Mesh 输出 + 16K 纹理处理拍摄数据,产出可直接在 Blender 中编辑的高质量模型,用于产品展示或室内空间预览。为什么值得做:Quad Mesh 的 edge loop 让美术师能快速 UV 重整和绑定,16K 纹理让大场景细节不糊。怎么开始:在 Mac Sample App 中选择 Quad Mesh 输出类型,设置 detail level 为 16K,导出 USDZ 后在 Reality Composer Pro 中做最后调整。

  • 做什么:自定义重建管线。利用 Data Loading API 加载带 camera transform 和 intrinsics 的 PhotogrammetrySample,构建自己的后端重建或 SLAM 管线,或开发拍摄质量可视化工具。为什么值得做:camera transform 和 intrinsics 以前无法直接获取,现在每帧都有,可以做拍摄覆盖热图、实时重定位等高级功能。怎么开始:用 PhotogrammetrySample(contentsOf:) 加载图片,读取 cameraTransformintrinsicsMatrix 属性,在 SwiftUI 中绘制 3D 相机位姿可视化。

关联 Session

评论

GitHub Issues · utterances