다른 장면 그래프 기술이 무엇을하고 있는지 잘 읽어 보면 많은 이점을 얻을 수 있다고 생각합니다.
배경
예를 들어, Ogre3D 설명을보십시오. 오픈 소스 인 장면 그래프 기반 그래픽 엔진입니다. 튜토리얼을보고 씬 노드가 어떻게 사용되는지 봅니다 (참고 : 오우거 사용 방법을 배우는 것이 아니라, 오우거의 씬 노드 및 씬 관리자에 어떤 기능이 있는지 알려 드리지 않았습니다)
SceneNode 설명서 :
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_node.html
SceneManager 설명서 :
http://www.ogre3d.org/docs/api/1.9/class_ogre_1_1_scene_manager.html
다른 가치가있는 것은 다음 링크입니다 :
http://sgl.sourceforge.net/#features
OpenGL 기반 장면 그래프 솔루션이며 기능 페이지에는 포함 할 수있는 모든 노드가 표시됩니다.
제안 된 노드
씬 그래프는 게임 로직에서 최대한 추상화되어야하므로 의존성 문제가 없다고 생각합니다. 각 글 머리 기호에 대해 다음과 같이 말합니다.
게임 배우는
아마 아니오라고 말할 것입니다. 오우거와 마찬가지로 기본 Entity 클래스 (객체 별 논리 포함)와 Entity 멤버 포인터가있는 기본 SceneNode를 사용하여 객체를 렌더링하기위한 적절한 정보를 얻습니다 (위치, 방향 등)
편집 : 여기 장면 그래프에 게임 배우를 포함시키지 말라고 말하는 것이 아닙니다 (그렇지 않으면 아무것도 표시되지 않습니다 : P) 논리적 게임 배우 클래스를 참조하는 장면 노드가 있다고 말하고 있습니다. 게임 오브젝트의 렌더링과 업데이트가 느슨하게 결합되었습니다.
간단한 정적 게임 ojbects
예
게임 트리거?
아니요, 이것은 게임 고유의 논리처럼 들립니다.
게임 조명?
예
게임 카메라?
예
무기 총알?
이것에 대해 완전히 확신하지는 못하지만 아마도 예라고 말할 것입니다. 그러나 "BulletCollection"부모 장면 노드에 대한 모든 글 머리 기호를 원할 것입니다. 그래서 그 위치를 캐시 할 수 있으므로 장면 그래프를 많이 제거하고 렌더링 할 글 머리 기호를 추가합니다.
게임 폭발과 특수 효과?
확실하지 않습니다, 나는 다른 사람이 그 대답을하도록 할 것입니다.
장면 그래프 범위
상대적으로 작은 레벨 인 경우 전체 레벨을 장면 그래프에 저장 한 다음 Octree (일반적으로 실외 환경) 또는 BSP 트리 (일반적으로 실내 환경)를 사용하여 가시성을 최적화 할 수 있어야합니다.
레벨이 훨씬 높고 레벨로드를 원하지 않는 경우 스트리밍이 시작되는 곳이지만 이는 또 다른 문제입니다. 작은 수준부터 시작하여 성능에 부정적인 영향을 미치지 않으면 서 얼마나 크게 만들 수 있는지 점진적으로 확인합니다.
결론
장면 그래프는 게임 루프의 렌더링 부분입니다. 렌더링과 논리 업데이트를 너무 밀접하게 결합해서는 안됩니다. 그렇지 않으면 성가신 종속성 문제가 발생할 수 있습니다.