- 주의 사항
- 이 글은 RayTracing:The Next week을 공부하며 작성한 글이다.
- 모든 사진, 글은 RayTracing:The Next week에서 가지고 왔다.
- 영어 해석, 이론적으로 틀린 내용이 존재할 경우가 매우 크다. (지적해주시면 감사합니다.)
- 글을 쓰는 능력이 매우 안좋으니 이해해주세요. 연습 중 입니다.
LearneOpenGL에서 배웠던 정말 사진을 이용한 texture를 입히는 그런 작업을 할 수 있는 공부같다. 그래픽스 분야에서 텍스처에 의해 화면에 표시되는 quality가 매우 상승할 수 있기 때문에 texture에 관해서 공부를 잘 해보자.
우리는 hitpoint인 로 부터 표면의 coordinate 를 계산할 수 있다. 그러면 우리는 이 좌표들을 사용하여 우리의 procedural solid texture에 사용할 수 있다. 그리고 또한 우리는 image를 읽어서 이미지를 indexing하기 위한 2D texture coordinate로도 사용할 수 있다.
scaled 를 image안에서 직접적으로 사용하는 방법은 u와 v를 int타입으로 바꾼 다음에 그것을 pixel좌표로 사용하는 것이다. 하지만 이 방법은 imaeg의 resolution을 변경하게 된다면 code까지 바뀌게 된다고 한다. 그래서 이 방법 대신에 가장 보편적인 사용 방법은 image의 좌표를 사용하는 것이 아니라 texture coordinate를 사용하는 것이다. 방정식으로 표현을 하자면 는 image coordinate이고 는 그 축에 해당하는 pixel의 개수를 뜻한다.
쉽게 이미지가 나타내는 좌표를 텍스처 좌표로 사용할 수 있게 변환을 해주어 handling하게 편하게 만드는 것이다.
다행히도 이런 작업을 위해서 쉽게 지원을 해주는 라이브러리가 stb_image.h
로 존재를 한다. github에서 다운로드를 해서 texture를 간편하게 사용을 할 수 있다. 위의 header는 이미지를 unsigned char
타입으로 매우 큰 array로 만들어 준다. 그리고 그것들은 단지 [0, 255]로 이루어진 RGB 데이터를 모아둔 것이다.
나는 CMake를 사용하기 때문에 header file을 경로에 맞게 잘 설정해주었다.
기존의 header file이 잘 되어있기 때문에 이번 chapter는 엄청 쉬웠다. 다양한 사진들로 texture를 입힐 수 있을 것 같다. 해픠~
잘 되는 건가?