내 게임에서 장면 그래프를 구현할지 여부에 대한 결정으로 어려움을 겪고 있습니다. 그러한 도구를 요구하는 사용 사례가 있지만 구현 세부 정보를 얻을 수 없었습니다.
일부 배경 : 모바일 플랫폼 (주로 Android)을 대상으로 한 우주 사수 형 게임을 작성 중이며 내 코드는 거의 C ++입니다. 미들웨어를 사용하지 않습니다. 특히 렌더링 및 물리 엔진은 제 자신의 작품입니다. 물리 엔진은 힘과 충격에 따라 물체의 위치를 업데이트합니다. 나는 아직 애니메이션 시스템이 없지만 어느 시점에서 이것을 방문 할 수도 있습니다 (이 토론과 관련이 있거나 없을 수도 있습니다).
먼저 좋은 사용 사례를 설명하겠습니다. 여러 개의 개별 부품으로 구성된 보스를 갖고 싶습니다. 각 부품은 독립적으로 손상 / 파괴 될 수 있습니다. 예를 들어, 다른 보스 개체와 독립적으로 피해를받을 수있는 팔이있는 보스가있을 수 있습니다. 팔이 파괴되면 보스의 어깨에 위치한 불 입자 효과가 이제 팔이 파괴되었음을 나타낼 수 있습니다.
그대로, 나는 물리 엔진의 제약 조건으로 그러한 문제를 해결하여 그러한 복합 객체를 함께 유지하려고 시도했습니다. 그러한 제약 중 하나는 0 자유도를 제공하며 본질적으로 변환 행렬입니다. 이것은 실제로 아래 설명 된 장면 그래프에서 궁극적으로 나를 끄는 문제를 피하기위한 시도입니다.
장면 그래프를 사용하지 않는 주된 이유는 물리 세계와 렌더링 장면 모두에서 중첩 된 객체 (부모의 변형을 상속하는 객체)를 유지하는 효율적인 방법을 찾을 수 없기 때문입니다. 물리 세계에는 객체가 월드 공간 (또는 적어도 동일한 공간)에 있어야하지만 렌더링 장면에는 부모 공간에 객체가 필요합니다. 두 공간 모두에서 위치를 추적하면 도움이 될 수 있지만 피할 수는 없지만 성능과 관련이있는 것은 아닙니다.
그러나 위에서 설명한 것과 같은 유스 케이스를 고려할 때 부모 공간에서 '작업'할 수있는 것이 매우 중요해질 것이며 제약 조건을 사용하여 물리 엔진이 이러한 관계를 유지하도록 강요하는 것은 문제가 될 것입니다.
위에서 설명한 유스 케이스와 곤경을 감안할 때 그래프 구조를 사용하여 한 객체에서 다른 객체로 변환을 전달해야합니까? 그렇다면 물리 엔진이 어떻게 새로운 위치를 계산하고 다른 공간에있는 물체에 대한 교차 테스트를 수행해야합니까?