컴퓨터/그래픽스 7

texture

그래픽은 실제같은 느낌의 표면을 모델링 하기 위해 텍스쳐 매핑을 사용한다. 텍스쳐 매핑은 각 지점에 색을 할당하는 기능을 원한다. 표면은 2d 영역이므로 기본적으로 이미지이다. 텍스쳐(질감) 맵의 각 픽셀을 텍셀이라고 한다. 각 텍셀은 (u,v)2d 텍스쳐 좌표와 연관된다. 정규화로 인해 u,v의 범위는 [0.0 , 1.0]이다. 이와 같은 u,v의 범위에서 이미지 너비와 높이를 곱한다. i=0,…,N, j=0,…,M 인 경우 F[i,j] 를 두고 u,v좌표 위에서 우리가 계산하려는 가장 가까운 점 F(u,v) = F[ round(N*u), round(M*v) ] 선형 보간 Linear Interpolation은 위의 nearest neighbor 점을 구하기 위해 i = floor(N*u) , j = ..

조명 illumination

이전 OpenGL 변환 최신 - 내부 매트릭스 스택과 OpenGL 함수로 정의됨 OpenGL 변환 - 프로그래머가 정의 하고 GLSL 균일 변수(mat4)로 GPU에 전송됩니 - 수학 라이브러리(glm, Eigen, …)가 유용합니다. OpenGL 수학(GLM) 라이브러리 OpenGL 애플리케이션의 기본 벡터 및 행렬 수학을 위한 C++ 클 래스 및 함수 세트입니다. 다음과 같이 GLM을 호출합니다: #include #include 올바른 셰이딩을 위해서는 모든 물체와 광원을 포함하는 전체적인 계산이 필 요합니다. 각 다각형을 독립적으로 음영 처리하는 파이프라인 모델과 호환되지 않습 니다(로컬 렌더링). 글로벌은 로컬모델..

위치변환

우리는 객체에 애니메이션을 적용하기 위해 transform을 이용한다. 이러한 변환은 행렬을 통해 구현할 수 있다. 3차원좌표의 모든 좌표변환과 회전을 표현하고자 행렬을 이용할 것 이다. 이때 3X3의 행렬로 표현하기엔 행렬의 덧셈과 곱셈을 다뤄야 한다. 더 단순한 계산을 위해 우린 4차원 행렬을 이용하여 행렬의 곱만으로 변환을 다룰 것이다. 이 변환행렬은 크기scale 회전rotation 이동translation 순서로 연산되어 객체를 이동시킨다. 임의의 3D 회전은 x, y, z 축을 따라 세 번 회전 하여 다음과 같이 표현될 수 있습니다. 하지만 아래와 같이 모든 축이 일렬로 정렬될 때에 어떤 일이 일어날까 3개 중 2개의 축만 기능하고 하나의 축은 기능하지 않는다. 이와 같은 현상을 짐벌락 gim..

openGL로 app 개발

Rasterization(래스터화) 단계: 선후관계: Rasterization 단계는 그래픽스 파이프라인의 일부로, Vertex Shader와 Geometry Shader(있는 경우) 이후에 실행됩니다. 기능: Rasterization은 3D 공간에 있는 객체를 2D 화면 공간으로 변환하는 과정입니다. 이 때, 주어진 물체의 표면을 화면의 픽셀로 나누고, 각 픽셀에 대한 정보를 결정합니다. 이 과정에는 다음과 같은 주요 단계가 포함됩니다: Clipping: 화면 밖으로 벗어난 객체를 제거합니다. Primitive Assembly: 그래픽스 파이프라인에서 생성된 정점들을 프리미티브(점, 선, 삼각형)로 구성합니다. Screen Mapping: 3D 좌표를 2D 화면 좌표로 매핑합니다. Rasterizati..

openGL의 역사 및 기타 그래픽스

openGL이란 computer graphics rendering API(application programming interface)이다. 이것을 이용하여 여러 고품질 컬러 이미지를 생성할 수 있다. 또한 application의 그래픽스 부분이 운영체제와 window system에 독립적일 수 있는 장점이 있다. 이제 우리는 openGL을 사용하여 프로그래밍을 할 텐데, 왜 그래픽을 렌더링할 때 프로그래밍을 해야할까? 이는 GPU 리소스를 보다 효율적으로 사용할 수 있기 때문이다. 하지만 과거 openGL은 programmable한 pipeline이 아니었다. programmable한 pipeline이 아니기 때문에 간단한 3D 그래픽스 애플리케이션을 만드는 데 사용될 수 있지만, 고급 그래픽스 효과를..

컴퓨터는 어떻게 이미지를 생성할까?

이와 같은 과정을 graphics rendering pipeline이라 한다. 그래서 이게 정확히 뭘 의미하는 것일까? 이는 가상의 카메라(눈)에 보이는 3차원 물체에 광원, 질감 등을 주어 2차원 영상을 생성하는 과정이다. 간단히, 3d좌표계에서 2d좌표계로 좌표를 변환하는 과정이라 보면 된다. (보통 openGL과 Direct3D를 이용하여 rendering pipeline을 구현한다.) 그래픽 랜더링 파이프라인은 일반적으로 3가지 단계로 구분된다. application >> geometry >> rasterizer 각 단계의 출력값이 그 다음단계의 입력값이 되므로 pipeline이란 이름이 붙었다. application 3D Studio, Max, Maya 등의 모델링 도구를 사용하여 3D 세계에 ..

컴퓨터가 이미지를 생성하기 위한 display에 대해

컴퓨터의 이미지를 생성하는 graphics의 video display장치에 대해 알아보겠다. display 장치에는 CRT(cathode - ray - tube) 와 flat panel display가 있다. crt(음극선관)가 이미지를 생성하는 방식은 전자부분과 접촉하여 작은 빛의 반점을 반복적으로 방출하여 이미지를 생성한다. crt가 그림을 그리는 방식에는 random scan과 raster scan이 있는데 random scan 방식은 vector display로 점과 점을 이어서 선을 나타내어 그림을 그린다. raster scan 방식은 픽셀 하나 하나를 한줄씩 차례대로 위에서 아래로 출력한다. 이는 점들의 집합으로 모든 점들은 frame buffer에 저장된다. 위의 설명에서 알 수 있듯이 ve..