16

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

4

3 回答 3

15

自动支持DAE 和 OBJ/MTL ,因为您只需将文件放在 .scnassets 文件夹中,它就会为您处理它们。就个人而言,我在 OBJ/MTL 方面遇到的问题较少,但我并不精通 3D。

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

支持的格式集包括 Alembic (.abc)、Wavefront Object (.obj)、Polygon (.ply) 和 Standard Tessellation Language (.stl)。也可以支持其他格式。

不过我还没有使用过这个框架,所以不能告诉你它在 ARKit 上的效果如何。

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

于 2018-01-10T16:07:39.023 回答
8

ARKit 5.0

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

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

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

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

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

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

  • Reality Composer 格式.rcproject(RealityKit)

  • Reality Composer 格式.reality(RealityKit)

  • 波前对象.obj和材料.mtl(需要转换)

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

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

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

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

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

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

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

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)
于 2019-03-29T16:23:11.350 回答
1

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

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

支持的扩展和格式集包括:

  • .abc 蒸馏器
  • .usd、.usda、.usdc 通用场景描述
  • .usdz 通用场景描述(移动)
  • .ply 多边形
  • .obj 波前对象
  • .stl 标准细分语言

也可以支持其他格式。

看起来 Apple 在 iOS(从 iOS 12 开始)上为 ARKit 提供的新首选文件类型是他们自己的 usdz:

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

于 2019-09-06T17:47:26.417 回答