我没有运气试图有选择地提取场景文件的某些元素。我正在使用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规范和模式。在past SO answer中,建议避免Collada 1.5版,因为Scenekit不支持它。
当我使用场景图(具有附加几何图形,灯光,相机等的节点的层次结构)查看Xcode中的Collada dae文件时,对应于每个节点/几何的属性窗口在单击不同时显示“无标识符”场景图中的几何/节点。我可以通过使用文本编辑器手动编辑dae文件中的xml架构来添加一些名称(或者在相关节点/几何上单击场景图部件并重命名...但即使每个几何元素都有一个id =“geometry1”等....在orignal Collada dae文件架构中......仍未显示为Xcode属性菜单中的标识符。
有没有人有他们可以提供或链接的示例验证DAE文件,换句话说,sceneSource.identifiersOfEntries(withClass:SCNGeometry.self)将返回SCNGeometry标识符...这将帮助我解决SketchUp Collada的任何问题SketchUp导出器未正确格式化dae文件。
Apple自己的场景包文档似乎没有详细说明每个scn类如何与Collada架构协调。
注意:我在iOS应用程序中加载或使用dae文件时遇到问题。或转换为SCN文件格式。此问题仅涉及通过“identfiersOfEntries”
从sceneSource中提取id