为 Quick Look 空间体验创建 3D 模型
Create 3D models for Quick Look spatial experiences
2023年6月5日
一句话判断
从 RoomPlan 扫描房间到 Reality Composer Pro 预览调优,这场 Session 是空间计算平台 3D 内容创作的完整工作流指南——覆盖模型创建、尺寸适配、视觉质量检查和性能优化。
这场 Session 讲了什么
AR Quick Look 团队的 Shuai Song 讲解了如何在空间计算平台上为 Quick Look 创建高质量 3D 模型。
Quick Look 在新平台上以 Volume 窗口形式展示 3D 模型。系统会自动处理初始朝向(让模型正面朝向用户)、自动添加地面平面和阴影、根据模型真实世界尺寸设定初始缩放。
创建 USDZ 模型有四种途径:复用 iOS 版 USDZ 文件、用专业 3D 创作工具导出、用 RealityKit Object Capture API 扫描实物、用 RoomPlan API 创建房间平面图。Session 用一个完整的案例展示了从 RoomPlan 扫描到 Reality Composer Pro 预览的全流程。
视觉质量方面,Session 讨论了 Z-fighting(闪烁重叠)、法线贴图锯齿、小物体渲染、模型朝向等常见问题的解决方案。性能方面介绍了实例化渲染、LOD(细节层次)和动画范围控制等优化手段。
值得深挖的点
自动尺寸适配的三段策略:极小模型(如玩具车)会被放大到最小可视尺寸;极大模型会被缩小到上限以内;中间尺寸的模型以真实世界 1:1 比例展示。这个设计确保所有内容都能被舒适地查看。
地面平面和阴影的自动处理:Quick Look 自动在模型下方添加地面和阴影,帮助用户理解模型的尺寸和空间位置。Session 明确建议不要自己添加地面和阴影,避免与系统效果冲突。
初始朝向的重要性:模型首次出现时正面朝向用户,所以”正面”到底是哪个方向很关键。Quick Look 使用右手坐标系,需要确保模型在创作工具中朝向正确的方向(-Z 轴朝前)。
动态缩放与 Volume 自适应:用户缩放模型时,Quick Look 会自动调整 Volume 窗口的大小。动画和交互应该保持在 Volume 的边界内。
代码片段
// 在应用中打开 Quick Look 预览
// 只需要拖拽 USDZ 文件或使用 QLPreviewController
import QuickLook
class PreviewController: QLPreviewControllerDataSource {
let url: URL // USDZ 文件 URL
func numberOfPreviewItems(in controller: QLPreviewController) -> Int { 1 }
func previewController(_ controller: QLPreviewController,
previewItemAt index: Int) -> QLPreviewItem {
return url as QLPreviewItem
}
}
// USDZ 元数据 - 设置单位比例
// 在 USDZ 文件中指定 metersPerUnit
// 确保模型以正确的真实世界尺寸显示
{
"metersPerUnit": 1.0 // 1 单位 = 1 米
}
最佳实践
- 使用矢量资产而非位图:空间计算中模型可能被近距离查看,位图纹理在高倍放大时会模糊。
- 避免高频法线贴图:在近距离或运动场景中容易产生锯齿伪影。用低频法线或几何细节代替。
- 消除 Z-fighting:重叠几何体会闪烁。在创作工具中移除重叠或增加间距。
- 确保模型正面朝向正确:在 Reality Composer Pro 中预览确认初始朝向,用 Y 轴旋转调整。
- 动画保持在 Volume 边界内:超出边界的动画部分不可见。
还有什么值得关注
- Reality Composer Pro 是新平台内容创作的核心工具,提供设备预览功能。
- Object Capture 支持在 iOS 和 macOS 上创建不同细节等级的 3D 模型。
- RoomPlan 扫描的房间模型可以直接导入 Reality Composer Pro 进一步加工。
- 小于 2mm 的细薄物体(如树叶)在空间计算中渲染效果不佳,需要特殊处理。