[그래픽스] 3/8

(지각했다!)
여러분이 자주 쓰는 RGB표준은 SRGB입니다.
원색을 잘 보려면 얼마나 많은 색이 필요할까요?
무한히 많을 수록 좋습니다.ㅋㅋ

Vector vs Raster CRT

Vector displays

라인의 수가 늘어날 수록 버벅거립니다.
초창기 CRT에 자주 쓰였죠.

Raster displays

화면에 그려지는 라인의 정보를 가지고 있는 것이 아니라,
픽셀의 정보를 가지고 있습니다.
그 정보를 순서대로 그려줍니다.
우리가 모르고 있는 사이에 1/30초 사이에 한번 그리고, 다시 그리고.

현재 Vector display는 거의 멸종했고,
요새 여러분이 보는 것들은 대부분 Raster입니다.

Scan conversion

discrete한 것으로 분리하여 그리는 방식이에요.
표준화된 방식으로 자리잡았죠.

Frame Buffers

프레임버퍼는 컴퓨터의 메인 메모리상에 저장된 경우도 있고요(옛날),
요즘에는 분리된 경우가 많죠.
디스플레이 버퍼가 분리되어서 거기에서 처리합니다.

용량에 대해서 따져볼 수 있겠죠.
램이 비싸던 시절에는 모두 Black and white 디스플레이만 가능했죠.
램 가격이 떨어지면서 칼라 디스플레이가 등장하죠.
처음에는 8비트, 15비트, 16비트, 24비트..
그러나 이 정도 색으로 색을 표현하기에 색의 종류가 많이 부족해요.
사람의 눈은 정확하니까요.
그래서 이제는 High range display라는 게 등장합니다.
여러분이 사 본 적이 없을거에요.
몇 천만원 정도 하니까(….)
이것은 픽셀당 RGB색상의 floating point를 저장합니다.

그렇다면, high-end display에서 96가지의 정보에는 무엇이 저장되었을까요?
과거의 사람들이 무엇을 했느냐는 참 중요합니다.
미래에 어떻게 기술이 변할 지 알 수 있어요.
토론 과정을 보면서, 연구를 할 수도 있고요.
이 다음에는 어떻게 의사결정을 내려 무엇이 되었고… 하는 흐름을 보는거예요.
이것은 뒤에 나올테니까 그때 보죠.

24비트 컬러.
2^24라고 하면 어마어마하게 많은 정보를 저장할 수 있을 것 같지만,
그렇지 않아요.
따져보면 별로 저장할 수 있는게 없습니다.

비트 수가 모자랄 때에는 무엇을 했냐면, 칼라 테이블을 만들었습니다.
여기에는 256가지의 색만 만들어두고, 8비트로 그것을 표현합니다.

Deeper Frame Buffers

알파 채널

RGB 이외에 투명도라는 것을 씁니다.
가령 투명도가 50%라면, 뒤에 있는 색깔과 겹쳐지는 것을 계산할 수 있습니다.
이런 것을 생각보다 많이 사용합니다.

글씨 하나를 확대해봅시다.
글씨의 테두리를 보면, gray scale로 보이죠.
요새는 경계선 폰트라고 해서, ..? 못들었다;
글자가 작아지면 격자처럼 깨지게 되는데 그것을 알리아싱이라고 합니다.
그것을 방지하려면 이와 같이 테두리를 투명하게 해야 합니다.

Z-Buffer

입체를 그릴 때, 깊이에 대한 정보를 가지고 있어야 합니다.
16비트 이상의 정보를 저장합니다.

Double Buffer

계속 화면을 업데이트 해야하는데,
자꾸 화면을 다시 찍으면 깜빡깜빡 하는 게 보이겠죠?
그래서 두 프레임을 유지하면서, 하나는 미리 찍어놓고 하나는 렌더링을 하고 있습니다.
그래서 다음 화면으로 전환될 때, 찍어놓은 녀석을 바로 보여줍니다.
요새는 두개 이상으로도 많이 유지합니다.

Raster CRT Display

ppt를 보면… 말로 막 써있는데, 그림을 보죠.
CPU가 있고 System bus를 통해 연결되어 있다고 하죠.
CPU에서 나가는 커맨드는 상당히 high level command입니다.
이걸 Display Processor를 지나면서, 어떤 프레임에 어떤 픽셀을 찍을지-로 변환됩니다.
다시 단계를 지나면서…

Interlacing

시간이 어느정도 걸리는지는 물질의 특성이잖아요.
그래서 frame rate에 제약이 있었어요.
rate를 높이기 위해서, 짝수 줄만 바꾸고, 홀수 줄은 놔두고… 하는 짓을 했죠.
옛날 모니터 사진을 찍으면, 화면에 줄이 살짝 생긴 걸 볼 수 있죠.

요새는 이 방법을 쓰지 않습니다.
여러분은 이런 방법을 쓰는것을 보지 못했을수도 있어요.

Flat Panel Displays

LCD, LED가 경쟁을 하다가, OLED가 나오다가..

Output Devices

모니터 말고 다른 것들도 있죠.
내가 이 슬라이드를 20년 전에 만들었는데,
입체 영상에 대한 게 그 당시 유행하다가 잠잠해졌었는데 요새 다시 유행하네요.

여러 문제가 있죠.

안경

왼/오 눈에 들어오는 정보가 달라서 그걸로 입체를 보여주죠.
하지만 다들 안경 쓰는 거 싫어하잖아요.
그래서 안경 없이 해야 하는데..
문제는 사람이 움직이는 것에 따라서 보이는 게 달라져야 하는데,
그러려면 사람이 어디에 있는 지 알아야 해요.
좌석마다 다른 시그널을 보여준다든지..

헤드 마운트

그리고 시야가 너무 좁아요.
최근에 오큘러스라는 회사에서 디바이스를 만들었는데 엄청나게 히트를 쳤죠.
이 디스플레이를 쓰면 상당히 시야가 넓어요.

Wide screen

여러 가지 방법이 있어요.

  1. 모니터 여러 개
  2. 프로젝터 여러개: 이음매가 보이지 않게 합니다.

와이드 스크린을 제일 많이 쓰는 데가 어디일까요?
전세계 과학관, 테마파크.
디즈니랜드에 가면 많이 있어요.
스키리프트 같은 데에 앉으면 공중에 살짝 뜹니다.
반구보다 좀 더 큰 스크린에 영상을 출력하면서 바람 같은걸 불어서 움직이는 것 같은 느낌을 주죠.
자동차 회사 쇼룸에서도 씁니다.

Input Devices

키보드, 마우스, 트랙볼.

Space ball

이런 거 써 본 사람 있나요?
공이 하나가 있어요.
압력을 감지합니다.
그래픽 디자이너-특히 3차원 작업을 많이 하는 사람들이 저걸 왼 손에 잡고 오른손에는 마우스를 잡고 작업을 많이들 했었죠.

Head Mounted Display

위치 추적기가 달려있어요.

Data glove

예전에는 장갑을 직접 꼈지만,
요새는 손의 이미지를 스캔하죠.

Image Scanner

Blue Screen Scanner

뒤에 블루 스크린을 놓고, 앞에서 연기를 합니다.
그리고 블루 스크린에 그래픽을 입힙니다.
하지만 이 경우 앞에서 연기한 사람이 받는 조명이 뒤의 배경과의 괴리가 있어 어색합니다.

요새는 그래서 돔에 촘촘한 조명을 만들어놓습니다.
조명을 조정하여 더 자연스럽게 하는거죠.

Motion Capture

옷에 촘촘하게 센서를 박아서 모션을 캡쳐합니다.
이 경우 모션을 캡쳐하여 만들어진 캐릭터가 연기 상을 받으면 누가 상을 받을까요?
연기자? 혹은 애니메이터?
결과가 기억이 안 나네요.

요즘 영화사중에 모션 캡쳐를 많이 쓰는 회사가 웰파.
이번에 새로 만드는 영화에는 눈 속에서 모션 캡쳐를 한 게 이슈에요.

Graphics Rendering Pipeline

60년대 그래픽스를 하는 사람들에게 중요한 건 파이프라인이었어요.
3차원상의 Geometric한 물체를 2차원으로 만들어내는 과정을 rendering pipeline이라고 해요.
요새는 이게 다 chip속에 들어가있어서, 여러분이 확인하기 어렵습니다.
하지만 역사적인 이유 때문에, 교과서의 대부분을 차지하고 있어요.
60년대의 이야기라, 좀 식상하죠.

3차원의 무엇을 원소로 바꾸어서 렌더링해주는 것은 OpenGL과 같은 패키지에서 해줍니다.
여러분들은 직접 해볼 일이 없죠.
예전에는 저것을 직접 만드는 숙제를 했었어요.
요 부분을 다루는게 다음 시간부터 몇시간 동안 다룰 내용입니다.

화면에다가 무엇인가를 그리겠다고 하면,
좌표를 정해야합니다.
그런데 항상 좌표를 정하는게 문제예요.
Body local coordinate 등등 다양한 이름으로 불립니다.
하나의 물체를 기준으로 좌표를 정했는데, 한 공간에 여러 물체가 있다고 해봅시다.
각각이 디자인 된 것을 한 공간에 모아놓으면,
그 공간에 해당하는 coordinate system이 있어야 합니다.
그게 world coordinate system입니다.

또 그것을 바라볼 때, 어디에서 바라볼까의 문제도 있습니다.

그것까지 정해지고 나면, 이것을 Normalized Coordinte로 변환해야하죠.

이 과정을 모두 거치면, 디바이스에 대하여 컨버전해주어야 하죠.

Functions of Graphics Package

그래픽스 패키지의 범위는 시간이 지날수록 점점 넓어지고 있어요.
여기 쓰여 있는 것은 초창기의 기능이고, 시간이 지날수록 증가하고 있죠.
이번학기에는 그것까지 cover할 시간은 안 될 것 같아요.

예전에는 국제 표준이 있었어요.
제일 처음 나온게 70년대의 core, 80년대, 90년대… 계속 나왔었는데요.
결과적으로 말하자면 이런 표준은 전부 죽었습니다.

살아남은 것은 Industry 표준입니다.
실리콘 그래픽스라는 회사가,
자신의 워크스테이션에 쓰기 위해서 OepnGL(그당시 GL)을 만들었습니다.
그리고 이것을 공개하여 OpenGL이 되었고,
그것을 유지하기 위한 단체가 붙었고요.

X window system.
들어본 사람?
아 리눅스에서 쓰고 있지.
이것은 초창기 윈도우의 컨셉인데,
기본 가정이 뭐냐면,
중앙에 컴퓨팅 파워가 좋은 컴퓨터가 있고, 클라이언트가 붙어있다는 거였어요.
그러다가 클라이언트의 파워가 좋아져서 그래픽을 그릴 수 있게 되었습니다.
X라는 것은 건너편의 컴퓨터에 그림을 그릴 수 있게 만들어진 게 X windows입니다.
지금은 중앙에서 계산하고 로컬이 렌더링하는 게 아니죠.
저 시절에 특화된 상황에서는 유용했었습니다.

VRML. 버믈이라고 읽어요.
죽어가고 있습니다.

Direct X.
한때는 PC게임 시장을 점령했었죠.
그런데 마소가 힘이 죽었는지, 업데이트가 안 되는 사이에 OpenGL에게 밀리고 있습니다.
마소의 장악력이 줄어들은 것이 크겠죠.
OpenGL은 어디에서나 쓰이지만 Direct X는 윈도우에만 올라가니까요.

시간이 남네. 질문 있으면 해봐요.

Q. GPU가 하는 일은 뭔가요?

요새는 경계가 줄어들었어요.
요새는 GPU가 CPU의 역할을 대신하기도 하고.
CPU는 general computation을 할 수 있는 소수의 core를 갖고 있어요.
각각의 core가 굉장히 파워풇하죠.
GPU는 전혀 다른 형태에요.
처음부터 패러럴한 계산을 염두에 두었죠.
이런 구조의 것들이 할 수 있는 몇가지가 있어요.
가령 반복적인 계산.
비슷한 일을 동시에 여러번 해야 하죠.
그래서 GPU인데, 코어 하나의 성능이 좋아져서 일반적인 패러럴 프로세스에도 많이 쓰입니다.
트레이닝을 할때가 그렇죠.

요즘엔 그 다음 단계에 진입했죠.
자꾸 GPU 코어가 좋아져서 CPU에 근접했고,
CPU는 갯수를 늘리는 상태가 되었죠.
그래서 굳이 이 목적을 나눌 필요가 없는 상태가 되어 가고 있어요.
계산을 할 때는 계산을 하고, 그림을 그릴 때는 그리고…
그런 식의 아이디어로, 점점 확대가 되어 가고 있어요.

Q. 눈밭에서 어떻게 모션캡쳐가 되죠?

마커는 특정 주파수를 잘 반사시켜줘욘..?
특정 주파수의 파장을 쏘면, 그것을 받아다가 보는거죠.
원래 실외에서는 태양빛때문에 할 수가 없었어요.
태양빛이 모든 파장의 주파수를 다 갖고 있잖아요.
그래서 실외에서 하려면 마커가 주도적으로 파장을 내보내야 해요.
여러가지 시스템적인 문제가 많죠.
영화사에서 그것을 비교적 잘 할 수 있는 이유가 뭐냐면,
그걸 손으로라도 그릴 수 있는 사람들이거든요(…)
시간이 문제일 뿐입니다.
일종의, 작업시간 단축 효과를 노리는 거에요.
모션 캡쳐를 한다고 해도 그것을 100% 그대로 쓰는 일은 없어요.
그대로 쓰게 되면, 너무 사실적이라 이상하대요.
애니메이션에 있는 사람은 절대 사실적이지 않아요.