🎁 minirt 뽀개기!

(0) minirt 시작하기!

(1) mlx 활용과 color 표현 하는 방법!

(2) 벡터에 대한 이해!

(3) 벡터의 연산!

(4) Raytracing One Weekend 식 이해하기! 1

(5) Raytracing One Weekend 식 이해하기! 2

(6) Raytracing One Weekend 식 이해하기! 3

(7) Raytracing One Weekend 식 이해하기! 4

(8) Raytracing One Weekend 식 이해하기! 5

(9) Raytracing One Weekend 식 이해하기! 6

임시

//책에서 9번!

Raytracing One Weekend 식 이해하기! 7


철과 같이 표면이 맨들맨들한 물체들은 주변 물체가 반사돼서 보이곤 한다. 이번 파트부터 도형의 다양한 표면을 구현해 볼 것이다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/97411a94-dcc2-4e43-a848-35d5c7532142/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bae1d491-3641-4b62-92ba-749991feb185/Untitled.png

Metal


1) An Abstract Class for Materials

우선 Metal표면을 구현하기 전에 본문에서는 다양한 표면을 대비해서 미리 추상클래스를 만들어둔다. 해당 추상클래스 내부에는 물체와 부딪히고 흩어진 ray에 대한 함수가 작성되어 있다. 우선 C언어로는 추상클래스를 만들순 없으니 이후 일반 함수로 만들어서 사용할 예정이다.

개인 코딩스타일에 맞게 함수포인터 등을 활용해서 구현하는 것도 좋아보인다.

이번 장 이후 부터는 이떄까지의 코드가 모두 다르기때문에 예시로 나온 코드를 본인의 코드에 적용시키기는 어려워 보인다. 조금씩 수정하면서 어떤 변수들이 필요하고 결과적으로 필요한 값이 뭔지 이해한다면 코드를 작성하는 것도 크게 어렵지 않다.

2) A Data Structure to Describe Ray-Object Intersections

이제 모든 오브젝트들이 material을 가지고 있을 것이기 때문에 hitt 구조체와 hit함수에 해당 부분을 추가해 주어야 한다. 그리고 이후 hit 함수에서도 부딪힌 지점의 matarial을 가지고 와야하기 때문에 hit_record에도 해당 지점을 저장해 두어야 한다.