我是 iOS 和 Android 的 AR 游戏开发的初学者。我有以下问题:
ARKit for iOS 和 ARCore for Android 分别支持哪些 3D 模型格式?(我尝试过
.dae
并.obj
得到 ARkit 的支持,尚未测试 ARCore。)我们的 3D 模型供应商只能为我们提供 FBX 格式。如何将其转换为 ARKit 和 ARCore 支持的格式?我尝试使用 3D 模型转换器,但转换后的模型没有纹理。
我是 iOS 和 Android 的 AR 游戏开发的初学者。我有以下问题:
ARKit for iOS 和 ARCore for Android 分别支持哪些 3D 模型格式?(我尝试过.dae
并.obj
得到 ARkit 的支持,尚未测试 ARCore。)
我们的 3D 模型供应商只能为我们提供 FBX 格式。如何将其转换为 ARKit 和 ARCore 支持的格式?我尝试使用 3D 模型转换器,但转换后的模型没有纹理。
更新日期: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处理ARCore
SDK的 3D 模型。Sceneform 支持以下 3D 资源及其材质依赖项:
.obj
(及其.mtl
依赖).glTF
(不支持动画).fbx
(有或没有动画).sfa
(ascii 资产定义,在 Sceneform 1.16 中已弃用).sfb
(二进制资产定义,在 Sceneform 1.16 中已弃用)SceneKit、RealityKit、Sceneform和Reality Composer支持基于物理的渲染。
但是 ARKit 和 ARCore 的作用是什么?
这两个 AR 模块不关心 3D 几何图形的导入和渲染。他们只关心跟踪和场景理解(即平面检测、命中测试和光线投射、深度感知、光估计和几何重建)。
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 处理更多格式(请参阅MDLAsset
和SCNScene.
init(mdlAsset:)
)。对于 Unreal、Unity 以及您与 ARCore 句柄一起使用的任何其他内容……请参阅这些技术的文档。
目前,ARcore 本身没有任何 3d 模型处理逻辑。要以任何格式渲染 3D 模型,您需要解析数据并使用 openGL 绘制它。包中的示例应用程序演示了如何为简单的 3D 模型(即 1 个 OBJ 和 1 个纹理文件)完成此操作。
我不确定您是否正确检查了 ARCore。Google 提供的基本示例正在处理 .obj 格式。ARCore 是一组仅与 AR 相关的工具。只要您能够在 Android 上使用,您就可以使用任何您想要的 3D 格式。它与 ARCore 无关问题 2 与 ARCore 和/或 android 甚至 arkit 无关