기술(Tech, IT)/컴퓨터 그래픽스 (Computer Graphics)

[CG] Scenegraph - 2

Daniel803 2023. 11. 24. 15:18

Scenegraph의 scene management에 대해 좀 더 알아보자. Scenegraph를 통한 scene management에는 lights, cameras, meshes (3D models), animations 등 3D scene의 다양한 요소를 구성하고 제어하는 작업이 포함된다. 이는 scene 조작 및 렌더링 프로세스를 간소화하는 Scenegraph의 계층적 구조에 의해 수행된다. 작동 방식은 아래와 같다.

 

  1. Transformations and Propagation
    : 계층 구조의 부모 노드에 적용된 transformations (예: translation, rotation, scaling)은 모든 자식 노드에 영향을 준다. 예를 들어, 부모 노드인 비행기 모델을 회전하면 모든 부분(날개, 꼬리 등 자식 노드)이 함께 회전한다. 따라서 여러 부분으로 구성된 복잡한 객체를 더 쉽게 조작할 수 있다.

  2. Efficient Rendering
    : Scenegraph는 현재 view에서 가시성 또는 관련성에 따라 렌더링해야 하는 요소와 무시(culling) 할 수 있는 요소를 결정할 수 있다. 예를 들어, 카메라 시야에 없는 객체는 렌더링 중에 건너뛰어 performance을 최적화할 수 있다.

  3. Resource Management
    : Scenegraph는 textures, shaders, meshes와 같은 리소스를 관리하는 데 도움이 된다. 공유되는 리소스를 중복하지 않고 여러 노드에 연결할 수 있어 메모리 사용량과 로드 시간을 줄일 수 있다.

  4. Lighting and Camera Management
    : lights와 caemra도 Scenegraph의 일부다. 이를 통해, scene의 조명 및 보기 방식을 동적으로 제어할 수 있다. 예를 들어, 광원 노드를 이동하면 해당 광원의 영향을 받는 모든 객체의 조명이 변경된다.

  5. Animation Handling
    : 애니메이션은 특정 노드에 연결할 수 있다. 노드에 애니메이션이 적요되면 해당 노드의 모든 자식 노드에도 애니메이션이 적용된다. 이는 캐릭터의 몸통을 움직이면 머리와 팔이 자동으로 함께 움직이는 캐릭터 애니메이션에 특히 유용하다.

  6. Simplifying Complex Interactions
    : Scenegraph은 계층 구조가 명확하기 때문에 scene의 여러 요소 간의 복잡한 상호작용을 보다 쉽게 관리할 수 있다. 예를 들어, 다양한 객체의 위치와 상태에 따라 충돌을 감지하거나 이벤트를 트리거하는 작업을 더 쉽게 관리할 수 있다.

종합하면, Scenegraph를 통한 scene management는 복잡한 3D scene을 구조적이고 효율적으로 처리할 수 있는 방법을 제공해 컴퓨터 그래픽과 게임 개발에서 렌더링, 리소스 관리, 인터랙션 처리 작업을 매우 간소화한다.

 

참고

- https://en.wikipedia.org/wiki/Scene_graph