TL;DR
- 介绍苹果为开发者提供的物体拍照建模解决方案:
Realitykit.Photogrammetry
; - 基于 macOS 12.0 的命令行工具
HelloPhotogrammetry
,以及手机采样应用 Capture Sample; - 测试 3D 建模效果。
WWDC2021 增强现实系列主题,以 3D 物体建模开场:
回顾最近几年开发者大会,苹果在 AR 领域的布局逐渐形成由 ARKit、RealityKit 和 USDZ 共同组成的生态系统。ARKit 负责对真实场景的理解,目前已经升级到了 ARKit 5;RealityKit 负责虚拟内容的渲染,目前升级到了 RealityKit 2;USDZ 作为由皮克斯背书的 3D 资源格式,负责苹果 AR 布局中的内容生态。
此前苹果已经开发了自己的 3D 内容编辑工具 Reality Composer,以及能够将其它 3D 格式转换成 USDZ 的 Reality Converter (见前文《RealityKit 开发增强现实应用》),但是对于缺乏 3D 建模以及艺术创作能力的开发者来说,如何创作生动逼真的 3D 模型可能是妨碍他们开发 AR 应用的最大障碍。因此 WWDC2021 AR 系列主题开篇,苹果带来自己的 Photogrammetry 技术。
1. 关于 Photogrammetry
所谓 Photogrammetry,就是利用对真实物体进行多角度拍摄采样,从而生成该物体 3D 模型的技术。这一技术在业界也有非常成熟的解决方案,例如商用软件 Capturing Reality,以及开源软件 MeshRoom :
RealityKit 2 增加了 Object Capture 模块(目前还处于 Beta 状态),提供了 PhotogrammetrySession
接口,开发者可以基于这一接口开发建模工具:
import RealityKit
let inputFolderUrl = URL(fileURLWithPath: "/tmp/MyInputImages/")
let url = URL(fileURLWithPath: "MyObject.usdz")
var request = PhotogrammetrySession.Request.modelFile(url: url,
detail: .full)
guard let session = try PhotogrammetrySession(input: inputFolderUrl) else {
return }
复制代码
官方提供了基于该接口的命令行工具:
2. 测试建模效果
要测试拍照建模的效果,需要对建模物体进行全方位拍照采样,可以用手机、相机甚至是无人机,官方给出的建议是:
- 保持对焦
- 覆盖尽可能多的角度
- 可以翻转物体拍摄不同侧面
- 靠近物体
- 相邻采样的重叠率尽可能超过 70%
- 建议采样数量在 20-200 张图片
为了辅助手机进行采样,苹果提供了一个专门用于采样的 App:
手机拍照采样时会保存 RGB 图像的同时,尝试记录手机当前的角度(Gravity向量),在设备支持的情况下,还会记录图像的深度信息(Depth Data)。完成采样后,可以在手机文件中找到当前采样 Session 的所有文件:
将采样结果 AirDrop 到电脑上,就可以运行命令行工具进行建模了:
./HelloPhotogrammetry InputFolder output.usdz
复制代码
测试了一个简单的建模效果如下(采样21张,无深度图):
如果你想要更加完整、精细的模型,可能需要在一个光照条件良好、背景深度分明且没有杂物的拍照环境下,同时采集RGB和深度信息;或者用单反相机,有更大的景深,也许同样能够得到更加精细的效果。不过我更期待的是如果可以用无人机的环绕模式,拍摄户外更大的模型(如建筑、雕像),看看能够得到什么样的效果!
3. 相关演讲主题
3D 物体建模只是 WWDC21 AR 系列主题的开胃菜,后续还有更多与 3D 内容生成相关的主题:
- AR Quick Look, meet Object Capture
- Creat 3D workflows with USD