티스토리 뷰

미국에서는 Massive Open Online Course 교육이 많이 진행되고 있다. 흔히들 알고 있는 Coursera라던가 edX에선 학교와 협연해서 인증서도 발급해주는 서비스를 제공하는 등 점점 차별화된 교육을 주고 있다. 우리나라에서도 이런것과 비슷한 활동들이 요즘들어 생기고 있다. 서울대에서도 "열린 강의" 라는 이름으로 Open Course를 운영하고 있고, 다양한 토픽들을 제공하고 있어서 혜택을 많이 받고 있다. 왠지 이런 서비스가 나 학부에 있을 때 있었으면 얼마나 좋았을까 하는 아쉬움이 살짝 들기도 한다.


 이번 포스트에서 소개할 강의는 UC Berkeley에서 edX를 통해서 제공하는 Computer Graphics 강좌다. 정확한 강좌 이름은 Foundations of Computer Graphics 라는 이름으로 되어 있다.


<https://www.edx.org/course/uc-berkeley/cs-184-1x/foundations-computer-graphics/1003>


제목에도 나와있다시피 Computer Graphics의 기초에 대한 강좌가 총 6주동안 진행된다. 사실 그래픽스에 대해서 잘 알지 못했는데 왠지 이런 강좌를 통해서 기술을 이해한다면 차후에 적용할 수 있는 분야가 넓어질 거 같아서 수강하게 되었다. 

 내용 자체도 기본적으로 쓰이는 수학적인 개념부터 RayTracing까지 전반적인 내용을 설명한다. 참고로 2주차까지는 Basic Mathematics와 View Coordinate에 대한 내용을 다뤘다. 강좌도 일반 강의처럼 1시간동안 쭉 진행되는 것이 아니라 15~20분정도 강의를 본 후 본 내용을 토대로 퀴즈를 제공해서 딱 지루하지 않게끔 한다. 

 


그리고 무엇보다도 도움이 되는 건 실제 강의에서도 적용되었던 숙제 내용이었다. 몇가지 샘플을 잠깐 보여주고자 한다.



첫번째 강의에서의 과제는 glm tool을 사용해서 광원의 색을 바꿔주는 과제였었다. 이를 통해서 opengl이 내부적으로 동작하는 원리를 잠깐 소개했었다. 다음과제는 이번에 View Coordinate를 하면서 teapot을 보는 시점을 변경해보는 것이었다.



이 과제의 핵심은 사물의 Rotation을 angle 과 axis에 대한 값으로 구하는 Rodriguez Transform Formula를 코드로 구현하고 키보드 입력에 따라서 카메라뷰를 변경시킬 수 있는가였다.

솔직히 조금만 더 내부구조를 이해하고 Camera View에 대한 이해를 했더라면 쉬웠을 과제였을텐데, 막 헤매면서 겨우 구할 수 있었다. 제일 헷갈렸던게 일반적인 C 코드에서는 행렬을 Row-major ordering을 하는데 opengl에서는 행렬을 Column-Major Ordering을 한다. 그래서 잘못넣고 연산을 돌리느라 이상한 결과값을 구했다. 다행히 그걸 확실하게 이해한 후에는 원하는 결과를 얻을 수 있었다.


뭐 아무튼 이정도 강의라면 프로그래밍에 대해서 어느정도 아는 사람이라면 충분히 도전해볼만한 수업이라고 생각한다. 또 나오는 결과물들을 막상 접하고 나면 참 신기하다. 처음엔 나도 이런거 할 수 있나 싶었는데 강의를 보면 어느정도 감이 잡히는 거 같긴하다. 아무튼 추천!

댓글