如何在 ARKit 应用程序中运行时加载 SCN 或 glTF 模型?



在运行时从iOS内部的URL加载3D模型的最佳方法是什么?我已经尝试过这个.scn.gtlf模型导入器。

我在加载模型 https://github.com/prolificinteractive/SamMitiAR-iOS 使用此框架:

let virtualObjectGLTFNode = SamMitiVirtualObject(gltfUrl: URL(string: 
"https://raw.githubusercontent.com/KhronosGroup/glTF-Sample- 
Models/master/2.0/Duck/glTF-Embedded/Duck.gltf")!, allowedAlignments: 
[.horizontal])
virtualObjectGLTFNode.name = "Duck"
virtualObjectGLTFNode.setAnimationForVirtualObjectRemoving { (node, completed) in
SceneKitAnimator.animateWithDuration(duration: 0.35 / 2, 
timingFunction: .easeIn, 
animations: {
let transform = SCNMatrix4MakeScale(0.01, 0.01, 0.01)
node.contentNode?.transform = transform
}, completion: completed)
}
return virtualObjectGLTFNode

像上面一样,我正在从远程服务器加载不同的URL,请指导我如何从远程服务器加载3d模型。我想要以哪种格式获取网址。请从远程服务器发送任何包含该scn文件的链接 谢谢阿达文斯。

似乎 url 加载器功能在SamMitiAR框架中不起作用。它说Placing and Removing Virtual Objects部分下正在进行的工作。

要了解如何动态地将模型加载到 ARKit 应用程序中(当模型在编译时无法访问时(,请阅读这篇文章(抱歉,有一个 Objective-C 代码(:

  • 在运行时在 SceneKit 中动态加载 Collada 文件

如果您想了解如何在使用url时使用不同的方法,请阅读以下SO帖子:

  • ARKit - 如何从服务器 URL 加载 .scn 和纹理文件

  • 如何使用 ARKit 从远程服务器加载模型和纹理?

  • 从 URL Xcode 快速加载 3d 资产

如需其他阅读,请使用 Apple 文档:

  • SCNSceneSource - 管理数据读取任务的对象...

我可以解释我所做的现在正在工作。我想我们也尝试过 .gltf 和 .scn 并且没有得到任何东西,所以我们得出了这样的结论:

  1. 获取一个包含 Collada 文件(.dae( 和所有纹理的文件夹。

  2. 正如@AndyFedo提到的,我们已经完成了此解决方案的步骤。如果运行时没有本地文件,则应执行此步骤。

  3. 在 copySceneKitAssets 的帮助下将原始 Collada 文件夹转换为该页面中解释的所需文件夹后,我压缩了新文件夹并将其放在服务器上

  4. 然后调用 api,将 zip 文件夹保存在设备上,解压缩文件夹并使用 .dae 文件搜索文件并获取此文件的路径。我把它命名为modelUrl。

  5. let virtualObject = SamMitiVirtualObject(referenceNode: SCNReferenceNode.init(url:modelUrl as URL(! , allowedAlignments: [.horizontal](

这应该行得通。

相关内容

  • 没有找到相关文章