ARKit 支持哪些 3D 模型格式?有人知道在 ARKit 中使用的所有支持格式,以及 Xcode 可以导出哪种格式以在应用程序中使用?
3 回答
自动支持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 场景
ARKit 5.0
ARKit 本身不读取任何 3D 格式。只有渲染引擎才能做到。
SceneKit和RealityKit框架是 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)
可在此处找到模型 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: