Apple 为我们提供了自动采集系统(Automatic capture),可以自动捕获图像和激光雷达数据,当我们围绕物体旋转的时候,系统会自动选择图像的锐度,清晰度,以及曝光,还会从不同的视角收集激光雷达点。采集时我们可以看到一个类似于采集 FaceID 的转盘,提示我们有哪些区域已经采集好了足够多的图像。
除此之外,对于是否翻转物体,我们可以根据物体的刚性以及纹理来决定。对于刚性物体以及纹理丰富的物体建议进行翻转采集,对于可形变以及对称纹理或是无纹理的物体,则不建议翻转。为了解决这个问题,Apple 也为我们提供了一个 API 来建议对象的纹理是否足以进行翻转。同时提供了如何正确翻转物体的界面引导,对于无需翻转的物体,则建议从三个不同的高度进行采集录制。
3. iOS API
Object Capture 有两个步骤,图像采集(image capture)和模型重建(model reconstruction),我们分别来看这两个部分的 API 使用。
// Capturing for Mac
var configuration = ObjectCaptureSession.Configuration()
configuration.isOverCaptureEnabled = true
session.start(imagesDirectory: getDocumentsDir().appendingPathComponent("Images/"),
configuration: configuration)
要在 Mac 上重建模型,我们甚至不需要写任何的代码,Object Capture 已经集成到 Apple 新的MacOS 应用 Reality Composer Pro 中,具体详情可以查看 Meet Reality Composer Pro,我们只需要将图像导入应用中,选择细节级别,然后获取模型即可。
4. 重建增强(Reconstruction enhancements)
今年,Apple 提高了 Mac 上的模型质量和重建速度,除了进度百分比之外,还提供了预估的重建时间,以及另外两个附加功能:姿势输出(pose output)和自定义细节级别(custom detail level)。
姿势输出:现在我们可以为每张图片申请一个高质量的姿势。每个姿势基于 Apple 计算机视觉算法对该图像对应的摄像机的估计位置和方向生成。要获得姿势,在 process() 函数调用中添加一个姿势请求,姿势将在模型生成前返回,我们可以在 pose 到达输出信息流时处理。
try session.process(requests: [
.poses
.modelFile(url: modelURL),
])
for try await output in session.outputs {
switch output {
case .poses(let poses):
handlePoses(poses)
case .processingComplete:
handleComplete()
}
}
这篇文章为大家介绍了在 iOS 上使用 Object Capture 进行扫描和重建,Apple 通过使用激光雷达和计算机视觉算法帮助用户快速高效创造高质量的三维模型。随着今年发布的 Apple Vision Pro 增强显示设备,AR技术的发展正在迎来新的机遇。可以预见近几年 AR 应用必将迎来一波井喷,Object Capture 也将会在这波浪潮中一展身手,Object Capture 和 AR 技术的结合也将极大地拓展 AR 应用的领域,为人们带来更加丰富的虚拟体验。如果在读完了本文之后你对 Object Capture 感兴趣,不要犹豫,赶紧尝试一下吧!