2017-04-08 12 views
0

저는 SceneKit에서 3 차원의 force-directed graph을 쓰고 있습니다. 노드를 고정 된 전하와 질량을 지닌 물리적 인 구체로 모델링하고 있습니다.SceneKit에서 물리 필드를 결합하려면 어떻게해야합니까?

전형적, 후크의 법칙에 기초하여 스프링 형상 인력 그래프의 에지의 엔드 포인트 쌍을 유치 사용된다

이러한 분야는 필수 동성을 달성하기 위해 반경 중력과 전기장을 발휘해야 서로를 향해, 동시에 쿨롱의 법칙에 기초한 대전 된 입자들과 같은 반발력은 노드들의 모든 쌍을 분리하는데 사용된다.

이 제공하지만 단 하나의 physicsField 속성을 발견하면 문제가 발생합니다.

현재 두 개의 별도 물리적 노드가 같은 공간을 차지하지 않으면이 작업을 수행 할 방법이 없습니다. 여러 필드를 수용하기 위해 정적/동적 실제 본문을 사용하여 자식 본문을 삽입하려했지만이 방법은 전혀 작동하지 않는 것입니다 (즉, 아무 일도 일어나지 않습니다). 다소 관련 주에


- SceneKit의 물리 엔진은 3D의 힘을 지시 그래프 그리기는 프레임 워크의 대표되는 사용에 해당 주어진 나에게 오히려 불완전 느낀다.

예를 들어, SceneKit에는 SKPhysicsJointSpring의 3D 버전이 없으므로 노드 간 에지 매력 물리를 구현하는 것이 매우 지루합니다. 이고 기능은 SCNPhysicsBehavior이지만 실제로 사용자 지정 동작을 만들기 위해 서브 클래 싱을 문서화 한 것은 없습니다. 더 나쁜

는 여전히 공용 인터페이스는 제작, 오버라이드 (override) 할 방법을 제공하지 않습니다 리버스 엔지니어링 앱 스토어 사용에 대한이 위험하고 안전하지 않은 :

open class SCNPhysicsBehavior : NSObject, NSSecureCoding { 
} 

답변

0

면책 조항 : 내가 작성하지 않은 SceneKit 코드와이 문서를 읽는 것을 기준으로 삼기 때문에이 답변을 좋은 크기의 소금으로 가져 가십시오.

SCNPhysicsField은 영향을받는 노드의 위치가 시간에 따라 어떻게 변하는지를 결정합니다. 한 번에 한 필드를 처리하는 것이 쉽지만 다른 필드 유형이 상호 작용할 때는 그렇지 않습니다. 노드에 동시에 영향을 미치는 여러 필드의 효과를 계산하는 것이 정확하고 빠를 수 없다고 생각합니다. 따라서 한 번에 노드에 physicsField을 조합 할 수 없습니다.

그러나 SceneKit에서 사용자 정의 필드를 SCNPhysicsField.customField()으로 만들고이 필드를 필드 노드의 자식에만 적용 할 수 있습니다. 그런 다음 SCNFieldForceEvaluator을 구현할 때 Hooke의 법칙과 Couloumb의 법칙을 모두 처리하여 모든 자식 노드를 배치하는 계산을 수행 할 수 있습니다.

단순하지만 정확하지 않은 방법 (그리고 그것이 작동하는지 잘 모르겠다)은 전적으로 필드를 사용하여 자식 노드의 극성이 부모 노드의 극성과 반대되는 방식으로 수행해야합니다.

+0

순수하게 전기장을 사용하면 확실히 작동하지 않습니다. –

+0

Hooke와 Coulumb의 법칙을 사용하는 것과 같지는 않지만 그래프 시각화의 기초를 제공 할 수 있습니다. 왜 효과가 없을 것이라고 말하면서 확장 할 수 있습니까? – roop