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: