Ray Tracing - Draw Triangle

Date:     Updated:

카테고리:

태그:

홍정모님의 그래픽스 새싹코스 강의를 듣고 정리한 내용입니다.


🐥 Draw Triangle

Ect-28

3D 그래픽스에서 복잡한 물체는 삼각형으로 이루어진 폴리곤 메시 형태로 렌더링한다. 따라서 삼각형을 그리는 것이 렌더링의 가장 기본이라고 할 수 있는데, 픽셀에서 나간 Ray가 삼각형과 충돌하는지 여부를 어떻게 판단할 수 있을까? 복잡해 보이는 3차원 구 형태는 방정식으로 쉽게 판별할 수 있었는데 훨씬 간단한 삼각형은 단일 방적식으로 표현이 안되니 살짝 아이러니한 느낌을 받았다.


Step 1 - Find Line-Plane Intersection

Ect-29

  • 먼저 삼각형을 포함하는 평면의 normal vector를 구한다.
  • normal을 이용하여 위 방정식을 풀면 t(거리)값을 구할 수 있다.
  • t를 통해 p를 계산


Step 2 - Determine inside or outside a triangle

Inside Outside
Ect-30 Ect-31
  • 삼각형 내부에 있는 경우 sub triangle(?)의 normal들이 모두 평면의 normal과 같은 방향
  • 삼각형 외부에 있는 경우 어느 하나의 normal이 평면의 normal과 반대 방향
  • 주의) DirectX는 왼손 좌표계


// 삼각형의 뒷면은 렌더링x (물체가 폴리곤일 경우 사용)
if (dot(-dir, faceNormal) < 0.0f) return false;

// Ray와 평면이 수평에 매우 가깝다면 충돌하지 않는 것으로 판단
if (glm::abs(dot(dir, faceNormal)) < 1e-2f) return false;

// 삼각형이 Ray의 출발점 뒤에 존재한다면 렌더링x
if (t < 0.0f) return false;


🐥 Result

results



맨 위로 이동하기

Graphics 카테고리 내 다른 글 보러가기

댓글 남기기