본문 바로가기

Graphics

(7)
[Graphics] 06. 3D 이미지 생성을 위한 작업 이미지라고 생각하면 사진을 생각하면 적절하다. 카메라를 두고 어떤 피사체로 가서 셔터를 내리면 사진이 찍히는 방식이다. 즉 3차원상의 물체는 다음과 같이 찍힐 것이다. 이 때 관측자가 수직으로 바라보고 있다고 가정하자. 그럼 우린 카메라의 좌표가 필요할 것이다. 이를 Eye(Ex, Ey, Ez)로 표기하도록 하겠다. 그럼 이미지는 저 스크린의 픽셀들의 단위라고 볼 수 있을 것이다. 이 때 위의 회색처럼 Eye는 사각뿔의 모양을 가지고 스크린을 투영을 하는데 이 공간을 전문 용어로 View Frustum 즉 시각 사각뿔이라고 부른다. 이 때 이미지를 어떠한 내용을 고정시켜줘야 이미지를 딱 하나로 고정되는가를 데이터로 제공해야한다. 이는 Parameter를 제공해야 한다. 1. parameter of an ..
[Graphics] 05. 3차원상 물체 변환 앞서 알아본 2차원상 물체 변환에서 3차원으로 확대를 시키면 어떤 식으로 처리를 해야될까에 대해 고민을 해보자. 정말 간단하게도 회전을 뺸다면 대부분의 내용은 이어진다. 그럼 3차원 공간상 회전은 어떻게 이뤄질 지에 대해 알아보자. 1. 회전 3차원 공간상에서 단순히 회전하라고 준다면 어디로?라는 질문이 따라온다. 즉 회전축(Rotation axis)을 명시를 해주지 않는다면 안 된다는 것이다. 표기는 다음과 같다. 또 추가한다면 보통 오른손 좌표계라고 말하는 것을 이용한다. 이는 시계 반대방향으로 회전하는 것이 +축이라는 것이다. 그럼 z축을 먼저 정리를 해보겠다. 그렇다면 만약 x,y,z축이 아닌 어떤 벡터를 가지고 회전을 한다면 어떻게 될 것인가? if(sqrt(a*a + b*b) Rz(C>0? t..
[Graphics] 04. 2차원상 물체 변환 이제 지금까지 어떻게 선분을 그릴까, 그리고 그 선분을 어떻게 잘 잘라내서 윈도우 창에 띄울 것만 추릴까에 대해 공부를 해봤다. 이제 어떻게 이 공간 내에 있는 도형들을 변환할 수 있을까에 대해 고민을 해보자. 보통 Scale를 키우거나 아니면 이 물체를 회전시키거나, 이 도형이 이동하는 것 등등은 많이 봤을 것이다. (게임 상에서 비행기가 회전하거나, 아니면 플레이어가 이동하거나, 심지어 슈퍼 마리오에서 쿠파가 커지는 것 등등) 그렇다면 이러한 우리가 보는 것 뒤에서는 어떠한 연산이 일어나는지에 대해 잘 알아둘 필요가 있다. 이 연산은 대부분 선형대수로 변환하며, 일단 2차원을 예시로 들어보도록 하겠다. 1. 평행이동(Translation) 그대로 위치만 바뀌는 식이다. 예시는 다음과 같다. 이 때 저..
[Graphics] 03. 윈도우 클리핑 우리는 어떤 화면을 통해 컴퓨터가 그려내는 이미지 세상을 본다. 즉 화면에는 이 화면에 맞는 내용만 출력이 되어야한다는 뜻이며, 이 외의 나머지 물체나 배경은 출력이 되선 안 된다. 이 것을 바로 Window clipping이라고 한다. 어떠한 Min(Xmin, Ymin)부터 Max(Xmax, Ymax)까지로 한정된 Window 내부에 있는 부분만 잘라서 그리는데 과연 어떤 알고리즘이 필요한 지 알아보자. 1. Line Clipping (라인 클리핑) 예로들어 선분이 윈도우에 다음과 같이 걸쳐있다고 가정하자. 이 때 두 점 p1(x1, y1)과 p2(x2, y2)를 잇는 선분의 w의 내부만을 어떻게 그릴 것인가. 여기서는 보통 2가지 알고리즘이 사용된다. 1. Cohen-sutherland 알고리즘 일단..
[Graphics] 02. 디스플레이와 그리기 방정식 디스플레이는 다양하다. CRT, LCD/LED, Plasma panel 등등이 있다. 이러한 장비에 어떻게 그래픽적인 디테일을 담을 수 있을까를 고민해보자. 기본적으로 모니터는 픽셀들의 집합으로 장면, 도형 등을 표현한다. 이 러한 픽셀들의 집합으로 그림을 그리는 것을 래스터 그래픽스라고도 한다. 래스터 그래픽스상에서 직선을 표현하는 방식은 두 가지이다. 두 영상의 차이를 알겠는가? 그렇다. 왼쪽은 픽셀이 적고 이러한 방식은 축소하면 선의 연결도가 약하며, 오른쪽은 픽셀이 많고 선이 선명하다. 왼쪽과 같은 방식을 Simple DDA(Digital Diffrential(적분) Analyzer)이라고 하며, 오른쪽을 Symmetric DDA이라 부른다. 그리고 보통 용량이 적으며, 표현할 수 있는 것들은 왠..
[Graphics] 01. 컴퓨터 그래픽스의 중심. 영상과 색 컴퓨터 상 영상(Image)를 다루는 분야는 크게 3가지가 있다. 1. 컴퓨터가 현실에 있는 물체 즉 시각 정보를 인식하는 컴퓨터 비전 분야 2. 컴퓨터가 영상을 우리의 용도에 맞게 다양하게 처리하는 영상처리(Image Processing) 분야 3. 컴퓨터가 영상을 만들어서 이를 세상에 보여주는 컴퓨터 그래픽스 분야. 내가 말하고 싶은 것은 이 중 3번에서 사용되는 기술이다. 대표적인 예로는 Virtual Reality 줄여서 VR이다. 이 분야는 대체적으로 HMD(Head Mount Display)라는 기기에 실시간으로 영상을 뿌리는 분야로 Flight Simulator, 군사 트레이닝 장비 등으로 사용된다. 또한 영화에서는 정밀하고도 리얼한 무언가를 렌더링해서 사용을 한다. Parasite - VF..
[Graphics] 쉐이더란 무엇인가 주의 : 이 글은 Pope Kim님이 쓰신 『셰이더 프로그래밍 입문』이란 책을 정리 차 작성했으며, 문제 발생시 바로 내릴 것입니다. 셰이더의 역사 셰이더를 말하려면 일단 CG의 역사를 공부해보자. 그래픽스 라이브러리가 없던 시절에는 삼각형을 그리고 이 삼각형에 어떤 색을 칠할 것인가에 대해서는 소프트웨어가 직접 계산을 했기 때문에 느릴 수 밖에 없었다. 하지만 3차원에 대한 연산은 점차 늘어나기에 3차원 가속칩이 나오기 시작한다. 그러나 이것 또한 표준화가 안 된다는 문제점이 발생을 했다. 그래서 모든 하드웨어에서 잘 돌아가는 표준을 만들자 해서 나온 것이 바로 Direct3D, OpenGL이다. 하지만 표준화가 되니 대부분의 게임이 똑같아 보이는 단점이 생겼다.(PS2 당시가 그랬었다.) 그렇기에 프..