그래픽스 4

광선 추적(Raytracing)을 이용해 3d 구체 그리기

일단 레이트레이싱이란 광선 추적 또는 레이 트레이싱(ray tracing)은 가상적인 광선이 물체의 표면에서 반사되어, 카메라를 거쳐 다시 돌아오는 경로를 계산하는 것이다. 우리 화면에는 수많은 픽셀들이 있다. 1920x1080 화면에는 1920x1080 만큼의 픽셀들이 있는 것이다. 이 각각의 픽셀들에서 화면 안쪽으로 광선을 쏜다고 상상해 보자. 이런 식으로 화면에서 광선이 발사된다.다음과 같이 x y z 축이 있다고 생각하자. 위 좌표계는 전 게시물에서 설명했던 world 좌표계이다. 그럼 화면에서 발사되는 광선의 방향은 (0, 0, 1)이다. 어느 한 픽셀의 레이저가 쭈욱 발사돼서 구에 도달했다고 치자. 픽셀과 구의 거리는 어떻게 구해야 할까? 일단 선과 구의 교차점에 대해 알아보자. 선(직선)과 ..

그래픽스 2024.02.07

Screen -> World 좌표계 변환

Screen 좌표계에서 World 좌표계로 좌표계 변환에 대해서 알아보자. 일단 Screen 좌표계를 정리해보자. 위 처럼 좌측 상단부터 시작하는 좌표계를 Screen 좌표계라고 한다. 그럼 World 좌표계는? 우리가 임의로 잡은 좌표계로 다음과 같이 내가 정의한 좌표계이다. 여기서 aspect는 aspect ratio로 각 화면의 비율(예를 들면 1920 x 1080 해상도면 aspect ratio는 1920 / 1080 = 1.778이다.)이다. Screen 좌표계를 World 좌표계로 변환하려면 [0, width - 1] x [0. height -1] 을 [-aspect, aspect] x [-1, 1]로 변환시켜줘야한다. float aspect = float(width) / height; asp..

그래픽스 2024.02.03

Bloom

Bloom 효과에 대해 알아보자. Bloom 은 light bloom 혹은 glow라고도 한다. 위 그림과 같이 밝은 빛에 뿌연 효과를 주는 컴퓨터 그래픽 효과이다. 주로 hdr과 함께 사용되며, 비디오 게임등에 많이 사용되었다.(2005 ~ 2010에 출시한 게임들에서 많이 사용됨) 그럼 어떤 과정으로 Bloom효과를 구현할 수 있을까? 효과를 적용할 원본 이미지를 백업. 특정 밝기(relative luminance : 상대 휘도) 이하의 픽셀들을 전부 RGB(0, 0, 0)로 바꿔줌. 바꿔준 이미지에 가우시안 블러를 적용함. 원본 이미지와 변경된 이미지를 합침. 가우시안 블러에 대한 글은 이곳에서 확인하자. https://mumu3997.tistory.com/12 가우시안 블러 (Separable G..

그래픽스 2024.02.02

가우시안 블러 (Separable Gaussian blur)

Separable Gaussian blur에 대해 알아보자. 블러라 하면 뭘까? 블러(blur)는 흐릿해지다라는 뜻으로, 사진에서의 블러효과라고 하면 흐릿해지는 효과라고 우리는 알고있다. 단순히 포토샵으로 블러효과를 적용하는게 아닌 이론적으로 어떻게 블러 효과를 만들어 내는지에 대해 알아보았다. 블러 효과를 만드는 간단한 과정은 원본 이미지와 커널 사이에 Convolution을 적용하여 블러 효과를 얻는것이다. 커널을 이미지에 쭉 적용시키는것을 Convolution이라고 한다. 제목을 보면 알겠지만 Separable Gaussian blur를 알아가는게 목적이다. Separable은 왜 붙었을까? 커널 작업을 여러 단계로 나누었기 때문에 Separable이라는 단어가 붙은것이다! Separable Con..

그래픽스 2024.02.02