【问题标题】:removing all geometry from SceneKit, or modifying it on the fly从 SceneKit 中删除所有几何图形,或动态修改它
【发布时间】:2016-09-27 08:25:40
【问题描述】:

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

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

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

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

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

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

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

感谢您的建议!

【问题讨论】:

    标签: swift scenekit


    【解决方案1】:

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

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

    或者只是自己递归地遍历 childNodes。

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

    【讨论】:

    • 我最终使用了这个解决方案,并以 NSURLID 作为名称,所以我知道它们是独一无二的。
    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2013-07-19
    • 2020-10-18
    相关资源
    最近更新 更多