在运行时从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 并且没有得到任何东西,所以我们得出了这样的结论:
-
获取一个包含 Collada 文件(.dae( 和所有纹理的文件夹。
-
正如@AndyFedo提到的,我们已经完成了此解决方案的步骤。如果运行时没有本地文件,则应执行此步骤。
-
在 copySceneKitAssets 的帮助下将原始 Collada 文件夹转换为该页面中解释的所需文件夹后,我压缩了新文件夹并将其放在服务器上
-
然后调用 api,将 zip 文件夹保存在设备上,解压缩文件夹并使用 .dae 文件搜索文件并获取此文件的路径。我把它命名为modelUrl。
-
let virtualObject = SamMitiVirtualObject(referenceNode: SCNReferenceNode.init(url:modelUrl as URL(! , allowedAlignments: [.horizontal](
这应该行得通。