首页 文章

从SceneKit中删除所有几何体,或在运行中修改它

提问于
浏览
0

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

enter image description here

这些设计包括许多旋转和定位的 SKCylinders .

与该视图连接的是NSTableView,它列出了柱面的 endpoints ,并允许用户编辑它们 . 当他们退出编辑器时,3D视图会更新 .

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

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

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

3)(2)不是一个完整的解决方案,因为我允许列表中的插入和删除,因此它可能是“此更改后的所有内容” . 这会带我到(1)还是有更好的解决方案?

谢谢你的建议!

1 回答

  • 1

    我还没有使用过SceneKit,但是从文档来看,似乎你可以通过调用以下方式找到名称的节点:

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

    或者只是递归地遍历childNodes .

    根据节点层次结构的复杂性,实现插入和删除可能很棘手但是,一旦找到了您正在寻找的节点,那就是管道(修剪和移植树操作等) .

相关问题