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

3D model formats in ARKit / ARCore development

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

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

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

我不确定您是否正确检查了 ARCore。 Google 提供的基本示例适用于 .obj 格式。 ARCore 是一组仅与 AR 相关的工具。只要能够在 Android 上使用,您可以随意使用 3D 格式。与 ARCore 无关 问题 2 与 ARCore and/or android 甚至 arkit

无关

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

ARKit 提供供更高级别渲染引擎使用的信息——Apple 的 SceneKit 或 SpriteKit、第三方 Unreal 或 Unity 插件,或者您使用 Metal 或 OpenGL 自行构建的引擎。渲染引擎负责绘制摄像头画面并叠加 3D 内容以创建 AR 幻觉,它使用 ARKit 提供的信息以令人信服地完成此操作。

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

因此,像这样的问题特定于您使用的任何 3D 引擎 ARKit/ARCore。 SceneKit 可以直接处理 DAE 和 OBJ,并通过模型 I/O 处理更多格式(参见 MDLAsset and SCNScene.init(mdlAsset:))。对于 Unreal、Unity 以及您使用 ARCore 处理的任何其他内容...请参阅这些技术的文档。

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

更新时间:2022 年 5 月 12 日。


SceneKit

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

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


RealityKit

苹果RealityKit framework also handles 3D models for ARKit, AR and VR apps. You can prototype a content for RealityKit in a standalone app called Reality Composer。 RealityKit 支持以下 3D 资产:

  • .usdz(有或没有动画)
  • .reality(有或没有动画和动态)——优化加载速度更快
  • .rcproject(有或没有动画和动态)

Additionally you can use Terminal's usdzconvert command to get .usdz from the following formats:

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

And, of course, you can use Reality Converter app with its simple GUI.


场景

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

Google Sceneform 处理 ARCore SDK 的 3D 模型。 Sceneform 支持以下 3D 资产及其 material 依赖项:

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

SceneKit, RealityKit, Sceneform and Reality Composer support Physically Based Rendering.


ARKit 和 ARCore

那么ARKit和ARCore的作用是什么

这两个 AR 模块不关心 3D 几何体的导入和渲染。他们只负责tracking(world,image,face,geo等)和场景理解(即平面检测、命中测试和光线投射、深度感知、光估计和几何重建)。