본문 바로가기

컴퓨터 그래픽스

(5)
[파이썬을 이용한 Ray Tracing 구현] 5. shade와 그림자 생성 마지막으로 shade와 그림자를 생성하는 방법에 대해 작성하겠습니다. 먼저 그림자는 intersect point와 light source 사이에 다른 도형이 있다면 그 픽셀은 빛을 받지 못하므로 그 light source로 얻게되는 밝기를 더해주지 않았습니다. 미리 구현해놓았던 ray trace 함수를 사용하였습니다. 다만 전과 다른 점은 view point 대신 light의 중점을 넣어주었고 ray vector의 방향이 light의 중점에서 intersection point로 나아가는 vector가 되었다는 점입니다. shader는 phong과 lambertian이 각각 다른 방법을 사용하였습니다. 공통적으로 필요한 정보는 intersection point에서의 normal vector입니다. 구에서의..
[파이썬을 이용한 Ray Tracing 구현] 4. ray vector 구하기와 intersect 판정 ray vector는 half line을 사용하여 구현하였습니다. 시작점인 viewpoint를 p라고 하고, view direction을 d라고 하였을 때 ray vector r(t) = p + t*d로 나타낼 수 있습니다. 이 때 구해야 할 값은 t값이 됩니다. t값을 구하기에 앞서 먼저 각 픽셀별로 view direction을 구해주어야 합니다. view direction을 구하기 위해서는 pixel-to-image mapping 방법을 사용해 주었습니다. u = l + (r-l)(i+0.5)/n_x v = b + (t-b)(j+0.5)/n_y 위는 pixel-to-image mapping 방법에 대한 이해를 도와주는 그림입니다. 주어진 직사각형이 image plane이 되고 우리는 그 image p..
[파이썬을 이용한 Ray Tracing 구현] 3. xml 파싱 및 클래스 생성 그림으로 나타내기 위한 정보들을 xml을 통해 넘겨받았습니다. xml에는 camera, image, shader, surface, light에 관한 정보들이 들어있습니다. 다음은 하나의 구를 저장하는 xml의 예시입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 5 4 3 -5 -4 -3 5 4 3 0 1 0 5 2.5 2.5 300 300 .2 .3 .8 1 1 0 50 0 0 0 1 3 4 5 1 1 1 Colored by Color Scripter cs xml parsing을 쉽게 하기 위해 ElementTree를 사용해보았습니다. 우리에게 필요한 객체 중 하나인 camera를 생..
[파이썬을 이용한 Ray Tracing 구현] 2. PyCharm 설치하기 파이썬 에디터를 이번에 Ray Tracer를 구현하며 처음 사용해보았는데 파이참을 사용하여 구현해보았습니다. 먼저 공식 사이트에 들어가 무료인 community 버전을 받았습니다. https://www.jetbrains.com/pycharm/download/ Download PyCharm: Python IDE for Professional Developers by JetBrains Intelligent Python IDE with refactorings, debugger, code completion, on-the-fly code analysis and coding productivity orientation www.jetbrains.com 설치가 완료되면 File>New Project 에서 새로운 프로..
[파이썬을 이용한 Ray Tracing 구현] 1. Ray Tracing이란? 파이썬을 이용한 ray tracing 알고리즘과 구현에 대한 포스팅을 작성해보고자 합니다. 알고리즘에 대한 기본설명부터 파이참 설치, 코드 구현까지 단계적으로 작성할 계획입니다. 먼저 제가 구현한 ray tracing 코드로 만들어 본 sphere와 box로 이루어진 도형입니다. 구현에 사용된 코드는 추후에 github에 올리겠습니다. ray tracing algorithm, 광선 추적법은 광선이 물체의 표면에 반사되어, 다시 돌아오는 경로를 계산하여 나타나는 색깔을 픽셀별로 image plane에 나타내어 주는 알고리즘입니다. 위와 같은 그림을 통해 쉽게 이해할 수 있습니다. camera에서 image plane으로 픽셀별로 view ray를 만들어주고, object와 light source를 이용해 ..