我在SceneKit中编写了一个三维force-directed graph,我将节点建模为具有固定费用和质量的物理球体。如何将SceneKit中的物理字段组合在一起?
典型地,基于虎克定律的弹簧状的吸引力被用于 吸引对图形的边缘的端点:
这些球必须以达到所要求的动态施加径向引力和电场彼此相对,同时使用诸如基于库仑定律的带电粒子的排斥力来分离所有的节点对。
当发现SCNNode
只提供一个physicsField
属性时,会出现问题。
目前,我没有办法做到这一点,没有两个单独的物理节点占据相同的空间(yuck和不可能?)。我试过用静态/动态物体插入子体来容纳多个字段,但是这种方法似乎根本不起作用(即没有任何反应)。
在一个有点相关的说明 - SceneKit的物理引擎感到相当不完整的我,因为三维力向图绘制在这样的框架的类型化使用率下降。
例如,SceneKit不具有SKPhysicsJointSpring
的3D版本,使得实现节点到节点边缘吸引物理学的工作变得非常繁琐。虽然它确实功能SCNPhysicsBehavior
,但它几乎没有任何文档来创建自定义行为的子类。
仍然在公网接口没有提供任何方法来覆盖,使得反向工程它的风险和不安全的应用程序商店的使用:
open class SCNPhysicsBehavior : NSObject, NSSecureCoding {
}
纯粹使用电场绝对不行。 –
这与使用Hooke和Coulumb的定律不同,但它似乎可以为图形可视化提供基础。你能扩展你为什么说它不起作用吗? – roop