大多数浏览器和
Developer App 均支持流媒体播放。
-
为快速查看空间体验创建 3D 模型
了解在 VisionOS 上为快速查看创建 3D 内容的最佳实践。我们将探索几种为快速查看准备模型的方法,讲解 3D 质量和性能的重要注意事项,并向你展示如何使用 Reality Composer Pro 和 Reality Trace 为你的内容做检查和微调。
资源
相关视频
WWDC23
-
下载
♪ 悦耳的器乐嘻哈 ♪ ♪ Shuai Song:大家好 我是 Shuai Song 我是 AR Quick Look 团队的 一名工程师 今天 我将向你讲解如何 为快速查看空间体验 创建 3D 模型 在我们开始之前 先来了解一下什么是快速查看 以及在我们的新平台上如何使用它 来呈现 3D 内容 在另一个讲座 “探索快速查看的空间计算”中 我们向你展示了 这个优美的房间 3D 模型 这是我们用新的 Room Plan API 创建的 我们只需从 App 窗口中 拖动出一个 USDZ 文件 就可以将此模型放入快速查看 在我们放置的地方 会打开一个快速查看预览 然后 你就可以使用熟悉的手势 与快速查看以及我的内容进行交互 在我们深入讲解 这个模型背后的故事之前 我们先来介绍一下在快速查看中 系统是如何展示 3D 内容的 在这个平台上 快速查看在空间容器窗口中 显示 3D 模型 空间容器窗口定义了界限 所以可以与其他 App 共享 人们可以在空间中 重新定位空间容器 也可以从不同角度进行查看 3D 模型总是放置在 空间容器的中心 当模型首次出现时 快速查看会调整 空间容器窗口的方向 使内容直接面向你 在这里 你可以使用 3D 模型 下方的空间容器窗口栏 自由地在空间中重新定位内容 快速查看会根据人们在预览会话中 缩放模型的方式 自动调整空间容器大小 需要注意的是 如果你的内容中使用了动画 我们建议将所有动画保持在 快速查看的空间容器 所定义的界限内 我们刚刚介绍了 快速查看显示 3D 内容的基本知识 关于快速查看如何使用 模型尺寸和比例 还有其他注意事项 我们来看一下 加载 3D 模型时 快速查看会遵从 USDZ 元数据中 定义的 metersPerUnit 值 以确定相对于现实世界的比例单位 为了帮助人们可视化 资源的大小 如果模型是在 一定尺寸范围内编写的 那么快速查看最初将尝试 以 100% 的比例呈现模型 我们来看一个例子 快速查看实行最小缩放要求 确保你可以观赏所有的内容 甚至是尺寸非常小的也可以 比如这辆锡制小汽车 快速查看还使用了上限限制 以防你查看的对象非常大 要确保它们与其他 App 一起 不会占用太多空间 对于尺寸介于两者之间的对象 比如这个茶壶 最初在空间中启动时 快速查看将使用 模型在真实世界的大小 要记得 只要点击 空间容器窗口下方的按钮 你随时可以观看模型的真实大小 现在 我们知道了快速查看 如何操作模型尺寸 我们再来看一下 快速查看在显示内容时 添加的两样东西:接地面和阴影 快速查看会自动在模型下方 显示接地面和阴影 以便让你更好地了解 模型的尺寸及其相对于地面的位置 因为快速查看为你做了这件工作 我们建议你就不要为模型添加 自己的接地面和阴影了 目前为止 我们讲解了快速查看 展示 3D 内容的基础知识 我再来介绍一下 本节讲座其余的内容安排 首先 我们要看一下 创建 3D 模型的几个方式 接下来 我们将讨论如何检查 内容的视觉质量 并根据需要进行调整 最后 我们将介绍如何确保 你的 3D 内容能够以 出色的性能进行渲染和运行 让我们开始准备你的 3D 内容吧 快速查看接受 USDZ 作为其处理 3D 模型的主要格式 USDZ 是 Apple 平台 3D 内容的核心 它采用轻量化设计 并针对阴影进行了优化 我们来看一下如何创建 USDZ 文件 创建 USDZ 文件有很多方法 首先 如果你之前已经创建了 适用于 iOS 的 USDZ 文件 那么在这个新平台上 这一文件也 适用于快速查看 如果你想从头开始 创建一个新的 USDZ 文件 可以使用专业的数字内容创建工具 来创建 3D 内容 然后导出为 USDZ 文件 你还可以使用我们的 RealityKit Object Capture API 扫描 3D 模型 并创建一个 真实世界对象的 USDZ 文件 Object Capture 为你提供端到端 摄影测量解决方案以及示例 App 帮助你创建 不同细节级别的 3D 模型 iOS 和 macOS 设备 都支持 Object Capture 最后 如果你想为你的房子 创建一个 2D 或 3D 平面图 那么你可以使用 我们提供的 RoomPlan API 还记得我刚刚提到 之前展示的 3D 房间模型 有一个背景故事吗? 让我们深入了解一下 我们的 3D 设计师 Jerry 创建这个 3D 模型的工作流 首先 Jerry 使用 RoomPlan 示例 App 扫描他的房间 只需很短的时间 他就可以预览房间的 3D 布局 或者将 USDZ 文件 直接导出并投送到他的 Mac 上 接下来 Jerry 将 3D 模型导入到 3D 内容创建工具中 将他的设计理念变成现实 这就是这项工作的成果 模型看起来非常好 可以看到墙上、地板上 和一些其他房间元素上 都添加了材质和纹理 现在 Jerry 创建的房间模型 几乎可以在快速查看中预览了 很幸运 我们有了一款新工具 名为 Reality Composer Pro 使接下来这一步变得非常简单 为快速查看预览你的 3D 模型 是内容创建工作流中 非常重要的一步 可以检查模型的真实质量 并根据需要进行调整 让我们来仔细看一下 这就是 Reality Composer Pro 主视图中加载了我们的 3D 模型 只需点击位于 Reality Composer Pro 右上角的按钮 你就可以在设备上轻松预览 快速查看中的 3D 模型 这是同一个 3D 模型 在快速查看中运行的样子 现在我们可以注意到 最初的模型看起来方向并不正确 正如之前所说 确保 3D 模型中 最有趣的部分面向你是非常重要的 这样才能创造引人入胜的体验 让我们看看如何解决这个问题 快速查看使用的是右手坐标系 知道了这一点 我们就可以 很容易地在内容创建工具中 或 Reality Composer Pro 中 解决 3D 模型的方向问题 在这个例子中 我们需要在垂直轴上旋转模型 就可以看到模型中的客厅了 在这里围绕 y 轴旋转 90 度 即可解决这个问题 就像这样 让我们再使用 Reality Composer Pro 的设备预览 来查看一下我们对模型做出的更改 现在方向问题已经解决了 我们可以更好地观看 这个漂亮的模型了 好的 我们再深入探索一下 这项资源 从不同的视角了解更多细节 为此 你可以使用 双指捏合并拖动的手势 旋转 3D 模型 从不同的侧面来观看 这样我可以很好地观看到 房间的不同部分 你还可以使用双手捏合手势 缩放模型 看到更多细节 现在我们已经了解了 如何在设备上的快速查看中 检查你的 3D 模型 我们再来谈谈 提高内容视觉质量的一些注意事项 当多个对象在同一位置渲染时 它们就会重叠 并显示为单个闪烁的对象 若要减少此类问题 可以使用 3D 创建工具 通过删除重叠 或增加闪烁对象之间的距离 来优化网格几何体 尽量避免使用高频法线贴图 因为它们会导致混叠问题 从而可能产生多余的残影 尤其是在运动中或近距离观察 3D 模型的时候 当渲染小的或薄的对象时 比如树叶 在可变光栅化速率下 系统可能不会 随着时间的推移而持续被采样 这可能会导致外围闪烁 为了最大限度减少这个问题 你可以尝试 将精细的几何体细节存储到 不透明的纹理中 然后使用三角形网格 较大的几何体来渲染它 要了解更多关于 可变光栅化速率的信息 请查看我们的 “探索空间计算的渲染”讲座 接下来 我们来关注一下性能 在这里 我们将研究快速查看 3D 内容的解剖结构 以及如何确保流畅无缝的 快速查看空间体验 我们开始吧 有很多因素决定了快速查看中 渲染内容的 3D 性能 比如 3D 模型的文件大小 或纹理的计数和分辨率 甚至模型所用 材质的复杂性 为了知道从哪里开始优化 3D 模型 来提高性能 你需要首先确定 资源可能存在的潜在限制 为了简化这项任务 我们今年推出了 一些有用的新工具 可以显著优化你的工作流 我们来看一下 这里 我们回到 Reality Composer Pro 中 向你展示一下数据统计面板 这个面板可以向你提供很多关于 你的 3D 模型特征的有用信息 例如三角形的数量 以及内容中使用的纹理的内存量 另一个可以使用的 很棒的工具是 RealityKit Trace 这个工具可以做到 更高级的运行时间分析 RealityKit Trace 可以 对特定渲染管线提供深入分析 它能让你获得有关 3D 内容的各个渲染帧的更多信息 通过分析几个捕获帧 RealityKit Trace 可用于识别和诊断 潜在的性能问题或限制 并为你提供建议 RealityKit Trace 通过 Xcode 不断构建 如果要用它分析 你在快速查看中的内容 就需要将它附加到快速查看进程中 更多关于 Reality Composer Pro 和 RealityKit Trace 的信息 请查看以下讲座 现在我们已经了解一些 帮助你分析 潜在性能限制的工具 下面我们来介绍一些最佳实践 帮助你优化 3D 内容 提高性能 之前我提到了决定 快速查看中 3D 内容性能的不同因素 现在 我们逐个看一下 如何相应地优化内容 首先是优化你的模型文件尺寸 越小的文件通常下载速度更快 加载时间更短 你并不希望用户要等很久 才能与你的内容交互 其中诀窍就是要在资源质量和 文件大小之间找到一个优化的平衡 比如 你可以使用不那么精细的纹理 或质量较低的音频源 有时候 资源是在 几个迭代周期内开发的 通常包括对链接到资源的 底层音频、动画和纹理的更改 为了将文件尺寸最小化 请确保文件仅包括分发的 最终程序包中真正使用的内容 比如 场景中不再使用的 旧版本音频文件 应在分发前从最终资源中移除 最后 为了确保更好的分享体验 我们建议你将文件大小保持在 小于 25 兆字节 (MB) 接下来 我们来看一下如何优化 3D 内容几何图形的性能 同样 这里的诀窍也是找到 展现出色细节和 实现卓越性能之间的平衡 如果你的模型使用的部件 被另一个几何体隐藏或完全覆盖 也就是这部分 永远不会显示在屏幕上 你就可以删除它们 以节省性能预算 另外 也可以考虑将小网格合并为 一个较大的网格 以减少系统负载 对于单个模型来说 我们建议你将其保持在 200 个网格部件 和 10 万个顶点以下 始终要记得将网格细节与场景中的 另一资源保持平衡 接下来 我们讲一下纹理 纹理会使用大量内存 自动化纹理消耗的内存较少 就可以同时加载更多的资源 帮助复杂的场景平稳运行 节省纹理预算的一种方法是 对非彩色输入使用灰度模式 在某些情况下 你甚至可以将灰度图像 打包到颜色纹理上的各个通道中 从而将多个灰度贴图 存储到单个纹理中 如果可能 请在材质中使用常数值 而不要从纹理加载 如果你的模型 仅使用单个 PBR 材质 我们建议的 最大纹理尺寸为 2K×2K 并且请使用 8 位每纹理通道 而不要使用 16 位 最后 请确保始终将纹理预算用于 为 3D 模型增加最大价值和 真实感的区域 下面要讲的是材质 材质定义 3D 模型的表面属性 材质指定系统渲染模型的方式 包括模型的颜色 以及对象的外观 是光泽的还是反光的效果 至于优化 3D 模型的材质 你可以通过组合网格部件 共享相同的材质 来减少加载时间 这之所以有帮助 是因为当 3D 模型 具有自定义材质时 系统必须 在第一次加载时对其进行编译 请确保材料复杂性 和屏幕大小之间的平衡 比如 如果只需要屏幕的一小部分 是透明的或者是透明涂层 那么只在这一小部分使用 单独的材质会更有效率 你要时时注意重叠的透明度 与不透明对象相比 实时渲染透明对象 通常需要更多的计算 因此最好只有在真正需要时 才重叠透明度 另外 如果有烘焙光照 或者网格的某些部分 甚至不需要光照 我们建议你使用 MaterialX 的 Unlit 表面 以节省实时光照计算 接下来 我们来看一下物理模拟 物理模拟有时可能 具有很高的计算复杂性 尤其是在物理系统执行 碰撞检测和模拟真实效果的情况下 比如模拟重力和弹簧 若要通过使用物理模拟来 最大限度地提高内容性能 你可以尝试减少使用对撞机的总数 有时候 你希望让内容 参与物理模拟 但内容包含了不应该移动 或不应受另一个对象影响的实体 比如一面会使虚拟球体反弹的墙 在这种情况下 我们建议你使用 静态对撞机来减少物理计算 接下来 我们讨论一下动画 在 3D 模型中添加动画 是一个让内容变生动的好办法 有时候 你需要的仅是一个 空闲时的动画 这种情况下 限制动画的每个顶点权重值 有助于创建高效逼真的动画 当你试图优化 变形动画或蒙皮动画的几何体时 请记得同样遵循我之前提供的 几何准则 接下来要讲的是 在内容中使用粒子系统 这是构建复杂视觉效果的 最强大的工具之一 比如带有烟雾的逼真火焰 或火箭的尾气 如果使用不当 粒子可能会成为 快速查看 3D 体验的瓶颈 因此 我们建议你限制 粒子发射器的使用 并且将屏幕上的粒子数量 保持在最低限度 通常 使用较少的粒子 也可以创建类似的视觉效果 尝试使用更简单或更小的形状和样式 获取类似的效果 有助于减少系统的透支 我们刚刚讲了很多内容 现在为你总结一下这些建议 影响快速查看 3D 内容性能的 因素有很多 这个新的平台旨在 让人们能够参与多个 App 以及其中并行运行的内容 这意味着内容的性能甚至可能 会受到同时使用的其他 App 或场景的影响 为此 在不同的场景中 测试 3D 模型是一种好的实践 正如我在本讲座中所分享的 无论你是想检查内容的视觉质量 还是想找出 可能影响 3D 性能的限制 都有许多工具可以供你使用 重要的是 要在拥有更好的 视觉效果和确保流畅的 快速查看观看体验之间 找到平衡 要了解有关快速查看的更多信息 以及如何使你的 3D 内容能够在 App 和网站上观看 请查看我们的另一个讲座 “探索快速查看的空间计算” 谢谢观看! ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。