ARKit / ARCore 开发中的 3D 模型格式
3D model formats in ARKit / ARCore development
我是 iOS 和 Android AR 游戏开发的初学者。我有以下问题:
ARKit iOS和ARCore Android分别支持哪些3D模型格式? (我试过 .dae
和 .obj
是 ARkit 支持的,还没有测试 ARCore。)
我们的 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等)和场景理解(即平面检测、命中测试和光线投射、深度感知、光估计和几何重建)。
我是 iOS 和 Android AR 游戏开发的初学者。我有以下问题:
ARKit iOS和ARCore Android分别支持哪些3D模型格式? (我试过
.dae
和.obj
是 ARkit 支持的,还没有测试 ARCore。)我们的 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等)和场景理解(即平面检测、命中测试和光线投射、深度感知、光估计和几何重建)。