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