从 SceneKit 中删除所有几何体,或即时修改它

removing all geometry from SceneKit, or modifying it on the fly

我有一个简单的 SceneKit 视图,可以显示天线设计,例如电视天线,或者这个不太常见的示例,双二阶天线。

这些设计由许多 SKCylinders 个旋转和定位组成。

与该视图相连的是一个 NSTableView,它列出了圆柱体的端点并允许用户编辑它们。当他们退出编辑器时,3D 视图会更新。

问题是我的代码当前总是在每次重绘时 添加 新的 SKCylinders 到视图。因此,当他们进行编辑时,SKCylinders 的多个副本最终出现在视图中。我正在查看文档,试图找出解决此问题的最佳方法。

1) 我是否应该在每次绘制之前简单地删除所有几何节点然后重新生成它?有没有一种简单的方法可以找到所有几何节点,而不是相机或灯光(或其他)?

2) 有没有什么方法可以识别集合中的节点,所以我可以说由于几何的第 5 行发生了变化,我需要调整 node-with-something=5?我虽然考虑使用 name 但我没有看到按名称查找节点的方法

3) (2) 不是一个完整的解决方案,因为我允许在列表中插入和删除,所以它可能是 "everything after this changes"。这会将我带到 (1) 还是这里有更好的解决方案?

感谢任何建议!

我还没有使用过 SceneKit,但是从文档来看,您似乎可以通过调用以下命令按名称查找节点:

SCNScene.rootNode.childNodeWithName( name, recursively: true) 

或者自己递归地遍历子节点。

根据节点层次结构的复杂性,实现插入和删除可能很棘手,但是,一旦找到您要查找的节点,这只是管道(修剪和移植树操作等)。