[OpenGL로 배우는 컴퓨터 그래픽스] 1~6장 개념 총정리
·
CS/Computer Graphics
1. 그래픽스의 구성요소 컴퓨터 그래픽스는 모델링과 렌더링으로 구성된다. 모델링이란 물체의 정점을 정의함으로써 물체를 만들어내는 것을 말한다. 렌더링이란 화면에 물체를 어떻게 그려낼지를 정의하는 작업에 해당한다. 2. 그래픽 시스템의 구성 그래픽 시스템은 입력장치(키보드 등), 워크스테이션(컴퓨터), 그래픽 컨트롤러(GPU), 출력장치(모니터 등)로 구성된다. 3. 래스터장치와 벡터장치의 역할과 차이점 래스터장치는 픽셀을 통해 그래픽을 출력하는 장치이다. 픽셀은 R,G,B로 구성된 인점이며, 그 정보들은 프레임버퍼에 저장한다. 픽셀로 표현하다보니 부동소수좌표를 정수좌표로 저장하는 래스터화가 필수적이며, 이에 따라 물체를 정확히 표현하는데에는 계단현상(Alias)라는 한계가 존재한다. 픽셀이 많아지고 정교..
계층구조 모델링(순방향/역방향 키네마틱스)
·
CS/Computer Graphics
- 순방향 키네마틱스 계층구조상 상위에서부터 하위로 정의. 사람을 그린다면 몸체->왼쪽 손 이런식으로. 이 방법은 사용자 마음대로 필요한 자세를 만드는 데 유리하지만, 사용자가 각 관절마다 회전각을 직접 입력 해줘야 함. - 역방향 키네마틱스 계층구조상 하위 물체부터 정의 사람을 그린다면 왼쪽 손->몸체 와 같은 순서로 명시. 이 방법은 상위 객체 움직임이 컴퓨터 내부에서 자동으로 계산되도록 한다.
행렬 스택
·
CS/Computer Graphics
어떤 물체를 기하변환하며 계속해서 그리다가 다시 처음이나 과거의 물체를 그리고자 이전 좌표계로 되돌려야하는 상황이 발생한다. 좌표계를 스택을 활용해 저장해두면 쉽게 돌아갈 수 있다. 이를 위해 지엘에서는 glPushMatrix(), glPopMatrix() 메서드를 활용한다. glPushMatrix()로 좌표계를 저장하면 CTM이 stack에 쌓이며, 돌아가고 싶을 때에는 pop해주면 된다.
좌표계, 지엘 파이프라인
·
CS/Computer Graphics
- 모델 좌표계(MCS) 지역 좌표계(LCS)로도 불린다. 모델마다 존재하는 모델을 기준으로 하는 좌표계 - 전역 좌표계(WCS) 모델이 여러개일 경우, 지역 좌표계도 여러 개 존재하게 됨 이들을 일률적으로 아우르고, 상대적 위치를 결정 지을 수 있도록 하는 좌표계 - 시점 좌표계(VCS) 카메라 좌표계. 카메라의 위치, 각도 등을 나타내는 좌표계 좌표는 파이프라인을 따라 전역좌표계, 모델좌표계, 시점 좌표계와 같은 일련의 좌표계를 거치면서 변환되어 화면에 최종적으로 나타난다. 지엘 파이프라인에서 모델좌표에 모델행렬을 곱하면 전역좌표, 전역좌표에 뷰행렬을 곱하면 시점좌표. 지엘은 모델행렬과 뷰행렬을 모델뷰 행렬 하나로 취급한다. (물체를 뒤로 빼든 카메라를 앞으로 밀든 같음)
그래픽 변환(강체, 유사, 어파인, 원근 , 선형)
·
CS/Computer Graphics
- 강체 변환 이동변환, 회전변환. 물체 자체의 모습이 불변! - 유사 변환 강체 변환 + 균등 크기조절 변환 + 반사 변환 물체가 변하긴 하는데 형태는 유지. 물체면 사이 각이 유지되며, 정점 간 거리 비율이 일정하게 유지됨 - 어파인 변환 유사 변환 + 차등 크기조절 변환 + 전단 물체 타입이 유지. 직선은 직선, 곡면은 곡면으로 유지 평행선이 보존되며 변환 행렬의 마지막 행이 항상 0,0,0,1이다. - 원근 변환 평행선이 만나게 함으로써 원근감 주기. 직선은 직선으로 유지되고, 변환행렬 마지막 행이 0,0,0,1이 아님! - 선형 변환 어파인 + 원근변환. 선형조합으로 표시되는 변환.
어파인 공간(Affine Space), 동차좌표(Homogeneous coordinates)
·
CS/Computer Graphics
1. 어파인 공간 벡터는 크기와 방향을 포함하는데, 정점요소는 없다. 그러므로 점과 벡터를 동족취급하여 벡터공간을 확장한 공간이 어파인 공간이다. 1-2. 어파인 연산 어파인 공간의 어파인 연산에서는 - 벡터와 벡터의 덧셈뺄셈 - 스칼라와 벡터의 곱셈나눗셈은 물론 - 점과 벡터의 덧셈 및 뺄셈이 가능해진다. 이에 따라 어떤 점을 표시할 수 있고 선분을 표시할 수 있다. 점과 점의 덧셈/뺄셈은 계수 합이 1일 때만 허용된다. (어파인 합(Affine Sum)) 2. 동차좌표 공간에서 벡터와 점은 표현 방식이 다르다. (v=4V1+2V2+V3, P=r+4V1+2V2+V3) 점과 벡터를 동일한 방식으로 표현하기 위해서 동차좌표를 정의하는 것이다. 예를 들면, 3차원 좌표를 3개의 요소로 표현하는 게 아니라 한..
정점배열
·
CS/Computer Graphics
정점배열은 구체적인 정점좌표가 아닌, 정점 아이디만을 나열한 목록이다. 다시 말해, 정점배열은 개별 정점을 가리키는 일종의 포인터에 해당한다. 정점배열의 정점리스트를 사용해 함수 호출의 횟수를 줄일 수 있다.
더블 버퍼링이란? 그 필요성
·
CS/Computer Graphics
일반적으로 프레임버퍼는 2중포트구조이다. 물체 영상을 쓰는 것과 거의 동시에 읽는다. 그런데 비디오 프로세서가 read하는 속도는 그래픽 컨트롤러가 write하는 속도와 차이가 난다(read가 훨씬 빠르다) 이 차이로 인해 화면이 깜빡거리는 등 문제가 발생한다. 이러한 문제는 더블버퍼링으로 해결할 수 있다. (그래픽 프로세서를 더 빠르게 할 수도 있겠지만) 프론트버퍼와 더블버퍼로 2개의 버퍼를 사용하여, 비디오 컨트롤러가 프론트버퍼를 read하는 동안 그래픽 프로세서는 백버퍼에 write한다. write를 마치면 두 버퍼를 switching하는 방식으로 진행한다. OpenGL에서는 glutInitDisplayMode(GLUT DOUBLE)로 설정해줄 수 있다. 버퍼 Switching에는 glutSwapB..