Featured image of post 기획자를 위한 3D 그래픽스 이론

기획자를 위한 3D 그래픽스 이론

두 번째 시간입니다. 곧장 쉐이더 쪽으로 넘어갈까 생각도 해 봤지만…
초반 강의를 해 본 결과 미술쪽이나 3D 쪽의 용어 기본도 안 되어 있는 친구가 있어서
아직 쉐이더 쪽으로 넘어가긴 이르겠더군요.

* 쓰는 중이니까 좋은 의견 있으시면 조언해 주시면 감사하겠습니다.
기획자가 이 부분에 대해서는 좀 알고 있는게 좋겠다,
이 부분은 틀렸다 등등… 저도 절대 완벽하지 않고, 의외로 줏어들은 지식도 많으니까요 ^^

기획자가 알아야 할 게임 Basic Game 3D Graphics

3D 그래픽에서 기획자가 알아야 할 내용은 기본적인 용어와 개념입니다. 물론 3D툴을 적당한 수준으로 다룰 수 있는 것이 가장 좋은 방법이지만, 모두에게 기대할 수는 없겠지요. 그럴 때에는 아래 소개한 정도의 기본적인 용어와 개념 정도는 익혀 두는 것이 좋습니다. (아래 용어의 출처는 http://ko.wikipedia.org  의 도움을 받아, 보다 게임에 맞게 내용을 추가 / 수정하여 작성되었습니다.)

또한 이 지식이 유용할 때가 있는데, 그것은 프로그래머와 그래픽 디자이너가 사용하는 용어의 개념이 달라서 오해가 생기는 것을 기획자가 방지할 수 있다는 것입니다. 때문에 여기서 사용하는 용어는 프로그래머가 사용하는 용어와 그래픽디자이너가 사용하는 용어를 모두 소개시켜 놓았습니다.

게임 3D 그래픽의 기본 용어

DirectX
DirectX는 MS사가 자사의 MS Wimdows용으로 개발한 멀티미디어 API의 집합입니다. 2D/3D의 도형, 오디오, 동영상 등 여러 미디어를 사용하는 응용 프로그램이 Video ram, 사운드 카드 등 하드웨어 장치를 직접 접속하여 고속 처리할 수 있습니다. 현지 PC 게임 제작에 많이 활용하고 있으며, MS의 게임기인 X-box도 이 DirectX에 기반하고 있습니다. (그러므로 PC 게임에서 X-box 로 컨버팅 하는 것은 상대적으로 쉽지만, 나머지 게임기로는 힘듭니다)

Polygon
3차원 컴퓨터그래픽에서 입체형상을 표현할 때 사용하는 가장 작은 단위인 다각형을 가리킵니다. 3차원 공간에서 시작점과 끝점이 선으로 연결된 폴리라인으로 곡선 위에 있는 몇 개의 점을 직선으로 이어서 곡선을 표현하는 방법입니다. 물체의 테두리를 나타내기 위해 사용됩니다.(물체의 윤곽을 결정한다는 의미입니다) 
폴리곤은 원래 사전적으로 ‘다각형’ 이라는 뜻으로, 반드시 삼각형을 의미하는 단어는 아닙니다. 단 게임이나 3D에서는 최소 형태의 다각형이 삼각형인 관계로, Polygon이란 말이 삼각형인 것 처럼 자주 사용되는 경향이 있습니다
3D max에서는 Face란 용어를 사용하며, 3Dmax 에서 사용하는 비슷한 용어로 Poly라는 용어가 있는데 이것은 3D max에서만 사용가능한 전용구조로, 최소구조가 꼭 삼각형이 아니어도 되는 다각형의 특이한 구조이기 때문에 모델링 작업시에 유용하게 할 수 있는 구조입니다. 그렇지만 게임엔진으로 Export 되면 모두 다시 삼각형으로 바뀌게 됩니다. (주:사실상 이 Poly가 진정한 Polygon의 의미일 것입니다)

Mesh
Mesh란 사전적 의미로 ‘그물망’ 을 의미하며, 이것은 3D 로 만든 물체들의 와이어프레임이 그물처럼 격자를 가지고 있는데에서 기인합니다.
폴리곤 메시(polygon mesh)는 3차원 컴퓨터 그래픽스에서 다면체의 형태를 구성하는 폴리곤과 정점들의 집합을 의미합니다

메시는 간단한 렌더링이 가능하도록 주로 삼각형과 사변형 또는 볼록한 다각형으로 구성되지만 구멍이 뚫려 있는 등 더 복잡한 도형을 이용하여 구성할 수도 있습니다. 즉 폴리곤들이 모여서 만드는 3D 물체를 의미한다고 할 수 있습니다.

(주: 메쉬 > 폴리곤)

UV Mapping
UV 매핑은 2차원 이미지를 3차원 모델로 표현하는 3차원 모델링의 한 과정입니다. UV맵은 3차원 물체의 이미지(흔히 텍스쳐라고 한다.)로 변환됩니다. 원래 3차원 물체에게는 X,Y,Z의 좌표계가 있는 반면에, 변환된 물체에게는 U,V의 좌표가 입니다. 이것은 3차원 물체의 표면에 이미지를 칠하는 효과를 만든다.

예를 들어 아래 그림에 격자 무늬의 구가 있습니다. 첫번째 왼쪽의 것은 UV매핑이 안된것이고, 두번째 것은 UV매핑이 된것입니다. UV매핑이 안 된 구에서는 격자무늬가 XYZ공간에 놓여지고, 격자가 쪼개진것 처럼 보입니다. 하지만 UV매핑이 된 구는, 격자무늬가 UV공간에 놓여지고, 구의 점들은 위도와 경도에 따라 UV공간으로 변환됩니다.
그래픽 디자이너들은 3D max와 같은 그래픽 툴을 이용하여, 각 오브젝트들을 가상으로 쪼개어 평면에 배열하는 작업을 UV의 좌표계에 오브젝트를 맞추는 작업을 합니다. 이것을 Unwrap UVW 라고 합니다.

파일:UV mapping checkered sphere.png

빛의 용어

3D 그래픽이 제대로 출력되어 ‘사실감’ 있게 보여지기 위해서는 ‘빛’ 이 가장 중요합니다. 같은 오브젝트라도 빛을 얼마나 효과적으로 표현했느냐에 의해 그 품질은 급격한 차이를 보이게 되며, 이 빛에 대한 기본 용어를 알고 있는 것이 좋습니다.
이 용어는 그래픽 디자이너와 프로그래머가 의미를 중복하여 쓰거나 서로 다르게 쓰는 경우도 있으며, 기술이 발전되거나 유행에 따라서 변할 수도 있습니다.
(그림출처 : http://www.huevaluechroma.com/011.php )

 (하나의 Directional light 에서 보이는 빛나는 당구공. 스페큘러와 디퓨즈 리플렉션이 보인다. Photograph by David Briggs.)

(각 부분의 용어 설명)

위의 공은 사실 흰 종이 위에 올라가 있는 당구공일 뿐입니다.

사실상, 정밀하고 포토리얼리스틱한 효과를 내기 위해서는 위의 라이트 구조를 구현해야 하지만 실제적으로는 어느 정도 ‘타협된’ 구조로 라이트를 표현하곤 합니다. 여기서 알아두어야 할 3D 그래픽스에서 사용되는 빛의 기본적인 용어는 다음과 같습니다.

Specular : 사전적 의미는 ‘반사하는’ 란 의미로, 번역을 해보면 Reflection과 혼동할 여지가 있습니다. 그렇지만 보통 사진이나 그래픽에서는 ‘광원의 직접적인 반사’ 를 의미하며, 하이라이트와 같은 의미로 사용됩니다. 여기서 중요한것은 입사각과 반사각이며, 때문에 광원의 위치와 보는 사람의 시야 (카메라) 의 위치가 중요하게 작용합니다.


Diffuse : 물체가 가지고 있는 고유의 색상을 의미합니다. 사전적으로는 ‘확산’ 으로, DiffuseMap을 ‘확산/ 난반사 재질 색상’ 으로 번역하기도 합니다. 이것은 물체가 가지고 있는 색상이란 그 색상을 반사하기 때문이다.. 에서 나온 말이라고 생각되지만 (근거를 못찾겠군요) 그래서 사전적 의미로 설명하면 혼동할 우려가 큽니다. 그러므로 처음에 얘기한 ‘물체 고유의 색’ 이 이해하기 편합니다. (고유의 질감과는 다른 말입니다. 나무 재질과 나무 재질 스티커는 질감이 다르지요. )
그래서 3D max와 같은 그래픽 프로그램에서는 DiffuseMap이란 말이 물체의 기본 재질 Texture 부분을 의미합니다. 즉 나무 재질을 만들고 싶으면 여기다가 나무 사진을 붙이면 됩니다. 물론 질감수정을 하기 전이면 플라스틱에 나무재질 그림 그려놓은 것 처럼 되겠지만 말이죠.
모든 물체가 가지고 있는 색과 무늬가 전부  DiffuseMap이라고 생각하시면 됩니다.
Gamebryo에서는 BaseMap 이란 말을 사용합니다.

Ambient
만약 물체가 반사광이 없이 빛이 들어오는 방향만 있다고 생각하면 아래 이미지처럼 될 것입니다.
 
이런 모습은 주로 반사광이 없는 우주 공간에서 주로 발견됩니다.
그렇지만 우리가 살고 있는 세계에서는 들어온 빛이 주변의 사물에 흡수, 반사, 확산되어서 주변의 모든 오브젝트에 어느 정도 영향을 끼치게 됩니다. 이것을 정확히 표현한 용어는 Global illumination 이라고하며, 복잡한 조명 기술을 복합적으로 사용하여야 표현이 가능합니다.

(그림출처: 니시카와 젠지의 3D 그래픽)

때문에 게임과 같은 실시간 계산 방식의 렌더러에서 이 기술을 사용하는 것은 사실상 불가능하며, 때문에 가장 간단한 방식으로 화면의 모든 부분에 일정한 색을 강제로 더하는 방식으로 이러한 반사광을 흉내내고 있습니다. 이것이 가장 일반적인 방식인 AmbientColor 입니다. 이 계산은 지극히 단순하고 빠른 대신, Diffuse 나 Specular 영역까지 색상이 영향을 끼치기 때문에 이미지가 탁해지거나 과도하게 밝아지는 등, 원하지 않는 칼라가 나올 확률이 있습니다.
최근에는 이 단점을 개선한 여러 가지 Fake 기법들이 개발되어 사용되고 있습니다.

Emissive : 사전적 의미로 ‘방사의’ 라는 의미를 가지고 있으며, 3D max에서는 ‘Self illumination(자기발광)’ 이라고 불리기도 합니다. 전구 등을 표현할 때 사용하는 방식으로, 사실상 Ambient 칼라처럼 이 색상을 전체에 균일하게 더해주는 것과 같습니다.

빛의 종류

3D에서 사용되는 조명은 크게 아래와 같이 3가지로 분류할 수 있습니다. 반면에, 실제 광원은 면적과 체적으로 가지며, 그 때문에 부드러운 경계를 가지는 그림자가 드리워집니다. 3D 그래픽에서는 이러한 그림자를 흉내내기 위해 광원을 수정하지 않고 그림자를 수정하여 실제를 흉내내곤 합니다 (주: Real-Time Rendering 2판)                                                                   

Directional light :
‘방향광’ 이라고 불리우며, 어느 한 방향으로 평행하게 표현되는 라이트. 가장 기본적이며 많이 사용됩니다. 그림에서는 원통으로 표현되었지만, 프로그래머의 입장에서는 원통으로 크기가 제한되어 있는 이미지는 아니며, 단지 한 방향으로 쏘아대는 빛의 의미로 사용됩니다. 일반적인 방향성 라이트의 경우 주로 사용되며, 특히 태양빛의 표현으로 많이 사용됩니다.

Spot light :
이름 그대로의 ‘스포트라이트’ 로’집중 조명광’ 정도로 번역됩니다. 주로 특수한 경우에 사용됩니다. 하지만 기본적으로 많이 사용되는 라이트는 아닙니다.

Point light :
‘점광’ 이라고 불리우며, 한 점에서 주위 사방으로 방사되는 라이트입니다. 3D max에서는 ‘Omni light’ 라구 불리우며, 전등이나 촛불, 기타 폭발의 광원 등에서 많이 사용됩니다.

게임 3D 그래픽의 기본 개념

3D는 모두 직선이다.
3D는 기본적으로 모두 직선으로 이루어져 있습니다. 아무리 부드러워 보이는 물체라 하더라도 사실은 모두 각진 물체이며, 각진 부분을 부드럽게 보이도록 눈속임하여 부드럽게 보이도록 노력하는 것 뿐입니다.

3D 

Alpha blending 과 Alpha testing

Normal Map 제작법

Z 버퍼

HDR
하이 다이내믹 레인지 렌더링 (HDRR, High Dynamic Range Rendering)은 3차원 컴퓨터 그래픽스 분야에서 사용되는 기술의 명칭으로 더 폭넓은 다이내믹 레인지를 활용한 렌더링을 말한다. 이를 사용함으로써 비디오 게임이나 컴퓨터 애니메이션, 디지털 특수효과 분야 등에서 그 동안 사용했던 조명 모델에 비해 훨씬 사실적인 표현이 가능해진다. 종래의 조명 모델을 이용한 렌더링은 HDRR과 구분하여 LDRR(Low Dynamic Range Rendering)이라고 부른다.

Hugo로 만듦
JimmyStack 테마 사용 중