首页 > 解决方案 > 如何从 .usdz 创建 SCNNode?

问题描述

我已经下载了 Apple 提供的 .usdz 模型:https ://developer.apple.com/arkit/gallery/

但是现在,我想用这些模型之一创建一个 SCNNode,所以我这样做是为了获取节点:

guard let urlPath = Bundle.main.url(forResource: "retrotv", withExtension: "usdz") else {
    return
}
let mdlAsset = MDLAsset(url: urlPath)
let modelRootNode = SCNScene(mdlAsset: mdlAsset).rootNode

然后我将它添加到场景中,结果是这样的:

在此处输入图像描述

为什么没有纹理?

如您所见,我已将下载的 .usdz 文件放入项目目录中的文件夹中:

在此处输入图像描述

标签: iosswiftarkitscnnodeusdz

解决方案


添加 .USDZ 对象的正确方法实际上是使用文件的 URL 创建场景:

 let scene = try! SCNScene(url: usdzURL, options: [.checkConsistency: true])

甚至通过参考节点创建:

 let referenceNode = SCNReferenceNode(url: usdzURL)
 referenceNode.load()

推荐阅读