WWDC Quick Look 💓 By SwiftGGTeam
Create 3D models for Quick Look spatial experiences

Create 3D models for Quick Look spatial experiences

观看原视频

Highlight

Quick Look 在 visionOS 上以 Volume 窗口展示 3D 模型,系统会自动处理初始朝向、地面平面和阴影。开发者需要关注 USDZ 模型的真实世界尺寸、视觉质量和性能优化。

核心内容

Quick Look 的 3D 展示方式

在 visionOS 上,Quick Look 将 3D 模型显示在 Volume 窗口中。Volume 有明确的边界,可以与其他应用并排使用。用户可以自由重新定位 Volume,从不同角度查看模型。

01:14

系统行为:

  • 模型始终放置在 Volume 中心
  • 首次出现时,Volume 会调整朝向使内容正面面对用户
  • 用户可通过 Volume 窗口栏重新定位内容
  • Quick Look 根据用户缩放自动调整 Volume 大小

尺寸与缩放

Quick Look 尊重 USDZ 元数据中的 metersPerUnit 来确定与现实世界的比例关系。

02:32

缩放策略:

  • 极小的模型(如玩具车):施加最小缩放限制,确保内容可见
  • 极大的模型:施加上限限制,避免占用过多空间
  • 中等尺寸模型:按真实世界尺寸 100% 展示
  • 用户可随时点击按钮查看真实世界尺寸

地面平面与阴影

Quick Look 自动在模型下方显示地面平面和阴影,帮助用户理解模型大小和相对地面的位置。

03:56

不要在模型中添加自己的地面平面和阴影,让系统处理这部分工作。

创建 USDZ 的四种途径

  1. 复用现有 USDZ:为 iOS 创建的 USDZ 文件可直接用于 visionOS
  2. 专业 3D 创作工具:创建 3D 内容后导出为 USDZ
  3. RealityKit Object Capture API:扫描真实世界物体生成 3D 模型,支持 iOS 和 macOS
  4. RoomPlan API:创建 2D 或 3D 房屋平面图

04:51

完整工作流案例

Session 展示了设计师 Jerry 创建房间模型的完整流程:

  1. 使用 RoomPlan 样例应用扫描房间
  2. 预览 3D 布局或导出 USDZ 到 Mac
  3. 导入 3D 创作工具添加材质和纹理
  4. 在 Reality Composer Pro 中预览和调整

06:31

详细内容

在 Reality Composer Pro 中预览

Reality Composer Pro 右上角的设备预览按钮可直接在设备上预览 Quick Look 效果。

07:37

常见问题:初始模型朝向不正确。Quick Look 使用右手坐标系,需要在内容创作工具或 Reality Composer Pro 中调整 Y 轴旋转,确保最有趣的部分正面朝向用户。

视觉质量问题

Z-fighting(闪烁重叠)

多个物体在同一位置渲染时会重叠闪烁。解决方案:在创作工具中移除重叠几何体,或增加物体间距。

09:44

高频法线贴图

高频法线贴图在近距离或运动场景中容易产生锯齿伪影。建议使用低频法线贴图,或用几何细节替代。

10:06

小物体渲染

渲染细小物体(如树叶)时,系统在可变光栅化率下可能无法一致采样,导致周边区域闪烁。建议将精细几何细节存入透明度纹理,用更大的三角形网格渲染。

10:22

性能优化

文件大小

  • 更小的文件意味着更快的下载和加载
  • 只包含最终场景实际使用的资源
  • 移除不再使用的旧版本音频、动画和纹理
  • 建议文件大小保持在 25MB 以下

13:42

几何体优化

  • 移除被完全遮挡、永远不会显示的部分
  • 合并小网格为单一较大网格以减少系统负载
  • 单个模型建议:少于 200 个 mesh part,少于 10 万个顶点

15:01

纹理优化

  • 使用灰度图处理非颜色输入以节省内存
  • 将多张灰度图打包到单个纹理的不同通道
  • 尽可能使用材质常量值代替纹理加载
  • 单个 PBR 材质建议最大纹理尺寸为 2K x 2K
  • 使用 8-bit 而非 16-bit 每通道纹理
  • 将纹理预算投入到最能增加真实感的区域

15:51

材质优化

  • 合并共享相同材质的 mesh part 以减少加载时的材质编译
  • 小面积透明或清漆效果使用独立材质,而非在整个模型上使用
  • 避免重叠透明度,实时渲染透明物体计算量更大
  • 烘焙光照或不需要光照的部分使用 MaterialX Unlit surface

16:59

物理优化

  • 减少碰撞体总数
  • 不会移动或不受其他物体影响的实体使用 static collider

18:26

动画优化

  • 限制每个顶点的动画权重数量
  • 变形或蒙皮动画遵循与几何体相同的优化指南

19:17

粒子系统

  • 限制粒子发射器数量
  • 保持屏幕上的粒子数量最小
  • 用更简单的形状和样式实现类似效果,减少 overdraw

19:52

性能分析工具

Statistics 面板:Reality Composer Pro 中的统计面板显示三角形数量、纹理内存使用量等关键指标。

11:55

RealityKit Trace:更高级的运行时性能分析工具,可深入分析单个渲染帧,识别性能瓶颈并给出建议。需要附加到 Quick Look 进程使用。

12:15

核心启发

  1. 用 RoomPlan + Reality Composer Pro 快速创建房间展示

    • 做什么:扫描房间生成 3D 模型,添加材质后在 Quick Look 中预览
    • 为什么值得做:无需专业建模技能,几分钟即可创建可交互的房间 3D 展示
    • 怎么开始:使用 RoomPlan API 扫描,导出 USDZ,在 Reality Composer Pro 中预览调整朝向
  2. 为电商产品创建优化后的 USDZ 预览

    • 做什么:将产品 3D 模型控制在 25MB 以内,确保 10 万顶点以下
    • 为什么值得做:Quick Look 让用户在真实空间中以真实尺寸查看产品,提升购买信心
    • 怎么开始:用 Object Capture 扫描或从 3D 工具导出,在 Reality Composer Pro 的 Statistics 面板检查指标
  3. 用透明度纹理替代精细几何体

    • 做什么:将树叶等细小物体的几何细节烘焙到透明度纹理
    • 为什么值得做:避免可变光栅化率下的闪烁问题,同时减少顶点数量
    • 怎么开始:在 3D 创作工具中创建低多边形模型,用 alpha 贴图控制轮廓
  4. 合并材质减少编译开销

    • 做什么:将共享相同材质的 mesh part 合并
    • 为什么值得做:自定义材质在首次加载时需要编译,合并后减少编译次数
    • 怎么开始:在 3D 创作工具中检查材质分配,将相同材质的子网格合并

关联 Session

评论

GitHub Issues · utterances