ARKit / ARCore开发中的3D模型格式

10

我是一名iOS和Android AR游戏开发的初学者,以下有几个问题:

  1. ARKit和ARCore分别支持哪些3D模型格式?(我尝试了.dae.obj都是ARkit支持的,还没有测试ARCore。)

  2. 我们的3D模型供应商只能提供FBX格式。如何将它转换为ARKit和ARCore支持的格式?我尝试使用3D模型转换器进行转换,但转换后的模型没有纹理。

4个回答

24

更新日期:2023年8月19日。

SceneKit

苹果的SceneKit框架可加载用于ARKit和VR应用的3D模型。SceneKit支持以下带有相应材质文件的3D格式:

  • .dae(支持动画)
  • .obj(单帧)及其纹理和.mtl文件
  • .abc(仅支持单帧)
  • .usdz(支持动画)
  • .scn(原生SceneKit格式,支持动画)

RealityKit

Apple的RealityKit框架可以加载用于AR和VR应用的3D模型。您可以在名为Reality Composer Pro的独立应用中为RealityKit原型设计内容。RealityKit支持以下3D格式:

  • .usdz(支持动画和动力学)
  • .reality(支持动画和动力学,优化以实现更快加载速度)
  • .rcproject Xcode 14–(支持动画和动力学)
  • .realitycomposerpro Xcode 15+

此外,您还可以使用终端的usdzconvert命令从以下格式生成.usdz文件:

  • .obj
  • .glTF
  • .fbx
  • .abc
  • .usda
  • .usdc
  • .usd

当然,您可以使用具有简单图形用户界面的Reality Converter应用程序。


Sceneform

很可惜,自2020年6月起,Google已经将Sceneform存档,并不再进行维护。

Google Sceneform用于处理ARCore SDK的3D模型。 Sceneform支持以下带有其材质依赖关系的3D资产:

  • .obj(带有其.mtl依赖)
  • .glTF(不支持动画)
  • .fbx(带有或不带有动画)
  • .sfa(ascii格式的资产定义,在Sceneform 1.16中已弃用)
  • .sfb(二进制格式的资产定义,在Sceneform 1.16中已弃用)

SceneKitRealityKitSceneformReality Composer Pro都支持基于物理的渲染。


ARKit和ARCore

那么ARKit和ARCore的作用是什么呢

这两个AR模块并不关心导入和渲染3D几何体。它们只负责跟踪(世界、图像、面部、地理等)和场景理解(例如平面检测、命中测试和射线投射、深度感知、光照估计和几何重建)。


5

ARKit 不关心模型格式,因为 ARKit 本身不显示 3D 模型(或其他任何内容)。

ARKit 提供信息供更高级的渲染引擎使用——苹果的 SceneKit 或 SpriteKit、第三方的 Unreal 或 Unity 插件,或者您自己使用 Metal 或 OpenGL 构建的引擎。渲染引擎负责绘制相机反馈并叠加 3D 内容以创建 AR 幻觉,并使用 ARKit 提供的信息以令人信服地实现此目的。

我对 ARCore 不太了解,但从所有表现来看,它在 Android 生态系统中担当相同的角色——也是处理 3D 模型的 Unity、Unreal 或其他引擎。

因此,这样的问题取决于您正在使用的任何带 ARKit/ARCore 的 3D 引擎。SceneKit 可以直接处理 DAE 和 OBJ,还可以通过 Model I/O 处理一些更多的格式(请参见 MDLAssetSCNScene.init(mdlAsset:))。对于 Unreal、Unity 和与 ARCore 结合使用的其他技术,请查看这些技术的文档。


3

目前,ARcore本身没有任何3D模型处理逻辑。要渲染任何格式的3D模型,您需要解析数据并使用openGL绘制它。该软件包中的示例应用程序演示了如何为简单的3D模型即一个OBJ和一个纹理文件进行渲染。


0

我不确定你是否正确地检查了ARCore。Google提供的基本示例是在.obj格式上工作的。ARCore是与AR相关的一组工具。只要您能够在Android上使用它,您可以使用任何3D格式。这与ARCore无关。 问题2与ARCore、Android甚至arkit都无关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接