정의
3D 공간에는 다양한 오브젝트가 들어갈 수 있다. 360도로 오브젝트가 배치된 일반적인 상황이라 생각할 때, 시야 안에 있는 오브젝트는 전체 공간에 있는 오브젝트에 비해 굉장히 한정적이므로 절두체 컬링은 시야 밖에 있는, 렌더링 되지 않는 오브젝트를 걸러내기 위한 기법이다.
1. 여섯 개의 평면을 이용한 가장 기본적인 컬링 방식
카메라 시야 상, 하, 좌, 우 방향으로의 경계선이 되는 평면, 카메라 시야에 수직하며 가장 가까운 곳과 먼 곳의 시야 범위를 나타내는 평면으로 총 6개의 평면을 이용해 오브젝트가 절두체에 포함되는지를 계산하는 방식.
이름
|
정의
|
근평면(Near Plane)
|
카메라와 수직하며 제일 가까운 곳의 시야 범위를 나타내는 평면
|
원평면(Far Plane)
|
카메라와 수직하며 제일 먼 곳의 시야 범위를 나타내는 평면
|
좌평면(Left Plane)
|
카메라의 좌측 시야 범위를 나타내는 평면
|
우평면(Right Plane)
|
카메라의 우측 시야 범위를 나타내는 평면
|
상평면(Top Plane)
|
카메라의 상단 시야 범위를 나타내는 평면
|
하평면(Bottom Plane)
|
카메라의 하단 시야 범위를 나타내는 평면
|
개별 평면을 카메라 시야 범위 내에서만 초점을 맞추지 않고, 무한히 확장해 뻗어나가는 평면이라 가정하자. 이 평면에 방향이 지정된다면, 특정 점이 이 방향에 속해있는지, 아니면 반대 방향에 속해있는지 알 수 있고 모든 평면에 대해 안쪽에 있다는 평가를 받는다면, 이 좌표값은 절두체 내부에 있다고 판단할 수 있다.
즉, 이 평면은 다음 두 정보로 분리된다.
법선
|
무한 평면의 위쪽이 되는 방향 벡터
|
원점과의 거리
|
법선 벡터가 원점으로부터 떨어진 거리
|
ax+by+cz+d
2. 경계구/경계상자 컬링 기법
일반적으로 3D 환경을 표현하는 데에는 상당히 많은 버텍스가 사용된다. 모든 정점에 대해 절두체 컬링을 적용하려면 부하가 상당히 심하므로 컬링을 적용할 때, 오브젝트 단위로 먼저 간단히 컬링을 적용해준 후, 정점 단위로 컬링을 수행하는 식으로 최적화를 해준다.
3. 쿼드 트리 컬링
쿼드 트리 컬링은 주로 지형에 대해 많이 사용되는 컬링 방식이다. 지형을 4등분 하는 형태로 나눠주고, 나누어진 지형을 또다시 4등분 하는 것을 반복하는 형태로 노드를 만들어두고, 개별 단계에서 사분면 자체가 절두체에 포함되지 않으면 해당 사분면 전체를 제외해버리는 방식이다.
단순한 비교 과정으로 커다란 영역 전체를 컬링 할 수 있다는 장점이 있다.
4. 계통적 장면 조직화 - 평면 마스킹
일반적으로 3D 공간은 부모/자식 관계를 이루며, 통상 이러한 관계에 있는 모델은 부모의 영역이 자식의 영역을 포함하거나, 유사한 위치에 있는 경우가 많다. 이런 경우를 상정하고, 부모 오브젝트의 절두체 컬링 비교 결과를 저장해둔다. 만약 부모가 자식의 영역을 포함하고 있는데, 부모가 절두체 안에 있다면 자식 역시 절두체 안에 있다고 판단할 수 있다. 부모가 절두체 밖에 있다면, 절두체가 무한 평면으로 이루어진 만큼, 어떤 영역에서는 포함으로 판정될 것이고, 어떤 영역에선 포함되지 않는 걸로 계산이 될 텐데 이걸 저장해놓고, 자식 노드에서는 부모 오브젝트에서 포함되지 않았던 위치만 재계산해주는 걸로 간추릴 수 있다. 이렇게 계층 구조에 따라 특정 절두체 평면에 대한 계산을 생략하는 최적화 기법을 평면 마스킹이라 한다.
5. 평면 응집성
3D 상에는 수많은 물체가 있다. 그중 대다수는 카메라 밖에 있을 것이다. 절두체로부터 거리가 상당히 먼 오브젝트라면, 몇 회의 프레임이 지나가도 절두체에 포함되지 않는 경우가 많다. 그렇기에 이전 판정의 결괏값을 기반으로 하여, 일정 수준 이상의 값으로 컬링된 오브젝트는 다음 프레임에서 아예 컬링 테스트를 생략할 수 있다. 통상 이 결괏값을 그대로 이용하지는 않고, 비트 값으로 스킵 대상 오브젝트인지의 여부를 마스킹 하는 형태로 저장해두었다가 다음 판정 때 쓴다.
6. 클리핑
컬링과 클리핑의 주요 차이점은 두 가지가 있다.
- 일반적으로 컬링은 정적인 오브젝트에, 클리핑은 동적인 오브젝트에 적용된다.
- 클리핑은 오브젝트의 폴리곤을 카메라에 맞게 잘라내는 연산이 추가된다.
주요 로직은, 카메라의 절두체 평면에 걸치는 폴리곤을 구한다. 폴리곤을 구성하는 벡터 중 일부가 절두체에 걸치는 경우를 판단하면 되겠다. 그리고 이 폴리곤의 정점을 폴리곤에 걸치는 점으로 재구성해, 절두체 밖으로 빠져나간 부분을 잘라내는 방식.
'그래픽스 > 공통' 카테고리의 다른 글
사원수 (Quaternion : 쿼터니언) (0) | 2022.07.25 |
---|---|
짐벌락 & 오일러 각 (Gimbal Lock & Euler Angle) (0) | 2022.07.25 |
렌더링 파이프라인 순서 및 기본 설명과 기본 지식 (Rendering Pipeline) (0) | 2022.06.20 |
Low-Level Layer (HAL, HEL) (0) | 2022.06.20 |
레이 트레이싱 (Ray Tracing) (0) | 2022.06.18 |