ARKit 支持哪些 3D 模型格式?

What 3D model formats are supported by ARKit?

ARKit 支持哪些 3D 模型格式? 有人知道在 ARKit 中使用的所有支持格式,以及哪种格式 Xcode 可以导出以在应用程序中使用?

DAE 和 OBJ/MTL 自动 支持,在某种意义上,您只需将文件放到 .scnassets 文件夹中,它就会为您处理。就个人而言,我对 OBJ/MTL 的问题较少,但我不精通 3D。

Model I/O 的文档指出您可以从以下文件导入 3D 资源

The set of supported formats includes Alembic (.abc), Wavefront Object (.obj), Polygon (.ply), and Standard Tessellation Language (.stl). Additional formats may be supported as well.

虽然我没有使用过这个框架,所以不能告诉你它与 ARKit 的配合情况如何。

您可能想看看 AssimpKit,它允许将多种格式导出到 .scn SceneKit 场景

ARKit 5.0

ARKit 本身不读取任何 3D 格式。只有渲染引擎可以做到。

SceneKitRealityKit 框架是 ARKit 的卫星,因此它们可以读取支持目前几种流行的 3D 文件格式的多边形几何。如果 SceneKit 或 RealityKit 无法读取文件,您可以使用 usdzconvert 终端命令将其转换为 USDZ。

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

  • Pixar 的压缩通用场景描述.usdz(SceneKit 和 RealityKit)

  • Pixar的ASCII通用场景描述.usda(需要转换)

  • Pixar的二进制通用场景描述.usd.usdc(需要转换)

  • Reality Composer 格式.rcproject (RealityKit)

  • Reality Composer 格式.reality(在 RealityKit 中运行速度更快)

  • 波前对象 .obj 以及 material .mtl (需要转换)

  • Alembic 交换文件格式.abc(需要转换)

  • 多边形文件格式.ply(需要转换)

  • Autodesk Filmbox 格式 .fbx(需要转换)

  • 图库传输格式.glTF(需要转换)

  • 立体光刻文件格式.stl(需要转换)

  • 原生场景格式.scn (SceneKit)

使用这些格式的最佳方法是从 MDLAssset 初始化 SCNScene,如下所示:

import SceneKit.ModelIO

guard let url = Bundle.main.url(forResource: file, withExtension: "usdz") 
else { 
    fatalError() 
}
let mdlAsset = MDLAsset(url: url)
let scene = SCNScene(mdlAsset: mdlAsset)

可在此处找到模型 I/O 框架支持的完整文件类型集:

https://developer.apple.com/documentation/modelio/mdlasset/1391813-canimportfileextension

The set of supported extensions and formats includes:

  • .abc Alembic
  • .usd, .usda, .usdc Universal Scene Description
  • .usdz Universal Scene Description (Mobile)
  • .ply Polygon
  • .obj Wavefront Object
  • .stl Standard Tessellation Language

Additional formats may be supported as well.

Apple 在 iOS(从 iOS 12 开始)的 ARKit 新首选文件类型似乎是他们自己的 usdz:

https://developer.apple.com/augmented-reality/quick-look/