자 마흔 아홉 번째 키워드인 'Scene Graph'를 알아 볼 것이다.
게임개발 분야에서 사용되는 개념이라고 들어서 이론을 중심으로 알아보았다.

Scene Graph(장면 그래프)는 컴퓨터 그래픽스와 가상 현실, 게임 개발, 데이터 시각화 등 다양한 분야에서 사용되는 데이터 구조이다.
Scene Graph는 계층적 구조를 통해 장면 내 객체들 간의 관계를 표현한다. 이 구조는 트리(tree) 또는 그래프(graph) 형태로 표현되며, 각 노드는 객체 또는 객체의 속성을 나타낸다.
Scene Graph는 여러 유형의 노드와 속성으로 구성되며, 각 구성 요소는 특정한 기능을 담당한다.
주요 구성 요소
루트 노드(Root Node)
최상위 노드로, 모든 장면 그래프의 시작점이다.
모든 다른 노드들의 부모 역할을 한다.
일반적으로 Scene Graph 전체를 관리하는 전역 변환 또는 설정을 포함한다.
내부 노드(Internal Node)
다른 노드를 자식으로 가지며 계층 구조를 형성한다.
그룹 노드(Group Node)라고도 불리며, 자식 노드들을 하나의 그룹으로 묶는다.
단말 노드(Leaf Node)
자식 노드가 없는 노드로, 실제 렌더링될 객체를 나타낸다.
주로 기하 정보(Geometry)와 외형 정보를 포함한다.
- 예: 삼각형, 큐브, 구 등의 기본 기하 도형, 텍스처 맵핑된 객체 등
변환 노드(Transform Node)
위치, 회전, 크기 조절 등 공간 변환 정보를 포함한다.
부모 노드의 변환을 자식 노드에게 계승하여 복잡한 변환을 단순하게 관리한다.
- 예: 특정 위치로 이동(Translation), 특정 축을 중심으로 회전(Rotation), 크기 조절(Scaling) 등
속성 노드(Property Node)
색상, 재질, 텍스처 등의 렌더링 속성을 정의한다.
- 예: 표면의 색상(Color), 광택 또는 거친 표면의 재질(Material), 텍스처 맵(Texture Map) 등
Scene Graph의 주요 동작 방식
트래버설(Traversal)
Scene Graph를 순회하며 각 노드의 정보를 처리한다.
주로 전위 순회(Pre-order Traversal) 방식을 사용하여 부모 노드의 정보를 먼저 처리한 후 자식 노드로 이동한다.
트래버설은 렌더링, 충돌 감지, 애니메이션 업데이트 등 다양한 작업을 수행하는 데 사용된다.
변환의 계승
상위 노드의 변환 정보가 자식 노드로 전달된다.
변환 행렬(Transformation Matrix)을 사용하여 변환 정보를 누적한다.
게임 개발
캐릭터 애니메이션: 캐릭터의 뼈대(Skeleton)를 Scene Graph로 관리하여 각 뼈의 변환을 계층적으로 적용, 자연스러운 움직임을 구현한다.
월드 구성: 게임 월드의 각 요소(건물, 나무, 차량 등)를 Scene Graph로 관리하여 효율적으로 렌더링한다.
가상 현실(VR)
환경 구성: 가상 현실 환경을 Scene Graph로 관리하여 사용자가 상호작용할 수 있는 모든 객체를 체계적으로 배치하고 렌더링한다.
실시간 렌더링: 고성능 GPU와 Scene Graph를 활용하여 실시간으로 복잡한 장면을 렌더링한다.
애니메이션 영화
씬 구성: 영화의 각 장면을 Scene Graph로 관리하여 복잡한 애니메이션을 체계적으로 구성하고 렌더링한다.
효율적 렌더링: Scene Graph를 통해 중복된 객체의 렌더링을 피하고, 최적화된 렌더링을 수행한다.
데이터 시각화
3D 데이터: 복잡한 3D 데이터를 Scene Graph로 시각화하여 데이터의 구조와 관계를 직관적으로 이해할 수 있도록 한다.
상호작용: 사용자가 데이터를 탐색하고 상호작용할 수 있는 기능을 제공, 예를 들어 줌(Zoom), 팬(Pan), 회전(Rotate) 등을 구현한다.
이 Scene Graph라는 기술이 Sentence 방식에 대해 에러 사항이 있어 나온 기술이라고 봤다.
그 지식을 바탕으로 이 키워드에 대해서 공부하는데 사실 렌더링 분야가 쉽게 접한 분야가 아니라
어려웠다.
Direct X를 공부하며 더 상세하게 공부를 해야할 것 같다.