SceneKit:将节点与模型对象相关联
SceneKit: Associating Nodes with Model Objects
我需要将 SceneKit Node 对象与程序中的任意对象相关联,并且正在寻找最佳解决方案。
这是我的意思的一个例子:
假设我有一个程序可以使用 SceneKit 渲染分子中的原子。我有 类 Molecule
和 Atom
来模拟我的数据。然后我使用 SceneKit 渲染分子。
当我点击 Scene View 中的球体节点时,我需要知道球体代表哪个 Atom
对象(Molecule
包含一个 Atoms
的数组)
我可以创建一个字典,将 Node
映射到 Atom
对象,但想知道是否有办法将 Atom
对象引用添加到球体节点。应该使用键值绑定吗?
我是 Cocoa 编程的新手,正在寻找一种方法的正确方向的推动力。然后我可以研究实施细节。
从几个不同的 SCNNode
子 class 开始怎么样?第一个用于您的原子,第二个用于您的分子。每个 MoleculeNode 都有一个或多个 AtomNode 作为子节点。 AtomNode 和 MoleculeNode 对它们所代表的 Atom 或 Molecule 有弱引用。
现在您可以轻松移动或旋转 MoleculeNode,所有 AtomNode 都会随之移动。每个 AtomNode 的几何形状将保持固定,相对于父 MoleculeNode。
命中测试将 return 原子节点和分子节点。如果需要,您可以通过节点的 class 或通过将节点的 name
设置为 "Atom" 或 "Molecule" 来过滤该结果。 SCNHitTestBoundingBoxOnlyKey
如果您想对所需的点击精度不严格,那么 SCNHitTestBoundingBoxOnlyKey
可能会有用。
作为一个小的替代方案,您可以 Map
从 SCNNode
到 ModelObject
。
我需要将 SceneKit Node 对象与程序中的任意对象相关联,并且正在寻找最佳解决方案。
这是我的意思的一个例子:
假设我有一个程序可以使用 SceneKit 渲染分子中的原子。我有 类 Molecule
和 Atom
来模拟我的数据。然后我使用 SceneKit 渲染分子。
当我点击 Scene View 中的球体节点时,我需要知道球体代表哪个 Atom
对象(Molecule
包含一个 Atoms
的数组)
我可以创建一个字典,将 Node
映射到 Atom
对象,但想知道是否有办法将 Atom
对象引用添加到球体节点。应该使用键值绑定吗?
我是 Cocoa 编程的新手,正在寻找一种方法的正确方向的推动力。然后我可以研究实施细节。
从几个不同的 SCNNode
子 class 开始怎么样?第一个用于您的原子,第二个用于您的分子。每个 MoleculeNode 都有一个或多个 AtomNode 作为子节点。 AtomNode 和 MoleculeNode 对它们所代表的 Atom 或 Molecule 有弱引用。
现在您可以轻松移动或旋转 MoleculeNode,所有 AtomNode 都会随之移动。每个 AtomNode 的几何形状将保持固定,相对于父 MoleculeNode。
命中测试将 return 原子节点和分子节点。如果需要,您可以通过节点的 class 或通过将节点的 name
设置为 "Atom" 或 "Molecule" 来过滤该结果。 SCNHitTestBoundingBoxOnlyKey
如果您想对所需的点击精度不严格,那么 SCNHitTestBoundingBoxOnlyKey
可能会有用。
作为一个小的替代方案,您可以 Map
从 SCNNode
到 ModelObject
。