哪种格式的 3d 模型文件 SceneKit/ARKit 更好用

Which format file for 3d model SceneKit/ARKit better to use

我阅读了一些教程,了解如何在 SceneKit/ARKit 应用程序中放置 3d 对象,并且所有这些教程都使用 .scn 格式的对象文件。

但是我发现如果我使用原始的.dae格式并且不将其转换为.scn格式则没有任何问题。

我真的看不出 .dae 和 .scn 格式之间有什么区别。

实际上结果在我看来是一样的,但是你能解释一下它们之间的区别以及我应该在什么情况下使用什么吗?

谢谢!

DAE(数字资产交换,又名 Collada)是一种供应商中立的 3D 资产格式。它支持多种 3D 创作和演示工具中存在的广泛功能,但不是 SceneKit 中的所有可能功能。从历史上看,它是 SceneKit 早期版本的唯一资产格式。

SCN 格式是 SceneKit 对象图的序列化。 (在 SCNScene 上有 reading/writing 的便捷方法,但实际上这与将 SCNScene 传递给 NSKeyedArchiver/NSKeyedUnarchiver 得到的结果相同。)因此,根据定义,它支持 SceneKit 的 所有 功能,包括物理、约束、动作、基于物理的相机和着色器修改器。

如果您正在使用 DAE 资产,部署到 iOS(或 tvOS 或 watchOS),并且与使用 SCN 资产相比没有发现任何差异,可能有两个原因:

  • 您的资产仅使用 DAE 格式中可用的那些 SceneKit 功能。
  • 部署到 iOS/tvOS/watchOS 时,Xcode(通过 scntool)自动将所有 3D 资产资源转换为 SCN 格式。 (并应用其他转换,如交错几何缓冲区,以在 iOS/tvOS/watchOS 设备上实现最佳渲染性能。)构建应用程序的 Resources 目录中的文件名仍然具有 .dae 扩展名,但文件内容与SCN 格式。

    (iOS/tvOS/watchOS中的SceneKit 运行其实是无法读取DAE的,所以依赖Xcode的这个预处理。)

.dae.scn 格式之间的区别很明显。 Collada .dae(代表 data asset exchange)是跨平台的 XML-based schema 文件用于 3D 创作应用程序(如 Maya 或 Blender)中的图形和视觉效果的格式。 SceneKit 的 .scn 是 Xcode 的原生文件格式,适用于 iOS 和 macOS 应用程序。不幸的是,场景的 space、速度和层次结构并不是 .dae.scn 格式的强项。因此,您可以在 SceneKit/ARKitRealityKit 中使用的当今最强大和最有效的 3D 文件格式是 USDZ 格式。

USD family – 通用场景描述,皮克斯开发。它是一种基于Python的跨平台架构文件格式,能够通过将多个源文件组合在一起来创建3D场景成连续更大的聚合体。

SceneKit 格式

SceneKit 支持许多流行的 3D 格式。通过 ARSCNView 可以看到以这些格式保存的几何图形。

  • Collada 的数字资产交易所 .dae

  • 皮克斯的压缩通用场景描述.usdz

  • 皮克斯的ASCII通用场景描述.usda

  • Pixar的二进制通用场景描述.usd,.usdc

  • Wavefront 对象 .obj 及其 material 描述 .mtl

  • Alembic 交换文件格式 .abc

  • 多边形文件格式.ply

  • 立体光刻文件格式.stl

  • 苹果专有SceneKit Scene格式.scn

  • .fbx.glTF文件转换成 .usdz 使用 command line.

RealityKit 格式

自 2019 年以来,RealityKit 框架越来越受欢迎。它适用于以下三种文件格式:

  • 皮克斯的压缩通用场景描述.usdz

  • Apple Reality Composer 多场景层次结构.rcproject

  • Apple 专有格式(上传速度更快).reality

Read about Reality Composer formats .rcproject and .reality here.