사냥꾼의 IT 노트

OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 가시성 판단 본문

OpenGL로 배우는 3차원 컴퓨터 그래픽스

OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 가시성 판단

가면 쓴 사냥꾼 2020. 12. 7. 02:25

■후면 제거

●전면: 법선 벡터가 시점을 향한 면

●후면: 법선 벡터가 시점 반대쪽을 향한 면(시점에서 멀어지는 방향의 법선 벡터를 지닌 면)

●오른손의 법칙: 오른손을 명시된 정점 순으로 감싸 쥐었을 때 엄지 방향

●하나의 면 = 표면(법선 벡터의 방향) + 이면(법선 벡터가 없는 쪽)

○주전자가 뚫린 경우: 후면의 이면 = 표면

■절단 알고리즘

●절단: 물체면 중 가시 부피 내부에 존재하는 면만 걸러내기 위한 작업

●2차원 절단: 윈도우 -> 뷰 포트 -> 시저 박스

●3차원 절단: 가시부피 이용

●절단 다각형: 절단 사각형...

□코헨-서더런드 알고리즘: 선분 절단

●6비트 아웃코드에 의해 절단 연산의 속도를 높인 것 => 2차원 선분을 2차원 사각형을 기준으로 절단

●물체 공간 알고리즘

●4단계 알고리즘

●선분 분할: 왼쪽 위 -> 오른쪽 아래 순서 (임의로)

□리앙-바스키 알고리즘: 내부를 걸치는 경우를 빠르게 처리함

●교차점의 상대적인 위치에 의한 절단 알고리즘 (하변 -> 좌변 -> 상변 -> 우변)

●교차점을 찾아거 제거 혹은 유지함

□서더런드-핫지먼 알고리즘: 다각형을 위한 기법

●절단 다각형을 기준으로 순서대로 절단함 (상변 -> 우변 -> 하변 -> 좌변)

●선분을 연장한 직선을 기준으로 절단 (start poin -> end point)

●정점의 내부 이동 또는 외부 이동 시에 새로운 교차점을 계산하여 추가함

□웨일러-애서톤 알고리즘: 오목 문제점 해결을 위한 기법

●내부에서 외부로 가는 교차점이 추가되면 즉시 그 교차점으로부터 절단 사각형을 따라서 반시계 방향으로 진행함

●분리된 여러 개의 다각형 생성 가능

■지엘의 절단

●서더런드-핫지먼 알고리즘과 유사함 (4차원 절단 좌표계에서 수행)

●깊이 버퍼 테스트: void glDepthFunc

●깊이 버퍼 활성화

※3차원 정규화 장치 좌표계에서 절단을 가하지 않는 이뉴는 시점 뒤쪽에 있는 물체 처리 시 발생하는 오류 때문임

■은면 제거

●Hidden surface removal: 앞 물체에 가려져서 안 보이는 부분을 제거하는 작업 (물체의 깊이 정보를 기준으로 판단)

★뒷면을 제거하는 것이 아닌, 보이지 않는 앞면을 제거하는 것

●페인터 알고리즘: 먼 것에서 가까운 것으로 순차적으로 덧칠하는 기법

●zmax: A B를 zmax 기준으로 그림 -> C와 D는 중첩되지 않으므로 무관 (면의 분할)

●지-버퍼 알고리즘: 화소 공간으로 사상하여 화소 공간 해상도로 은면을 판단하는 기법 => 깊이 값을 비교해 작은 값을 채워넣음

○지-버퍼: 화소별로 깊이를 저장하기 위한 메모리 (if 화소로 사상되는 물체면의 깊이가 현재 지-버퍼의 깊이보다 작으면 지-버퍼와 프레임 버퍼가 동시에 새로운 내용으로 기록됨)

●선형 보간: 정점으로부터 내부점의 깊이 및 컬러를 보간함 (래스터 변환 단계에서 실행)