본문 바로가기

Programming

OpenGL Transformations_Projection 프로젝션이라 함은 보통 같거나 낮은 차원으로 해당 좌표가 어디에 매칭이 되는지에 대한 짝을 만들어 내는 과정이라고 볼 수 있어요. 음… :) 말이 좀 어려운가요?ㅋㅋ 우리가 현재 작업하는 내용은 3차원 상에서 이루어 지는 내용인데 반해서, 보게 되는 화면은 2차원(모니터) 가 되는 거에요. 모니터 상에는 내가 이루어 놓은 3차원 세계가 어떻게 보이게 되나- 예전 포스팅에서도 몇 번(특히나 코드 내에서) 언급 되긴 했지만 어떻게 동작하는지, 시키는지에 대해서 중점적으로 보려고 합니다 :D 물론, 아름답게 함수로 이루어져 있기 때문에 우리는 불러다 쓰면 되긴 하지만 결과가 어떻게 나오는지 알아야 불러다 쓰잖아요~ :D 프로젝션 변환을 설정 하는 것은 바로 뷰잉 볼륨(Viewing Volume)이라는 것을 만.. 더보기
OpenGL Transformation_Matrix 실질적인 OpenGL 코딩 시 처리되는 행렬에 관한 포스팅 이에요. 여태까지 왜 행렬에 대해서 공부했는지, 행렬이 왜 필요한지에 대해서 엄청 많이 언급 했어요. 이해가 안 되시는 분들은 지난 포스팅을 참조해 주세요 :) 단순히 하나의 행렬이 아닌, 여러 개의 행렬이 사용 된다는 것은 봐왔어요. 그럼 이게 내부적으로 어떤식으로 동작하는 지에 대해서 설명 할게요. 행렬은 앞으로 연산이 될 순번에 맞춰서 스택에 쌓이게 됩니다. (스택에 대해서 모르시는 분들은 구글링 ㄱㄱㄱ!!) 스택은 아래와 같이 세가지 종류가 있으며, 각기 연산된 행렬에 의해서 우리의 화면에 결과가 뿌려지는 거죠. The modelview matrix stack The projection matrix stack The texture matr.. 더보기
OpenGL Transformations_Modeling 3차원 세계에서 변환이라는 것은 물체를 옮기는 것을 의미 해요. 앞선 포스팅에서 카메라에 대해서 볼 때 미리 보긴 했지만, 정점들의 위치를 바꾸는 것이죠.(그 전에도 기본적인 개념에 대해서는 구구절절 설명 했어요 :D) OpenGL에서는 다음과 같은 함수로 정점들의 위치를 "이동" 할 수 있어요. 함수 원형 void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); 인자 x, y, z : 각 축에 대해서 이동시킬 양 반환 값 void 처리 임의의 정점들을 x, y, z만큼 이동 시키는 행렬을 현재 행렬에 곱한다. 함수의 이름에서 그 인자의 타입에 대해서 바로 알 수 있도록 .. 더보기
OpenGL Transformations_Viewing(Camera) 옆에 부제로 카메라를 붙여 두었던 이유가 있겠죠~? 넹~ Viewing은 Camera에 관련된 거에요. 이전 포스팅들에서는 테스트를 위해서 간단한 설명들만 했지만, 이제 조금 더 들어가 봐야겠죠?(해치지 않아요 -_-*) OpenGL에서 transformation과 viewing에 관련된 가장 중점이 되는 부분이 Camera에요. 기본적으로 OpenGL의 카메라는 z축의 음수 방향을 바라보고 있습니다. 바로 아래 처럼 말이죠. 이러한 카메라가 가지는 coordinate는 오브젝트가 가지는 coordinate와는 별개입니다. Viewing Transformation는 장면(Scene)을 적용시키는 첫 번째 변환이며, 어디에서 어디를 바라보고 있는가를 알아야 해요.(원문에서는 aim 이라고 표현했는데, 포커.. 더보기
Understanding Coordiante Transformations 다른 기본적인 과정을 준비하느라 포스팅이 늦었네요 :) 저번 포스팅에서 부터 OpenGL의 아주 기본적인 요소들에 배우면서, 물체(라고 하기엔 좀 그런 간단한 것 들 이지만ㅋ)를 띄우고, 보는 것들을 했었죠. 하지만 아직 상호작용을 통한 과정이 없어 지루했을 거에요.(물론, 아주 처음 보는 사람들은 일단 띄웠다! 에 만족하실 수도 있구요ㅋ) 사용자에게 입력을 받는 것은 어려운 것이 아니에요. 이미 제공되는 함수들이 있으니까 사용하면 되는데, 그전에 어떠한 방식으로 물체나, 카메라, 화면의 디스플레이등을 조작 하는가를 알아야 실제 게임처럼 사용자와 상호작용을 할 수 있겠죠~ 그 기본적인 배경지식이 "coordinate transformations" 라는 거에요. 좌표계변환? 쯤으로 번역이 되려나….? @_.. 더보기