문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류:레스터 그래픽스]] == 개요 == [[컴퓨터 그래픽스]]에서 안보이는 물체를 [[랜더링]]하지 않아서 자원을 절약하는 기법을 통칭한다. 컬링에는 View volume culling, Occlusion culling, Back-face culling 3가지 종류가 있다. 각각 카메라 밖의 물체, 오브젝트 뒤에 가려져서 안보이는 물체, 한 오브젝트 내에서 뒷면을 랜더링 하지 않아서 자원을 절약하는 방식으로 구현된다. == View volume culling == [[view volume]]밖의 물체를 렌더링 하지 않는 기법이다. [[Bounding Box]]를 통해서 물체가 화면 밖에 있는지 아닌지를 구분한다. Bounding box 는 원형, 박스, 축 정렬 박스 (axis-aligned bounding box AABB)등이 있으며, AABB 방식이 현재 빠르고 정확한 방식으로 알려져 있다. AABB 방식은 화면의 축과 Bounding box의 축을 정렬하는 직사각형으로 bounding box를 구현하는 방식을 말한다. View volume Culling 은 3가지의 경우가 있다. 내부, 경계, 외부. 내부는 그대로 화면에 출력하며 경계의 물체는 [[Clipping]]을 이용해서 잘라내 출력해야 한다. 외부의 오브젝트는 [[랜더링]] 프로세스에서 탈락시켜서 출력시키지 않는다. [[파일:뷰 볼륨 컬링.png|700픽셀|가운데|뷰 볼륨 컬링]] 위의 그림은 원을 바운딩 박스로 사용했을경우 처리되는 수식을 정리한 것이다. r은 원의 반지름이며, n은 면의 노말벡터, c는 원의 중심, a는 면위의 임의의 한 점을 말한다. 사실 <math> p(t) = n(t-a) </math>는 노말벡터가 n이고 한 점이 a인 면의 방정식임으로 윗식은 면과 원과의 거리를 구한것으로 이를 생각하면 윗 표현은 자명하다. === Hierarchical Culling === 바운딩 박스가 크면 일단 최소단위의 바운딩 박스로 쪼개어서 좀더 세밀하게 체크하는 기법을 말한다. 트리 구조를 이용한다. === 문제점 === 만약 거울과 같은 상황이면 외부에 있는 물체도 처리해야 하는데 이 경우는 어떻게 처리하는 가? 즉 바운딩 박스 외부의 물체에 의한 효과를 내부의 물체에 반영할 수 없다는 문제가 있다. == Occlusion culling == == Back-face culling == 오브젝트 뒷면을 [[랜더링]]하지 않는 기법이다. 삼각형의 노말이 카메라를 향하는지 아니면 카메라 반대편을 향하는지 검사하여 구현한다. [[파일:백페이스 컬링.png|프레임없음|가운데|700픽셀||백페이스 컬링]] 윗 식에서 e는 삼각형위의 어떤 정점이라 하고 n을 삼각형의 노말벡터라고 하자. 이경우 e와 n을 내적하면 e와 n의 기울기를 알 수 있다. 만약 이 기울기가 90도 이내이면 카메라가 검출할 수 있는 시야각안에 있는 것이고 아니면 뒷면일 것이다. 이를 이용하여 en의 부호를 계산해서 만약 음수이면 [[랜더링]]하지 않는 방식으로 자원을 절약한다. == 문제점 == 만약 오브젝트에 구멍이 있어서 뒷면을 랜더링해야 한다면? 오브젝트가 투명하다면? 등과 같이 오브젝트의 뒷면을 랜더링해야 하는 상황에서 문제가 발생한다. Culling 문서로 돌아갑니다.