我没有运气试图有选择地提取场景文件的某些元素。我正在使用SCNSceneSource课程。我在我的 ipad pro 上运行 Playgrounds App 中的这个快速代码。我用不同的方式尝试了多个 dae,scn 文件。从 Resources 目录。

我也尝试了不同的类类型,SCNScene,SCNNode,SCNGeometry 等

任何帮助将不胜感激。

guard let url = Bundle.main.url(forResource: "file", withExtension: "scn") else {
    fatalError("Failed to find model file")
}

let sceneSource = SCNSceneSource(url: url as URL, options: nil)!

//List identifiers
let identifiers = sceneSource.identifiersOfEntries(withClass: SCNGeometry.self) as [String]

for identifier in identifiers {
    print(identifiers)
}

编辑:

顺便说一下,我正在使用 SketchUp 来创建我导入 Xcode 的原始 Collada(DAE)文件。 SketchUp 支持 Collada 1.4 规范和架构。在过去的答案中,建议避免使用 Scenekit 不支持的 Collada 版本 1.5.

当我使用场景图(具有附加几何,灯光,摄像机等的节点的层次结构)查看 Xcode 中的 Collada dae 文件时,单击场景图中的不同 geometry/nodes 时,每个 node/geometry 对应的属性窗口显示“无标识符” 。我可以通过使用文本编辑器手动编辑 dae 文件中的 xml 架构来添加一些名称(或者点击场景图部件并重命名,在相关的 nodes/geometry...但是即使每个几何元素都有一个 id =“ geometry1“etc ....在 orignal Collada dae 文件架构中......仍未显示为 Xcode 属性菜单中的标识符。

有没有人有他们可以提供或链接到的示例验证 DAE 文件,换句话说,sceneSource.identifiersOfEntries(withClass:SCNGeometry.self)将返回 SCNGeometry 标识符...这将帮助我解决 SketchUp 正确格式化 SketchUp Collada dae 文件的任何问题出口商。

Apple 自己的 scenekit 文档似乎没有详细说明每个 scn 类如何与 Collada 架构协调。

**注意:**我在 iOS 应用程序中加载或使用 dae 文件时没有问题。或转换为 SCN 文件格式。此问题仅涉及通过“identfiersOfEntries”从 sceneSource 中提取 id