맛동산이

visible-surface determination 본문

CS/컴퓨터그래픽스

visible-surface determination

진ddang 2022. 6. 21. 20:25

가시표면 결정 알고리즘은 두 종류가 있다.

  1. object-precision algorithm : 객체 단위로 보이는 것인가 아닌가를 확인
  1. image-precision algorithm : 픽셀 단위로 보이는것인가 아닌가를 확인

보통 객체단위가 계산이 줄고, 간단한 편이지만 그래픽스에서 가장 중요한것은 사실적인 표현이며 이를 위해서는 픽셀 단위로 표현하는게 더 좋다.

하지만 픽셀단위로 확인하면, 데이터 계산량이 많아지는데, 이를 해결하기 위한 방법은 픽셀의 Coherence(일관성)과 Sorting(정렬)이다.

정렬을 통해서 동일한 투영선 상에 존재하면 깊이순서로 , 즉 관측자로부터 먼 픽셀은 비가시픽셀로 선택하는 방법을 사용하고,

일관성을 통해서 규칙성을 찾아낸다.

해당알고리즘의 대표적인 방법들

두개의 방법의 대표적인인 알고리즘은 다음과 같다.

  1. object-precision algorithm
    1. back-face culling
  1. image-precision algorithm
    1. z-buffer algorithm
    1. a-buffer algorithm

Back-face culling

back face인지 아닌지 알기 위한 알고리즘으로 objec-precision 방법의 대표적 예다.

back face culling에서의 평면 방정식

일때 그 평면에서 직각인 백터는 아래와 같다. 즉, 각 계수가 주축인 선이 되는것,

back face culling은

N과 V백터의 내적(합)이, 양수일때는 뒷면, 음수일때는 전면 이라는 방법이다.

이 방법은 벡터의 내적값을 통해, 외부인지, 내부인지를 판별하는 방법으로 벡터에 대한 이해를 요한다. 모르겠다면 구글링을….

그래서 백터 내적을 구하는 방법은 두개다

z-buffer algorithm

image-precision방법의 대표적인 예시다.

x,y는 고정하고, z값을 깊이값으로 가져간다.

이 알고리즘을 행하기 위해서는 두개의 버퍼가 필요하다.

  1. frame buffer : 배경 컬러 저장
  1. z-buffer : 현재 가장 관측자와 가까이에 있는 물체의 z축을 기록하는 버퍼이다.

즉 z buffer algorithm은 한 점에서 가장 가까이에 있는 물체를 기록해두고, 이를 투영할때, 하나의 물체 뒤에 존재하는 것은 z-buffer에 존재하지 않기 때문에, 표현하지 않는 방식이다.

그런데 이렇게 하나하나의 계산을 하려면 매우 비효율적이다.

따라서 이를 효율적으로 하기 위해서 일관성을 이용한다.

즉 동일한 스캔라인에서는 z 값을 계산 한것을 활용해서 계산하는것이다.

z값(깊이감)의 공식은

이 z 값에서 다음 옆의 동일한 스캔라인의 z값을 계산하는 것은

과 동일하다.

이게 x+1로 가는 픽셀 스캔라인이고,

y+1은

이처럼 계산 할수 있다. 여기에서 m은 두 픽셀을 지나는 다면체의 기울기다.

A buffer algorithm

여러개가 겹쳐져 있어도, 제일 가까운것만 (z 버퍼에서 가장큰 값) 만 보여주는데, 단점이 존재한다.

바로 물체의 투과성을 고려하지 않는것.

때문에 이를 고려한, 방법이 a buffer이다.

즉 a buffer는 물체의 투과성을 고려해, 색이 섞이는것 까지 고려하는 방법이다.


Uploaded by N2T

반응형

'CS > 컴퓨터그래픽스' 카테고리의 다른 글

specular reflection  (0) 2022.06.21
illumination model  (0) 2022.06.21
parametric cubic  (0) 2022.06.21
3d viewing  (0) 2022.06.21
곡선과 곡면의 표현  (0) 2022.06.21