我有一个简单的SceneKit视图,可以显示天线设计,如电视天线,或者这个不太常见的例子,一个双二阶。
这些设计包含许多旋转和定位的SKCylinders
。
与该视图连接的是一个NSTableView,它列出了柱面的端点,并允许用户编辑它们。当他们退出编辑器时,3D视图会更新。
问题是我的代码当前总是将<{em>>新的SKCylinders
添加到视图中并进行每次重绘。因此,当他们进行编辑时,SKCylinders
的多个副本最终会出现在视图中。我正在查看试图找出解决此问题的最佳方法的文档。
1)我应该在每次绘制之前简单地移除所有几何节点,然后将其刷新吗?有没有一种简单的方法可以找到几何体的所有节点,而不是相机或灯光(或其他)?
2)是否有某种方法可以识别集合中的节点,所以我可以说,由于几何体的第5行发生了变化,我需要调整node-with-something = 5?我虽然使用name
,但我没有看到按名称查找节点的方法
3)(2)不是一个完整的解决方案,因为我允许列表中的插入和删除,因此它可能是&#34;此后的所有内容都会发生变化&#34;。这会带我到(1)还是有更好的解决方案?
感谢您的任何建议!
答案 0 :(得分:1)
我还没有使用过SceneKit,但是从文档中可以看出,您可以通过调用名称查找节点:
SCNScene.rootNode.childNodeWithName( name, recursively: true)
或者只是递归地遍历childNodes。
根据节点层次结构的复杂性,实现插入和删除可能很棘手但是,一旦找到了您正在寻找的节点,那就是管道(修剪和移植树操作和这样)。