분류 전체보기
-
좌표계, 지엘 파이프라인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..
-
GPU구조 - 파이프라인, 상태변수CS/Computer Graphics 2023. 4. 25. 14:45
GPU는 모델링한 물체를 그려내기위한 수많은 계산을 효과적으로 처리하기 위해 파이프라인 구조를 사용한다. 파이프라인 구조는 컨베이어 시스템처럼 분업에 의한 동시(병렬)처리로 속도를 극대화한다. GL 파이프라인 서브 프로세서는 모두 하드웨어화 되어있으며, 입력->변환->투상->절단->래스터->출력 위와 같은 순서로 고정적으로 이루어져있다. 지엘이 이를 바꿀수는 없고, 지엘의 역할은 단지 상태변수를 설정해주는 것이다. 지엘이 상태 변수값을 전달하고, 개별 서브프로세서는 상태변수값을 기준으로 자동 실행된다. (상태 테이블을 이용한다.) 파이프라인은 상태변수를 참조해서 자동으로 실행된다.
-
고수준 그래픽 API, 저수준 그래픽 APICS/Computer Graphics 2023. 4. 25. 14:37
- 고수준 API (오픈인벤터, VRML, Java3D..) 장면 묘사 위주로서 구체적 렌더링 방식이 포함되어있지 않으며 다양한 모형을 제공한다. - 저수준 API (OpenGL, DirectX..) 장면을 묘사하는 것이 아니라 구체적 프러시져(특정작업을 수행하는 서브 프로그램)를 호출한다. 하드웨어와 거의 직접 연관되어있어 하드웨어 성능을 최대한 발휘. 물론 저수준API도 드라이버 소프트웨어에 비해서는 상대적으로 고수준 함수다.
-
[OpenGL] GL, GLU, GLUTCS/Computer Graphics 2023. 4. 25. 14:32
- GL(OpenGL Core Library) 오픈지엘에서 코어가 되는 라이브러리로서 렌더링 기능 제공하는 함수 라이브러리이다. 기본 도형 그리기/변환/조명 및 렌더링을 포함하며, 제공되는 함수에는 gl, 상수에는 GL_접두사가 붙음. glBegin(GL_LINES); - GLU(OpenGL Utility Library) GL라이브러리의 사용성을 높이기 위한 도우미 역할을 한다. 다각형 분할, 투상 등 고급 기능을 수행할 수 있도록 돕는다. 뷰잉 및 투영 행렬의 준비, 곡선 및 곡면표현과 렌더링. glu라는 접두사가 붙음 함수 앞에 (gluLookAt(20.0, 10.0...)) - GLUT(OPenGL Utility Toolkit) 윈도우 기능과 콜백 기능(실행 중 발생하는 사용자 입력)을 처리한다. ..