ARKit 支持哪些 3D 模型格式?
Posted
技术标签:
【中文标题】ARKit 支持哪些 3D 模型格式?【英文标题】:What 3D model formats are supported by ARKit? 【发布时间】:2018-06-19 19:52:32 【问题描述】:有人知道在 ARKit 中使用的所有支持格式,以及 Xcode 可以导出哪些格式以在应用程序中使用?
【问题讨论】:
【参考方案1】:DAE 和 OBJ/MTL 是自动支持的,因为您只需将文件放到 .scnassets 文件夹中,它就会为您处理它们。就个人而言,我在 OBJ/MTL 方面遇到的问题较少,但我并不精通 3D。
Model I/O 的文档指出您可以从以下文件导入 3D 资产
支持的格式集包括 Alembic (.abc)、Wavefront Object (.obj)、多边形 (.ply) 和标准镶嵌语言 (.stl)。 也可能支持其他格式。
虽然我没有使用过这个框架,所以无法告诉你它与 ARKit 的工作情况如何。
您可能想看看AssimpKit,它允许将多种格式导出到 .scn SceneKit 场景
【讨论】:
您错过了 (.scn) 文件格式,一个问题是 .fbx 文件格式如何?这在 ARKit 中是否支持? 好吧,我在回答的最后一句话中确实提到了 scn 。我曾假设 OP 知道它,因为它是 XCode 管理的默认格式(尽管它可能是一个错误的假设)。关于 FBX,大约一年前我尝试过它时,并没有直接支持它。我尝试使用 AssimpKit 将其导出到 scn,但效果不佳。【参考方案2】:ARKit 5.0
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)
【讨论】:
【参考方案3】:可在此处找到模型 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:
https://developer.apple.com/augmented-reality/quick-look/
【讨论】:
以上是关于ARKit 支持哪些 3D 模型格式?的主要内容,如果未能解决你的问题,请参考以下文章
3d 模型 SceneKit/ARKit 的哪种格式文件更好用
全球最大 AR 3D 模型平台 Sketchfab 宣布支持 ARKit,或联手腾讯阿里进军中国
我的OpenGL学习进阶之旅Assimp库支持哪些3D模型格式?