Quad Tree Culling이 무엇일까?

박승우·2024년 6월 25일
0

자 예순 번째 키워드인 'Quad Tree Culling'을 알아 보았다.

이전 키워드에서 알아보았던 Frustum Culling도 그래픽스 기술이고 이번 키워드도 그래픽스에 관련된 기술이기에 중요하게 생각하고 알아보았다.

Quad Tree Culling이 뭐에요?

먼저, 이 컬링을 이해하기 위해선 Quad Tree 자료 구조에 대해 이해해야 한다. Quad Tree는 공간을 4개의 사분면으로 나누어 관리하는 트리 구조로, 각 노드는 일정한 기준에 따라 나누어질 수 있다. 일반적으로 2D 공간에서 사용되며, 각 노드는 4개의 자식 노드를 가질 수 있다. 각 노드는 특정 영역을 대표하며, 필요에 따라 더 잘게 분할될 수 있다.

Quad Tree 자료 구조

Quad Tree는 공간을 사분면으로 나누어 관리하는 트리 구조이다. 주로 2차원 공간에서 사용되며, 각 노드는 4개의 자식 노드를 가질 수 있다. 각 노드는 공간을 나누는 기준에 따라 재귀적으로 분할될 수 있다. 예를 들어, 화면을 기준으로 정사각형 영역을 나누어 관리할 수 있다.

Quad Tree Culling의 구체적인 작동 방식

  1. Quad Tree 구축: 먼저, 화면에 표시될 수 있는 모든 객체(주로 게임 개체나 물체들)를 Quad Tree에 추가한다. 이 때, 각 객체는 자신이 위치한 영역에 해당하는 Quad Tree 노드에 매핑된다.

  2. 시야 영역 정의: 화면에 보이는 부분을 정의한다. 일반적으로 게임에서는 카메라의 위치와 시야각에 따라 시야 영역이 결정된다. 시야 영역은 일반적으로 직사각형이며, 이는 Quad Tree의 공간 분할과 비슷한 개념이다.

  3. 시야 영역과 Quad Tree 노드의 상호작용

  • 시야 영역과의 교차 검사: Quad Tree Culling은 시야 영역과 각 Quad Tree 노드가 얼마나 겹치는지를 확인한다. 시야 영역과 겹치지 않는 노드들은 화면에 렌더링할 필요가 없으므로 렌더링 프로세스에서 제외된다.
  • Quad Tree 탐색: 시야 영역과 겹치는 노드들은 재귀적으로 탐색하여 해당 노드에 속한 객체들을 추출한다.
  1. 렌더링 최적화: 시야 영역에 포함된 객체들만 렌더링 대상으로 고려된다. 이로 인해 GPU와 CPU 자원을 절약하면서도 화면에 필요한 객체들만을 처리할 수 있다.

장점과 적용 예

성능 향상: Quad Tree Culling을 사용하면 화면에 표시할 필요가 없는 객체들을 렌더링에서 제외하여 성능을 향상시킬 수 있다. 특히 대규모 환경에서 매우 유용하다.

동적 객체 관리: Quad Tree는 객체의 추가 및 제거에 대해서도 효율적으로 처리할 수 있어 게임이나 시뮬레이션에서 동적으로 변하는 환경을 지원한다.

Quad Tree Culling의 활용 예

Quad Tree Culling은 게임 엔진이나 시뮬레이션 소프트웨어에서 널리 사용된다.
예를 들어, 대규모 2D 플랫폼 게임에서는 맵의 타일이나 객체들을 관리하고, 3D 게임에서는 시야에 따라 객체들을 관리하는 데 사용될 수 있다. 또한, 물리 시뮬레이션에서 입자 시스템이나 충돌 감지 등에도 적용될 수 있다.

결론 - 느낀 점

이전에 알아보았던 키워드와 연관이 되긴하는데 새로운 키워드라 좀 어려운듯 아닌듯 아리까리했다.

일단 이 트리구조에 대해서 이해하는것부터가 난관이었다... 하지만 깨우쳤고 직접사용을 해봐야 내것이 될 것 같다..

profile
게임을 좋아하는 사람 입니다!

0개의 댓글

관련 채용 정보