【发布时间】:2018-06-19 19:52:32
【问题描述】:
ARKit 支持哪些 3D 模型格式? 有人知道在 ARKit 中使用的所有支持格式,以及 Xcode 可以导出哪些格式以在应用程序中使用?
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
ARKit 支持哪些 3D 模型格式? 有人知道在 ARKit 中使用的所有支持格式,以及 Xcode 可以导出哪些格式以在应用程序中使用?
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
【讨论】:
ARKit 本身不读取任何 3D 格式。只有渲染引擎才能做到。
SceneKit 和 RealityKit 框架是 ARKit 的卫星,因此它们可以读取支持目前几种流行 3D 文件格式的多边形几何体。如果 SceneKit 或 RealityKit 无法读取文件,您可以使用 usdzconvert 终端命令将其转换为 USDZ。
Collada 的数字资产交易所.dae(SceneKit)
皮克斯的压缩通用场景描述.usdz(SceneKit 和 RealityKit)
皮克斯的 ASCII 通用场景描述 .usda(需要转换)
皮克斯的二进制通用场景描述.usd和.usdc(需要转换)
Reality Composer 格式 .rcproject (RealityKit)
Reality Composer 格式 .reality (RealityKit)
波前对象 .obj 以及材料 .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
支持的扩展和格式集包括:
- .abc Alembic
- .usd、.usda、.usdc 通用场景描述
- .usdz 通用场景描述(移动)
- .ply 多边形
- .obj 波前对象
- .stl 标准细分语言
也可能支持其他格式。
看起来 Apple 在 iOS(从 iOS 12 开始)上新的 ARKit 首选文件类型是他们自己的 usdz:
【讨论】: