11

我是 iOS 和 Android 的 AR 游戏开发的初学者。我有以下问题:

  1. ARKit for iOS 和 ARCore for Android 分别支持哪些 3D 模型格式?(我尝试过.dae.obj得到 ARkit 的支持,尚未测试 ARCore。)

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

4

4 回答 4

24

更新日期:2021 年 11 月 20 日。


场景套件

Apple SceneKit框架处理 3D 模型ARKit和 3D 应用程序。SceneKit 支持以下具有相应材质文件的 3D 资产:

  • .dae(有或没有动画)
  • .obj(单帧)及其.mtl纹理
  • .abc(仅支持单帧)
  • .usdz(有或没有动画)
  • .scn(原生 SceneKit 的场景格式)


现实套件

Apple 的RealityKit框架还可以处理ARKit. 您可以在名为Reality Composer的独立应用程序中为 RealityKit 制作内容原型。RealityKit 支持以下 3D 资源:

  • .usdz (有或没有动画)
  • .reality (有或没有动画和动态) - 为更快的加载时间而设计
  • .rcproject(有或没有动画和动态)

此外,您可以使用终端的usdzconvert命令.usdz从以下格式中获取:

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

而且,当然,您可以使用带有简单 UI 的Reality Converter应用程序(2020 年发布)。


场景形式

遗憾的是,自 2020 年 6 月以来Sceneform,Google 已存档且不再维护。

Google Sceneform处理ARCoreSDK的 3D 模型。Sceneform 支持以下 3D 资源及其材质依赖项:

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

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


ARKit 和 ARCore

但是 ARKit 和 ARCore 的作用是什么

这两个 AR 模块不关心 3D 几何图形的导入和渲染。他们只关心跟踪场景理解(即平面检测、命中测试和光线投射、深度感知、光估计和几何重建)。

于 2019-04-26T18:39:14.817 回答
5

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

ARKit 提供了供更高级别渲染引擎使用的信息——Apple 的 SceneKit 或 SpriteKit、第三方 Unreal 或 Unity 插件,或者您自己使用 Metal 或 OpenGL 构建的引擎。渲染引擎负责绘制相机画面并覆盖 3D 内容以创建 AR 幻觉,它使用 ARKit 提供的信息来令人信服地做到这一点。

我对 ARCore 了解不多,但从各个方面来看,它在 Android 生态系统中扮演着相同的角色——它也是 Unity、Unreal 或其他处理 3D 模型的引擎。

所以,像这样的问题特定于你在ARKit/ARCore 中使用的任何 3D 引擎。SceneKit 可以直接处理 DAE 和 OBJ,并通过模型 I/O 处理更多格式(请参阅MDLAssetSCNScene.init(mdlAsset:))。对于 Unreal、Unity 以及您与 ARCore 句柄一起使用的任何其他内容……请参阅这些技术的文档。

于 2017-10-04T21:10:04.263 回答
3

目前,ARcore 本身没有任何 3d 模型处理逻辑。要以任何格式渲染 3D 模型,您需要解析数据并使用 openGL 绘制它。包中的示例应用程序演示了如何为简单的 3D 模型(即 1 个 OBJ 和 1 个纹理文件)完成此操作。

于 2017-10-05T16:50:52.620 回答
0

我不确定您是否正确检查了 ARCore。Google 提供的基本示例正在处理 .obj 格式。ARCore 是一组仅与 AR 相关的工具。只要您能够在 Android 上使用,您就可以使用任何您想要的 3D 格式。它与 ARCore 无关问题 2 与 ARCore 和/或 android 甚至 arkit 无关

于 2017-10-04T16:10:18.970 回答