如何使用 Reality Converter 转换模型到 USDZ 格式

了解如何使用 Reality Converter 工具来转换和编辑 USDZ 格式的模型文件,并显著减小文件大小。

如何使用 Reality Converter 转换模型到 USDZ 格式

什么是 Reality Converter?

Reality Converter 是苹果公司在 2020 年推出的 macOS 应用程序,专为简化 USDZ 文件的转换而设计。这款应用支持常见的 3D 文件格式如 .obj、.gltf 和 .usd,用户可以通过简单的拖放操作轻松转换、查看和自定义 USDZ 内容。

Reality Converter 不仅可以用来转换格式,还可以修改模型文件。在最新的 Beta 6 版本中(截止 2024 年 7 月),你可以使用 Reality Converter 来编辑模型文件,例如修改纹理、自定义材质属性等。通过所见即所得(WYSIWYG)设计,您甚至可以轻松预览各种光照条件下的虚拟内容。

在完成编辑之后,就可以轻松地将模型导出为 USDZ 文件。


常见的三维模型文件格式及其特点

在三维建模和虚拟现实领域中,各种文件格式允许我们创建和共享虚拟物体和场景。

a room with a bench and a table

.obj(Object File Format)

  • 用途:存储三维模型的形状和外观。
  • 优点:简单,广泛支持,易于使用。
  • 缺点:功能有限,不支持动画或复杂场景。
  • 常用建模工具:Autodesk Maya, Blender, 3ds Max。

.gltf(GL Transmission Format)

  • 用途:快速加载和显示三维模型,支持动画和材质。
  • 优点:效率高,适合网络和移动应用。
  • 缺点:在某些传统三维建模软件中支持不如 .obj 广泛。
  • 常用建模工具:Blender, Sketchfab, Microsoft Paint 3D。

.usd(Universal Scene Description)

  • 用途:处理复杂的三维场景,支持多视图和动画。
  • 优点:功能强大,可扩展,适合专业电影和动画制作。
  • 缺点:复杂,学习曲线陡峭。
  • 常用建模工具:Pixar's own tools, Autodesk Maya, Houdini。

.usdz

  • 用途:由 Apple 和 Pixar 联合开发,是 .usd 的压缩版本,针对苹果生态的 ARKit 专门优化。
  • 优点:便于移动设备处理和增强现实应用。
  • 缺点:与 .usd 相比,编辑和修改更复杂。
  • 常用建模工具:Apple Reality Composer, Adobe software suite。

这些文件格式根据需要在功能性、简易性和兼容性之间取得不同的平衡。


为什么需要转换成 USDZ 格式?

person holding black tablet computer

USDZ 文件格式由 Apple 和 Pixar 联合开发,在 Apple 生态系统中,将三维模型转换为 USDZ 格式具有关键的意义和多方面的优势,特别是对于开发者和创作者而言。

ARKit 专门优化

USDZ 格式是为 Apple 的增强现实平台 ARKit 专门优化的。因此,可以更快地加载和渲染,这对于移动设备上的应用尤其重要,

原生支持

Apple 已经在其操作系统中深度集成了 USDZ 支持,使得所有具备 AR 功能的苹果设备能够原生支持这种格式。可以直接在文件应用或 Safari 中打开预览 USDZ 内容,无需安装任何第三方软件。

更小的文件大小

USDZ 文件格式在文件大小上通常比其他三维模型格式更为紧凑。相较于传统的 USD 格式或 obj 格式,USDZ 格式文件可以减少几十甚至上百倍。小文件尺寸不仅提高了应用的性能和用户体验,还优化了数据使用和存储管理,这些都是在设计和开发移动及 AR 应用时必须考虑的关键因素。


下载安装 Reality Converter

你可以从这个链接下载 Reality Converter:

AR Creation Tools - Augmented Reality - Apple Developer
Reality Composer is a powerful tool that makes it easy for you to create interactive augmented reality experiences. Reality Converter quickly converts your existing 3D models to USDZ.

页面往下滑,可以找到 Reality Converter 下载链接:


使用 Reality Converter 检测模型兼容性

你可以将其他建模工具创建好的模型文件,直接拖入 Reality Converter,或者点击左上角的 File -> 导入来导入模型文件。

当文件被导入时,Reality Converter 会检查文件结构是否符合 USDZ 格式的转换标准,例如纹理、材质、动画等。如果符合规范会自动转换为 USDZ 格式。否则,会提示错误。

检测包含以下内容:

纹理和材质

  • 纹理路径:检查模型文件中的纹理路径是否正确,以及纹理文件是否与模型文件一起正确地被导入。
  • 材质属性:验证模型使用的材质属性是否与 USDZ 支持的属性兼容。不兼容的材质属性可能需要转换或调整。

几何数据

  • 几何完整性:检查模型的几何结构是否完整,没有缺失的顶点或损坏的多边形。
  • 顶点法线和纹理坐标:确保顶点法线和纹理坐标数据完整,这对模型在渲染时的外观至关重要。

动画和骨骼

  • 如果模型包含动画或骨骼数据,Reality Converter 会检查这些数据是否能够被正确转换为 USDZ 格式所支持的动画格式。不兼容的动画特性可能需要在转换过程中被简化或移除。

性能优化

  • Reality Converter 也可能评估模型的复杂度,如多边形数量,以确保模型在移动设备上的渲染性能。如果模型过于复杂,它可能建议或自动执行减面(decimation)操作来降低多边形数量。

元数据

  • 检查与模型关联的任何元数据,确保这些信息在转换过程中得到保留或适当地映射到 USDZ 格式。

检查和转换完成后,如果存在错误或警告项目,会给于相应的说明:

你应该根据提示内容来更新模型文件。如果右侧预览效果能够满足你的预期效果,你也可以忽略警告信息直接导出。


使用 Reality Converter 压缩模型大小

和上面一样,导入模型并检查通过之后,你可以直接导出为 .usdz 格式的文件。导出后的 .usdz 格式文件大小应该会明显减小。

在我的示例文件中,从 20MB -> 400kb,大小变化非常明显:

为什么 .usdz 格式可以大幅压缩模型大小?

Reality Converter 可以优化模型,包括压缩模型的尺寸以适用于移动设备和 AR 应用。其原理主要包括以下几个方面:

  1. 纹理压缩

Reality Converter 通过减少纹理分辨率来减小文件大小。纹理通常是 3D 模型文件大小中的一个主要组成部分,因此压缩纹理可以显著降低整个模型的文件尺寸。

  1. 几何优化

工具可以简化模型的几何结构,通过减少多边形数量来降低模型复杂度。这种几何简化有助于提升渲染性能,同时减小文件尺寸,但需要平衡以避免过度降低模型质量。

  1. 材质和纹理合并

Reality Converter 会优化模型的材质使用,通过合并相似材质和共享纹理来减少重复数据,从而降低文件尺寸。

  1. LOD(Level of Detail)生成

Reality Converter 会生成不同的细节层次(LOD),以便在不同的查看距离下使用不同复杂度的模型。这有助于在保持视觉质量的同时优化性能和存储需求。

  1. 压缩算法

使用高效的压缩算法将模型数据(如顶点、纹理坐标和法线)进行压缩。现代压缩技术可以在不显著影响质量的前提下大幅减小数据体积。

  1. 删除不必要的元数据

模型文件中可能包含一些不必要的元数据或未使用的数据块,Reality Converter 会清除这些不必要的内容以减少文件大小。

通过这些技术和方法,Reality Converter 能够有效地压缩 3D 模型,使其更适合在 Apple 设备上的 AR 应用中使用。


使用 Reality Converter 编辑修改模型

导入模型到 Reality Converter 中,在右侧面板中可以修改 Material:

可以添加自定义的 Material 素材,Reality Converter 会自动应用并更新预览:

在左下方可以选择模拟不同的光照环境:

修改完成后,点击导出即可。


常见错误及解决方案

错误 / Invalid USD shader node type

🔎 错误详情(示例)

USD shader node at '/lambert3SG/UsdPreviewSurface' should be of type 'UsdPreviewSurface'

在 Reality Converter 中遇到的错误信息 "Invalid USD shader node type" 指出了一个具体的问题:USD 材质着色器(shader)节点的类型不正确。这条错误消息中具体指出,位于路径 /lambert3SG/UsdPreviewSurface 的 USD shader node 的类型应该是 UsdPreviewSurface,但当前并非如此。

错误原因:

这个错误通常意味着在将模型转换为 USDZ 格式时,模型中的材质属性不符合预期的 USDZ 标准。Reality Converter 预期所有的着色器节点遵循 UsdPreviewSurface 标准,这是一种用于兼容各种渲染器的通用着色器。

如果模型的着色器使用了非 UsdPreviewSurface 类型的材质节点,如传统的 lambert 或其他非标准类型,就会触发此错误。

如何修复

  1. 检查和修改材质类型:需要在你的原始 3D 建模软件中检查和修改使用的材质类型。确保所有材质都改为 UsdPreviewSurface,这是一种更加通用的材质类型,专为 USDZ 设计,以确保材质在各种环境中都能正确渲染。
  2. 重新导出模型:在确认所有着色器节点都已修改为正确类型后,重新导出模型到 USD 或直接到 USDZ 格式。
  3. 验证文件:在重新导入模型前,可以使用像 usdview 这样的工具预览 USD 文件,确保所有的着色器类型都正确无误。
  4. 使用 Reality Converter 重新导入:将修改后的文件再次导入到 Reality Converter 中,检查是否还会出现同样的错误。

了解如果使用 usdview 工具,可以参考这篇文章:

https://ivensliaoblog.com/understanding-pixar-usd-toolset/

参考信息:

警告 / USD文件中缺少引用

🔎 警告详情:

使用默认资源解析器时,编写的 USD 舞台不应包含任何无法解析的资源附属内容(在任何可能的资源形式中)。