3D 물체의 구성요소
3D세계에서의 공간 표현은 x, y, z 축으로 표현되는데, 이러한 물체 또한 3차원 선상에서 표현됩니다.
점과 선분으로는 도형을 표현 할 수 없지만 3개 이상의 점이 모여 ‘Polygon’가 같은 면의 집합체를 도형이라 합니다.
이러하듯 어떠한 게임에서도 잘 관찰하면 각진 면을 볼 수 있는데 적은 수의 Polygon이 노출되어 있기 때문입니다.
또한 게임 최적화에도 결정되는 조건이기도 합니다.
# Vertex (점) # Edge (선) # Polygon (면)
( 2 / 13)
3.
카메라와 나침반 -1
다시 Scene View로 돌아가 우측 상단에 있는 것을 보면 여러 방향을 가리키고 있는데 이 것을 Gizmo라고 부릅니다.
씬을 돌아다니면서 기즈모를 응시하고 있으면 해당 축을 가리키는 것을 알 수 있는데
마치 우리들이 어디를 가고 있는지를 가리키는 좋은 녀석이죠.
그리고 기즈모의 Y축을 누르면 카메라가 하늘에서 지면을 바라보는 위치로 바뀌는 것을 확인 할 수 있습니다.
축 대로 카메라 세팅이 가능해지는 좋은 녀석입니다.
# Gizmo # Gizmo의 Y축을 누른 상태
( 3 / 13)
4.
카메라와 나침반 -2
Gizmo 아래에 글씨 하나가 있는데 이 것은 카메라의 투영법을 전환하는 용도로 쓰입니다.
Perspective는 인간의 눈을 닮았고 카메라 자체의 화각이 있는 상태로 바라봐 물체의 원근이 살아나는 반면에
Isometric는 화각이 없는 일직선으로 투영되는 카메라이기 때문에 원근이 없고 물체의 깊이 값이 사라지게 됩니다.
전환은 아래 글자를 눌러 전환할 수 있고 이 기능은 물체의 위치 선상을 파악할 때 주로 쓰이기도 합니다.
# Perspective (원근법) # Isometric (등각투영법)
( 4 / 13)
5.
개발자 쇼핑마켓
너무 머리아픈 이론들만 나가 잠시 쉴 겸 다른 것을 둘러보겠습니다.
Game View 의 옆 탭을 보시면 ‘Asset Store’를 보실 수 있는데 말 그대로 자료들을 팔거나 구매할 수 있는 곳입니다.
그래픽이 없는 개발자에겐 수혜가 깊은 공간이죠.
잘 찾아보면 무료 어셋들이 여럿 보이니 잘 활용하면 좋은 곳입니다.
# Asset Store
( 5 / 13)
6.
텍스쳐를 입혀보자 -1
Project View에서 우클릭 뒤 ‘Import New Asset’ 또는 드래그로 이미지를 하나 불러옵니다.
그리고 새로 만든 Cube에 드래그로 적용해봅시다.
놀랍게도 우리가 불러온 이미지가 큐브에 씌워지는데
이 원리는 저 이미지 형태의 보자기를 큐브에 씌운 원리와 같습니다.
# Texture(텍스쳐)를 입히는 과정
DRAG!
( 6 / 13)
7.
텍스쳐를 입혀보자 -2
큐브에 텍스쳐를 입히는 과정은 중간에 한 단계가 더 있습니다.
바로 ‘Material’ 이라는 녀석인데요. 우리가 물체를 식별할 때 빛을 통해서 보듯이 그런 과정을 만들고
저 메테리얼을 Cube라는 객체에 건물 이미지가 씌워진 Material을 추가적으로 Component 했다고 보면 됩니다.
이미지를 큐브에 페인트로 칠한다는 느낌과는 거리가 멀다고 볼 수 있습니다.
# Image # Material # Apply (+component)
( 7 / 13)
8.
도시를 만들자 -1
지금까지 우리가 배웠던 과정을 토대로 도시를 만들어봅시다.
Cube 여러 개를 생성해 위 사진처럼 도시처럼 보이게 만들고 게임에서 보일 카메라까지 멋스럽게 조정해봅시다.
참고로 카메라 배치는 ‘Main Camera’를 누른 상태에서 ‘Ctrl + Shift + F‘를 누르면 Scene View와 동일한
위치와 각도로 배치됩니다. 그리고 ‘Play’를 눌러 결과를 확인합니다.
( 8 / 13)
9.
도시를 만들자 -2
그러면 짠! 도시가 완성되었습니다..!
저런 퀄리티가 안 나오면 기분 탓입니다. 너무 좌절하진 마세요. (쉐이더 썼으니까)
한 번으로 끝내지 마시고 각도와 텍스쳐 빨로 멋스러운 도시를 만들어보세요.
사실 게임은 눈속임과 간지입니다.
( 9 / 13)
10.
자동차를 움직이자 -1
아까 알았던 Asset Store는 사실 지금 쓰려고 밑밥을 깔았습니다!
도시만 있으면 너무 허전하니 자동차와 스크립트의 조합으로 자동차를 움직이게 해봅시다.
어셋 스토어에서 무료 버전 자동차를 하나 다운받아 Project View에 넣어봅시다.
생성은 아래와 같이 Prefab에 있는 객체를 끌어다 만듭니다.
참고로 Prefab이란 것은 위 이미지에 보이는 요소들을 세트화 시켰다고 보시면 됩니다.
( 10 / 13)
11.
자동차를 움직이자 -2
Project View에서 우 클릭으로 C# Script를 하나 만들고 들어가 보면 위와 같은 내용이 뜨는데
소스코드 하나 하나 설명하면 끝이 없는 관계로 스킵하겠습니다.
아무튼 1프레임 단위로 실행되는 Update문에 위와 같은 코드를 적습니다.
그럼 저 자동차의 축대로 자동차는 이동하겠죠?
# 스크립트 편집기 (MonoBehaviour)
( 11 / 13)
12.
자동차를 움직이자 -3
방금 만든 스크립트를 자동차에 직접 드래그하거나, Hierarchy View에 있는 자동차 객체에 끌어다 넣습니다.
그리고 자동차가 보이게끔 카메라를 조정하고 Play를 눌러보면 자동차가 움직이는 것을 알 수 있습니다.
자동차 객체 안에 Component로 붙어있는 이 스크립트는 직접 이 객체에 명령을 내려 움직일 수 있는 것이죠.
# Add Component # 움직이는 자동차
( 12 / 13)
13.
자동차를 움직이자 -4
자동차 스크립트를 더 수정해봅시다. 옆으로 수평이동 하는 자동차는 세상에 존재하지 않습니다.
위와 같이 코드를 수정하시고 다시금 비교하면 W, S 키를 누르면 전방 벡터인 Z값만 수정하는 것을 알 수 있습니다.
그리고 아래 A, D 키를 누르면 transform의 Rotate를 수정하는데
그 말은 대략 위로 뻗어있는 Y축 벡터를 손으로 잡고 돌린다는 이야기와 같습니다.
이후 적용을 해보면 실제 자동차와 같이 움직이는 것을 볼 수 있습니다.
# Translate(위치)와 Rotate(회전) 관계
( 13 / 13)