본문 바로가기
Computer Graphics

컴퓨터 그래픽스 - Rasterizer(1)

by eigen96 2024. 1. 13.
728x90

fovy는 시야각(field of view angle)을, aspect는 종횡비(aspect ratio)를, n과 f는 각각 근접 클리핑 평면(near clipping plane)과 원거리 클리핑 평면(far clipping plane)의 위치를 나타낸다.

이러한 값들은 카메라가 어떻게 3차원 공간을 '보는지'를 결정하는데 사용됨. 

 

clip space의 각 정점을 자신의 w좌표로 나누면 Cartesian coord의 정점으로 변한다.

이것은 원근법을 구현하는 효과를 가지며 원근 나눗셈이라고 한다.

w는 동차 좌표(Homogeneous coordinates) 시스템에서의 한 요소임.

이렇게 얻은 Cartesian 좌표를 Normalized device coordinates 또는 NDC라고 한다.

 

NDC(Normalized Device Coordinates): 렌더링된 장면이 화면에 맞춰지기 전에 사용되는 정규화된 좌표계입니다. 이 좌표계에서 모든 값은 -1과 1 사이로 정규화됨.

 

 

뒷면제거 개념

뒷면 (back face) : 가상 카메라를 등지는 폴리곤

앞면(front face) : 카메라를 향하는 폴리곤

  • 등방성 절단: 3차원 공간에서의 객체가 카메라에 의해 어떻게 보이는지 결정하기 위해, 카메라(EYE)에서 발산하는 반구에 위치한 각 점의 가시성을 계산합니다. 이 과정에서 객체가 카메라의 반구 안에 있는지 밖에 있는지 결정하는 것이 중요합니다.
  • 법선 벡터와 카메라 벡터의 관계: 객체의 표면에 대한 법선 벡터(ni)와 카메라로부터 해당 점까지의 벡터(ci)의 내적이 계산됩니다. 이 내적은 두 벡터 간의 각도의 코사인(cosθ)에 비례하며, 이 값이 양수인 경우에는 점이 카메라를 향하고 있음을, 음수인 경우에는 반대를 향하고 있음을 나타냅니다.
  • 가시성의 결정: 특정 점의 가시성은 이 내적을 통해 결정됩니다. 예를 들어, 내적이 0보다 크면 해당 점이 카메라에 보이고(앞면), 0보다 작으면 보이지 않는다고(뒷면) 판단합니다.

 

 

  • 폴리곤의 방향성: 폴리곤이 카메라를 향하고 있는지의 여부는 폴리곤의 정점(vertex)들을 이용하여 구할 수 있다. 이를 위해 정점들을 연결하는 벡터(ci)를 계산하고, 이 벡터들이 투영 선(projection line)과 어떻게 상호작용하는지 살펴본다.
  • 면의 정규화: 투영 변환 후의 면을 xy 평면에 투영하여 면적을 계산함으로써, 폴리곤의 방향성을 결정할 수 있다. 이 때, 면적이 양수인 경우 폴리곤이 카메라를 향하고 있는 것으로, 음수인 경우는 카메라에서 멀어지는 방향을 가리킴.
  • 면적 계산: 폴리곤의 면적은 벡터의 외적(cross product)을 이용하여 계산할 수 있다. 외적의 결과가 양수인 경우 폴리곤이 카메라를 향하고 있으며(예: 이미지 (d)), 음수인 경우는 그 반대(예: 이미지 (e)).
  • 방향의 일관성: 폴리곤의 방향성을 결정하기 위해, 정점들을 시계 방향(clockwise, CW)이나 반시계 방향(counter-clockwise, CCW)으로 순회하면서 외적을 계산함.
    순회하는 방향에 따라 외적의 부호가 달라질 수 있으므로, 이를 일관되게 유지하는 것이 중요.
  • 순회 방향과 면적: 폴리곤의 면적 계산은 정점들을 순회하는 순서에 따라 달라짐.
    예를 들어, 정점들을 시계 방향으로 순회할 경우 얻어지는 면적의 부호는 반시계 방향으로 순회할 때 얻어지는 면적의 부호와 반대

참고

opengl es를 이용한 3차원 컴퓨터 그래픽스 입문

728x90

댓글