gpt4 book ai didi

augmented-reality - 如何在运行时将 3D 内容加载到 RealityKit 应用程序中?

转载 作者:行者123 更新时间:2023-12-05 04:48:37 25 4
gpt4 key购买 nike

为了特定目的,我必须在运行时将 3D 内容(绝对首选 glTF)加载到我的基于 RealityKit 的应用程序中。据我了解,RealityKit 在编译期间通常依赖于将 3D 内容转换为专有 .reality。

为了使其更易于理解:该应用可以与 IKEA Place 应用进行比较,具有不断变化的 AR 内容,甚至可以打开邮件中附加的 3D 内容。

最先进的解决方案是什么?我发现了这种方法:https://the-nerd.be/2014/11/07/dynamically-load-collada-files-in-scenekit-at-runtime/但就我而言,它并不是真正可用的,因为它依赖于 3D 内容的基于 Mac 的预编译,并且使用的是 SceneKit 而不是 RealityKit。我还听说过 Model I/O ( https://developer.apple.com/documentation/modelio ),这可能是一个解决方案,但我的知识不足以评估它。我怀疑它是否可用于 RealityKit 或仅用于 SceneKit。

如果我混淆了 SceneKit/RealityKit/ARKit,请纠正我。

最佳答案

RealityKit 仅支持加载专门为 RealityKit 制作的 USDZ 文件和项目。 RealityKit 建立在 ARKit 之上,但使用实体。支持的格式有:

usdz、rcproject、现实

let url = URL(fileURLWithPath: "path/to/MyEntity.usdz")
let entity = try? Entity.load(contentsOf: url)

ARKit 可以使用 MDLAsset 加载更多文件类型,但也非常有限。它像 SceneKit 一样使用 SCNNode。因此,您可以加载到 SceneKit 中的所有内容都可以在 ARKit 中使用。 MDLAsset 支持:

abc、usd、usda、usdc、usdz、ply、obj、STL

let url = URL(fileURLWithPath: "path/to/MyScene.usdz")
let asset = MDLAsset(url: url)
asset.loadTextures()
let scene = SCNScene(mdlAsset: asset)
return scene.rootNode.flattenedClone()

有一种方法可以使用 AssimpKit 加载其他类型的模型 - https://github.com/dmsurti/AssimpKit .您可以加载场景并克隆根节点 (SCNNode),然后可以在 ARKit 中使用它。

AssimpKit 是第 3 方库,可用于在运行时将许多文件类型转换/导入到 SceneKit 中。支持的类型有:

3d, 3ds, ac, b3d, bvh, cob, dae, dxf, ifc, irr, md2, md5mesh, md5anim, m3sd, nff, obj, off, mesh.xml, ply, q3o, q3s,原始、smd、STL、wrl、xgl、zgl、fbx、md3

如果支持 USDZ 和 RealityKit 项目还不够,您现在可能需要使用 ARKit。

关于augmented-reality - 如何在运行时将 3D 内容加载到 RealityKit 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67990368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com