[CGs] Visible Surface Determination

박원준·2023년 5월 26일
0

CGs

목록 보기
19/20

가시 표면의 결정

  • 객체와 관측자의 위치에 따라 관측자의 눈이 닿지 않는 객체의 뒷면을 제거
  • 정렬과 일관성을 활용하여 알고리즘의 수행 능력 향상 가능
  • 정렬 : 관측자 입장에서 가까운 물체를 나타내야하니 객체의 깊이 정보를 알아야 한다.

Image-Precision (or Image-Space) Algorithms

  • 투영법에서 투영상을 만드는 방법과 유사하다

  • Pixel 단위로 하나씩 가시 표면 판단

  • 대부분 이 방식을 사용

💻 The z-Buffer Algorithm

  • image-space method

  • 가시성을 만족하지 않는 픽셀들은 계산할 필요가 없다.

    • 관측자에게 가장 가까운 객체 하나만 표시
  • 다각형이 아니더라도 적용 가능하다.

  • S3S_{3}, S2S_{2}S1S_{1}에 가려져서 보이지 않게 된다.

    • S1S_{1}의 깊이 값이 가장 짧을 것이다.
  • 픽셀 단위로 각각의 픽셀들의 깊이 값에 기반해서 가시 표면에 있는 픽셀인지 결정

  • 겹쳐진 물체의 재질에 따른 투과성의 성질은 고려하지 못함

Two buffers are required

  1. frame buffer

    • 초기값은 배경색

    • 객체 표면에 있는 픽셀들의 색상값을 저장

    • 위 그림에서 픽셀의 색깔로 음영을 나타냄

  2. z-buffer

    • 초기값은 0

    • 0은 관측자와 가장 멀리 있는 것을 뜻함, 즉 z값이 큰 것이 관측자와 가까움

    • 앞서봤던 그림에서 S1S_{1}의 깊이 값이 가장 짧다고 했는데 그것과 z-buffer의 0와는 다른 것

    • 위 그림에서 숫자로 표시

Calculation of z-value for any scan line : depth coherence

  • depth coherence를 이용하여 계산 시간을 줄일 수 있음

  • 평면 방정식을 이용 : Ax+By+Cz+D=0Ax + By + Cz + D = 0

  • ZpZ_{p}의 깊이 값을 계산하기 위해 보간법을 사용한다.

💻 The A-Buffer Algorithm

  • Z-buffer Algorithm을 개선한 것이다.

  • 객체의 투과성을 고려하여 투과율을 가지는 물체가 중복되어 있을 때 가시 표면을 결정

  • 같은 투영선에 겹쳐진 픽셀에 대한 색상 정보값을 누적해야한다.


Object-Precision (or Object-Space) Algorithms

  • 객체와 객체의 일부를 서로 비교하여 표시할 지표면을 결정

  • 객체 단위

  • Wireframe display 에서 유리

💻 Back-Face Culling

  • 빠르고 간단한 Object-Space method

  • 곽측자의 시점에서 객체의 뒤에 있는 면을 제거

  • 평면 방정식과 법선 벡터를 활용

  • 모든 면은 평면 방정식이 만들어진다.

    • 각각의 평면 방정식에서 A B C 로 이루어진 법선 벡터를 구할 수 있다.
  • V : 곽측자가 바라보는 Viewing Vector

  • V·N > 0 이면, 각도는 예각이다.

  • V=(0,0,Vz)V=(0, 0, V_{z}) and VN=VzCV·N = V_{z}C

  • VzV_{z}는 위의 그림에서 음수이므로 CC가 음수일 경우 Back face가 된다.


Summary

  • 보이지 않는 면을 제거한 후 보이는 면(visible surface)을 렌더링 하면 현실감 있는 그래픽 화면을 얻을 수 있으며, 렌더링 하는 면의 수가 줄어들어 시간을 줄일 수 있다.

  • 보이지 않는 면을 제거하는 방법은 3차원 공간에서 객체들 간의 공간적 앞뒤 관계에 따라 제거하는 객체 공간법(object-space method)과 투영면의 셀들로부터 객체를 바라볼 때 투영면에 노출된 객체상의 점들을 찾는 이미지 공간법(image-space)으로 나뉜다.

    • 객체 공간법은 공간상의 객체 수가 많지 않거나 객체들이 서로 분산되어 존재하는 경우에는 효율적이지만, 객체 수가 많으면 처리 시간이 많아지는 단점이 있다.

    • 이미지 공간법은 처리 시간이 적게 걸리므로 효율적이어서 많이 사용되고 있다.

0개의 댓글