[컴퓨터그래픽스] 목차
컴퓨터 그래픽스(Computer Graphics)은 컴퓨터를 이용해 실제 세계의 영상을 조작하거나 새로운 영상을 만들어내는 기술을 가리킨다. 최근에는 일반적으로 3차원 컴퓨터 그래픽스를 컴퓨터 그래픽스로 부르기도 한다.Modeling 은 3D 객체의 구조와 모양을 만드
Grahpics Library 또는 Graphics API 는 컴퓨터 그래픽을 모니터에 렌더링 하는 데 도움이 되도록 설계된 프로그램, 라이브러리로 일반적인 렌더링 작업을 처리하는 함수의 최적화된 버전을 제공한다.OpenGL(Open Graphics Library) 는
아래와 같이 어떤 물체를 보기 위해서는 몇 가지 조건이 필요하다. 이를 Elements of Image Formation이라 부르며 다음의 4개가 있다.Elements of Image Formation.pngObjects 는 이미지가 형성될 때 관찰되는 대상, 즉 물리
우리는 물체를 관찰하기 위해 빛을 필요로 한다. 일반적으로 우리가 물체를 관찰하기 위해서는 빛이 물체에 반사되어 우리 눈에 도달해야 한다. 그러나 광원에서 방출된 빛이 물체에 도달해 반사되는 모든 과정을 컴퓨터에서 시뮬레이션 하기 위해서는 매우 많은 계산량과 메모리 공
Ray Tracing은 방대한 메모리 사용과 높은 계산 비용 요구로 실사용이 거의 불가능 하다. 이런 문제를 해결하기 위해 등장한 것이 Simplified Rendering Pipeline 이다.Ray Tracing 에서는 모든 Objects의 정보를 메모리에 넣은 후
OpenGL(Open Graphics Library) 는 1992년 실리콘 그래픽스사에서 만든 2차원 및 3차원 그래픽스 표준 API 규격으로, 프로그래밍 언어 간 플랫폼 간의 교차 응용 프로그래밍을 지원한다. 이 API는 약 250여개 가량의 함수 호출을 이용하여 단
실습: HelloGL (Old Style)
실습: CircleGL
Immediate Mode Graphics 는 그래픽스를 그릴 때, 명령이 호출되면 즉시 화면에 렌더링되는 방식이다.즉각적인 렌더링그래픽 명령이 호출되면 바로 그 결과가 화면에 표시된다.상태 의존성그래픽 상태(색상, 텍스처)는 각 명령 호출 시마다 설정해야 하며, 매번
Retained Mode Graphics 는 그래픽 요소를 메모리에 저장하고 관리하는 방식이다. 이 모드는 객체 지향적인 접근 방식을 사용하여 그래픽 요소의 상태를 유지한다.객체 관리그래픽 요소(도형, 텍스처 등)를 객체로 정의하고 메모리에 유지한다. 이는 각 객체의
GPU Based Graphics 는 그래픽 처리를 GPU(Graphics Processing Unit)에서 수행하는 방식으로, 현대의 그래픽스 프로그래밍에서 가장 일반적으로 사용되는 접근 방식이다.병렬 처리GPU는 수천 개의 작은 코어를 통해 대량의 데이터를 병렬로
이전 장에서 우리는 처음으로 OpenGL Pipeline을 이용해 그림을 그렸다. 이제 이 Pipeline에 대해 자세하게 알아보자.우리는 \[Simplified Rendering Pipeline|앞 장] 에서 Simplified Rendering Pipeline에 대
이제 OpenGL Pipeline 에 따라 이전에 실습한 RandomDot_GPU.cpp 코드를 해석해보자.먼저 CPU에서 우리가 그리고자 하는 points 데이터를 생성한다.이제 CPU에서 만든 points의 vertex data를 GPU에 넘겨야 한다. 이때, 우리
이번 실습에선 객체 지향을 이용해 MyColorCube Class 를 만들고 회전시켜보자.MyColorCube Class 에 필요한 멤버 변수는 아래와 같다.생성자에서 멤버 변수를 다음과 같이 초기화 한다. NUM_VERTEX 는 6면체의 모든 면을 삼각형으로 쪼개었을
GLSL(OpenGL Shading Language)은 C 언어를 기초로 한, 상위 레벨 셰이덩 언어이다. HLSL과 유사한 이 언어는 어셈블리 언어나 하드웨어에 의존한 언어를 사용하지 않고, 개발자가 그래픽스 파이프라인을 직접 제어할 수 있도록 OpenGL ARB(A
Callback(콜백) 또는 Callback Function(콜백 함수)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. Callback을 넘겨받는 코드는 이 Callback을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.OpenG
실습: ColorCube 에서 출력된 결과를 보았을 때 육면체가 제대로 표현되지 않는 것을 알 수 있다. 이는 부정확한 depth 표현으로 인해 발생한 문제로 이를 해결하기 위한 방법이 Z-Buffer(Depth-Buffer) 이다.Z-Buffer (Depth-Buff
이번 실습에선 ColorCylinder를 만들고 사용자 입력에 따라 vertex number를 변경하고 도형의 회전, 정지 기능을 만들어보자.이번엔 MyCylinderVertex 구조체를 정의하여 vertex data를 저장하자.init 함수는 int numPoly 와
MySphere.h MySphere.cpp vshader.glsl fshader.glsl
Scalars $\\alpha, \\beta, \\gamma$ from a scalar fieldOperations $\\alpha + \\beta$, $\\alpha \\cdot \\beta$ , $0$, $1$, $-\\alpha$, $()^{-1}$Vectors
Linear Transformations 은 벡터 공간에서 적용되는 변환으로 Scalling 과 Rotation 등이 포함된다. Linear Transformations 은 원점을 고정하며, 직선은 직선으로 유지된다.3차원에 대한 선형 변환은 3x3 행렬로 표현된다.$
Rigid Transformations 은 물체의 모양과 크기를 변형 시키지 않고, 물체의 위치와 방향만 변경하는 변환이다. 즉, Rotations 과 Translations 이 포함된다.3차원 에서 강체 변환 $T$는 다음과 같이 표현된다.$$T(p) = R{3 \\
Affine Transformations 은 선형 변환과 이동 변환이 결합된 변환이다. 직선을 직선으로 유지하지만, 평행선이 보장되지 않을 수 있다. 선형 변환에 비해 더 일반적인 변환이며, 그래픽스에서 많이 사용된다.3차원에 대한 아핀 변환은 4x4 행렬로 표현된다.
Projective Transformations 은 3D 공간에서 2D 평면으로 물체를 투영하는 변환이다. 이는 원근법(perspective)을 표현하는 데 사용되며, 직선은 직선으로 유지되지만, 평행선은 사라질 수 있고 원근 효과로 인해 물체의 크기가 변할 수 있다.
Homogeneous Coordinates (동차 좌표계)는 컴퓨터 그래픽스에서 3D 변환을 간편하게 표현하고 계산할 수 있는 좌표계이다. 이 좌표계는 일반적인 유클리드 좌표계(Euclidean Coordinates)를 확장하여, 이동(translation) 을 포함한
임의의 축을 중심으로 3차원 공간에서 물체를 회전시키는 방법은 다음과 같다.회전축이 좌표축 $(x, y, z)$ 과 정렬되지 않은 경우, 이를 구현하기 위해서는 좌표계를 회전축과 정렬시키고 나서 회전한 후, 다시 원래 좌표계로 복원하는 과정이 필요하다.임의의 축을 벡터
Eular Angle (오일러 각)은 3차원 공간에서 물체의 회전 방향을 표현하는 방법 중 하나이다. 오일러 각은 물체가 각각의 좌표 축($x, y, z$)에 대해 순차적으로 회전하는 각도를 의미하며, 회전을 표현하기 위해 3개의 각도가 사용된다. 이를 통해 물체의 방
Quaternions (쿼터니언)은 3차원 회전을 표현하기 위한 방법으로, 특히 Gimbal Lock(짐벌 락) 문제를 해결하기 위해 널리 사용된다. Quaternion은 4차원 수로, 복소수의 확장된 개념으로 이해할 수 있다. 회전과 같은 3D 변환에서 Quatern
Column Major은 행렬을 메모리에 저장하는 방식 중 하나로, 열(Column) 단위로 데이터를 순차적으로 저장하는 방식이다.다음과 같은 행렬 $M$ 이 있다고 하면$$M = \\begin{bmatrix} m{0 0} & m{0 1} & m{0 2} & m{
[컴퓨터그래픽스: 부록] 과제1: Waving_Plain