이전 글에서 언급했던 CTM과 Transformation Functions를 활용하여 계층 구조를 가지는 모델을 만들어 보는 과제입니다. 자유롭게 모델링 하되 3단 이상의 계층을 가지도록 하는 게 과제였고, 저는 수영하는 사람을 모델링했습니다. 사진을 클릭하면 유튜브 동영상으로 움직이는 모습을 볼 수 있습니다. Python 코드는 저의 깃허브 minuhub에 가면 받을 수 있습니다. render 함수 안에서 Stack을 사용하여 Hierarchical구조를 가지면서 수영하도록 만들었습니다. 코드에서 이해가 안 되는 부분이 있으면 댓글로 물어봐주셔도 됩니다.
그래픽스 검색 결과
State Machine과 CTM(current state matrix) OpenGL의 Transformation Function 들을 자유롭게 다루기 위해서는 OpenGL이 State Machine이라는 것을 꼭 이해해야 한다. 무슨 말이냐면, polygon의 위치에 관한 state를 나타내는 행렬인 CTM에 (1,1,1)만큼 이동하도록 코딩하면, 그다음부터 그려지는 모든 polygon들은 본래 위치에서 (1,1,1)만큼 전부 이동되어서 그려진다는 것이다. 즉, CTM에 앞으로 그려질 도형의 위치에 관한 행렬들을 모두 곱해 놓고, 그다음부터 필요한 도형을 그리는 방식이다. 행렬스택 그렇다면 만약 원점에서 x축으로 1만큼 이동후, 180도 회전하고, y축으로 1만큼 이동해야 한다면, CTM에 x축 이동,..
결론부터 말하자면 아핀 변환(Affine Transformation)이란 점, 직선, 평면, 평행선을 보존하는 변환 동차 좌표계(Homogeneous Coordinates)를 사용하면 아핀 변환을 하나의 행렬곱으로 나타 낼 수 있다. 동차 좌표계(x, y, z,ω)에서 ω값으로 점은 1 벡터는 0이다. Affine Transformation = linear + translation 점, 직선, 평면, 평행선 + 몇 가지 더.. 를 보존하는 변환 linear + translation으로 여러 가지 transformation이 있다. 중요한 건, 동차 좌표를 이용해서 계산하면 매우 편리하다는 것!! Rigid Transformation = Rotation + translation affine의 일종 강체 변..
OpenGL의 도형 그리기 OpenGL에서 도형을 그리는 방법은 기본적으로 아래와 같이 render() 함수 안에 그리고 싶은 도형을 써넣고, main함수에서 render함수를 실행하면 됩니다. def render(): glClear(GL\_COLOR\_BUFFER\_BIT) glLoadIdentity() glBegin(GL\_TRIANGLES) glColor3f(1.0,0.0,0.0) glVertex2 f(0.0,1.0) glVertex2 f(-1.0,-1.0) glVertex2 f(1.0,-1.0) glEnd() glCear(), glLoadIdentity() 함수는 뒤에서 State개념과 함께 따로 다룰 예정이니, 일단 초기화해야 되는 부분을 초기화한다고 생각하면 됩니다. glBegin(), glE..
필요한 모듈 OpenGL(Open Graphics Library) 하드웨어 가속으로 컴퓨터 그래픽을 렌더링하기 위해서 만든 컴퓨터 그래픽 세계의 대표적인 API 하드웨어 가속 : cpu가 아닌 다른 하드웨어를 사용하여 연산 능력을 올림(그래픽,사운드 등) 렌더링 : 2D, 3D공간을 우리눈에 보이는2차원 이미지로변환하는 과정 cross platform : openGL의 200여 가지 OS의 시스템과 관련된 함수를 쓰지 않기 때문에, OS에 상관없이 이용할 수 있다. openGL은 그래픽 렌더링을 위한 API이기 때문에 API를 사용할 언어가 필요합니다. 해당 수업에서는 파이썬을 사용했습니다. Numpy 행렬, 벡터계산을 지원하는 파이썬용 라이브러리 Numpy 사용법에 관한 글은 따로 적지 않겠습니다 GL..
개요 대학교 강의 중 재미있게 들었던 수업내용들을 나중에 다시 봐도 쉽게 이해할 수 있도록 정리해서 올리려고 합니다. 첫 번째 과목으로 3-1학기 때 들었던 [컴퓨터 그래픽스] 과목을 골랐는데, 제 나름대로 중요한 부분들 + 과제 2개를 정리해서 올리려고 합니다. 영어전용 강의를 들으면서 혼자 이해하고 필기를 끄적끄적해놓았던 내용을 기반으로 옮겨 적는 글이라 내용이 틀린 부분이 있을 수 있습니다. 글의 순서 모듈 설명 및 설치 Polygon 그리기 아핀변환과 동차 좌표계 CTM과 Transformation Functions 과제 1.Hierarchical modeling 랜더링 파이프라인 과제 2.OBJ file Viewer 기타 참고 openGL의 상세한 내용을 잘 번역해 놓은 블로그가 있어서 주소 남..
최근댓글