我是iOS和Android的AR游戏开发的初学者。我有以下问题:
-
分别为iOS和Arcore支持Android的ARKIT支持哪些类型的3D模型格式?(我尝试了
.dae
和.obj
由阿尔基特(Arkit)支持,尚未测试arcore。) -
我们的3D模型供应商只能为我们提供FBX格式。如何将其转换为Arkit和Arcore支持的格式?我尝试使用3D模型转换器,但是转换后的模型没有纹理。
更新:2023年8月19日。
场景
Apple SceneKit框架为ARKit
和VR应用程序加载3D型号。SceneKit支持以下3D格式,并具有相应的材料文件:
-
.dae
(支持动画) -
.obj
(单帧)及其纹理和.mtl
文件 -
.abc
(仅支持单帧) -
.usdz
(支持动画) -
.scn
(本机场景的格式,支持动画)
REALEKIT
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
当然,您可以使用其简单的GUI使用现实转换器应用程序。
场景形式
可惜,但自2020年6月以来,Sceneform
已存档,不再由Google维护。
Google场景形式处理ARCore
SDK 的3D型号。场景形式支持以下3D资产及其物质依赖性:
-
.obj
(具有.mtl
依赖关系) -
.glTF
(不支持动画) -
.fbx
(有或没有动画) -
.sfa
(ASCII资产定义,在场景Form 1.16中弃用) -
.sfb
(二进制资产定义,在场景形式1.16中弃用)
scenekit , eallekit , sceneform 和现实作曲家pro 支持基于物理的渲染。
arkit和arcore
但是Arkit和Arcore的作用是什么,然后?
这两个AR模块不在乎进口和渲染3D几何。他们只负责跟踪(世界,图像,面部,geo等)和场景理解(即平面检测,命中测试&射线播,深度感知,光估计和几何重建)。
arkit不在乎模型格式,因为Arkit不会显示3D模型(或其他任何)本身。
ARKIT提供了较高级别渲染引擎的信息 - Apple的Scenekit或SpriteKit,第三方虚幻或Unity Plugins,或使用Metal或OpenGL构建的引擎。渲染引擎负责绘制摄像机供稿和覆盖3D内容以创建AR幻觉,并且它使用Arkit提供的信息来令人信服地进行。
我对Arcore了解不多,但是从所有外观上看,它在Android生态系统中都具有相同的作用 - 它是统一,虚幻或其他在此处处理3D模型的引擎。
因此,这样的问题是特定于使用使用 arkit/arcore的任何3D引擎。SceneKit可以直接处理DAE和OBJ,并通过模型I/O进行更多格式(请参阅MDLAsset
和SCNScene.
init(mdlAsset:)
)。对于虚幻,统一以及与Arcore句柄一起使用的其他内容...请参阅这些技术的文档。
arcore本身目前尚未随附任何3D模型处理逻辑。要渲染任何格式的3D模型,您需要解析数据并使用OpenGL绘制数据。软件包中的示例应用程序演示了如何为简单的3D模型即可(即1个OBJ和1个纹理文件)完成此操作。
我不确定您是否正确检查了Arcore。Google提供的基本示例正在使用.OBJ格式。Arcore仅与AR相关的工具集。只要您能够在Android上使用它,就可以使用3D格式。它与Arcore无关问题2与Arcore和/或Android甚至Arkit