3ds Max 8에서 모델링, 매핑, 리깅한 뒤 달리는 애니메이션을 만든 스냅샷.

3ds Max 8으로 '게임 3D 그까짓 거 한 달이면 나도 만든다' 2등신 캐릭터 몸 모델링 따라하기.

* Viewport 배경에 그림 보이게 하기:
Alt-B 클릭(혹은 메뉴-Views-Viewport Background)해 Viewport Background 창 띄우고 Background Sources-Files 선택해 불러들일 이미지 선택하고 Aspect Ratio-Match Bitmap, Lock Zoom/Pan선택.
그림이 뚜렷이 보이지 않을 경우 Customize-Preference 창 띄우고 Viewports 탭의 Display Drivers-Configure Driver 클릭, Configure Direct3D창에서 Appearance Preferences-Enable Antialiased Lines in Wireframe Views 체크, Background Texture Size: 1024, Download Texture Size: 512로 각각 변경, Match Bitmap Size as Closely as Possible 각각 체크. 이렇게 하고 프로그램을 재시작하니 과연 이미지가 뚜렷이 보인다.

* 몸통 만들기: Front View에서 Sphere 생성, Segments: 12로 설정.
- F3키로 Shade/Wirerfame간 전환, F4키로 도형색위에 Wireframe 보이고 안보이기 토글.
- Angle Snap Toggle 버튼을 클릭하면 회전시 5도씩 돌아간다.
스피어를 y축으로 90도 돌리고 Editable Poly로 전환.
Front화면에서 Vertex 움직이고 스케일 조정하여 이미지 모양에 맞추기.
- Editable Poly-Edge-Slice Plane을 누른 뒤 뜨는 기즈모를 이동시킨 뒤 Slice를 누르면 그 자리를 잘라내 새로운 Edge들을 만든다.
몸통을 선택, Shift+오른쪽 이동으로 Instance 복사본을 만든 뒤 이미지의 옆 모습에 갖다 놓고 옆모습 따라 vertex 이동, Cut으로 꼬리 만들고 몸통 반쪽 제거.

* 다리 만들기: Top View에서 Cylinder 생성, Sides: 8로 설정.
* 팔 만들기: Left View에서 Cylinder 생성, Sides: 8로 설정.
* 머리 만들기: Front View에서 Sphere 생성, Segments: 16으로 설정.

* 모델링 완료 뒤 후처리:
- 가운데 vertex 모두 선택하여 x: 0으로 만들기.
- 모델 이동시켜 몸통 가운데 선과 Front View 그리드 수직선과 일치시키기.
- 모델의 발 위치를 Front View 그리드 수평선과 일치 시키기.
- 모델 윗쪽 허벅지 중간을 Left View 그리드 수직선과 일치 시키기.
- Hierarchy 패널에서 Affect Pivot Only 누른 뒤 Move 값 0,0,0으로 설정.
- 캐릭터 크기 비교용 박스 만들어 그 크기에 맞춰 모델 스케일 조절하기.
(3ds Max에서의 100cm, 즉 1m가 Unity 5에서의 Scale 1과 동일.)
- Utility 패널에서 Reset XForm 클릭, Reset Selected 클릭. (Scale 값을 100/100/100 으로, Move/Rotate값을 0/0/0 으로 만들어 준다)
Modify 패널로 이동, XForm에 마우스 우클릭. Collapse To 선택.
(이렇게 하여 Move/Rotate 값: 0/0/0, Scale 값: 100/100/100으로 해줘야 게임에 넣었을 때 위치, 방향, 크기가 동일하게 출력된다고 한다)

* 매핑하기:
- 모델에 Unwrap UVW 적용, Parameters-Edit 클릭, Edit UVWs 창 띄우기.
- UV-CheckerPattern(Checker)를 다시 선택하면 모델링 오브젝트에 체크가 적용되어 보인다.
- Edit UVWs 창에서 Selection Modes-Face Sub Object Mode 선택하고 face 한 개를 선택한 뒤 Modyfy패널의 Exp. Face Sel To Seams를 클릭하면 선택한 폴리곤의 Element가 전부 선택된다.
- 선택 뒤 Map Parameters-Planar를 클릭, 활성화 시킨 뒤 Align X나 Y, Z 등 원하는 방향을 선택하면 그 방향으로 펼쳐진다. Best Align이 대개의 경우 가장 적절한 형태로 펴지곤 한다.
- Quick Peel을 누르면 최대한 Checker Pattern이 사각형이 되게 펼쳐진다고 하나 이건 Max 8엔 없는 기능인듯.
있는 기능들(Stitch Selected-선택한 조각들의 잘라진 부분 연결하기, Relax Dialog-뭉친 UV 펴기, Pack UVs-편 UV들을 사각형 안에 들어가도록 자동으로 배치하기)만으로 매핑을 마무리 짓다.

* 리깅 & 애니메이션:
- 바이패드 생성하여 모델링의 위치에 맞게 배치하고 스킨으로 바이패드 뼈들 불러 들인 뒤 중심부에서 모두 Vertex들을 선택한 뒤 하위로 내려가며 Vertext들이 따라다닐 뼈들을 변경해 주는 방식으로 리깅 적용.

- Idle, 달리기, 옆으로 뛰기 애니메이션 만들기.

16/9/22 목


유니티 5에 불러들여 찍은 스냅샷.

* Unity 5로 불러들여 테스팅을 해보는 중인데 Rig를 Humanoid로 바꾸면 팔의 방향의 묘하게 꼬인다. 몸통은 누웠는데 팔만 서있을 때의 위치와 각도.

* Unity 5에서 불러들인 캐릭터 이동시키기 등 테스트.
3ds Max에서 export한 simple2dManAni2.fbx 불러들여 Rig-Animation Type: Generic으로 설정하고(Humanoid로 설정하니 애니메이션 중 팔의 위치가 제대로 작동되지않아 Generic으로 하다) Animations 패널에서 Clips의 + 버튼 눌러 새 클립 만든 뒤 Clamp Range 버튼을 누르고 각각 시작점과 끝점을 설정하여 Idle, Run, Jump 3개의 애니메이션 파일을 생성하다.

- Hierarchy에 빈 게임오브젝트 생성, 'YellowMan'이라 명명, 불러들인 fbx 파일 자식으로 끌어넣기.
- 카메라가 캐릭터를 따라다니도록 Main Camera도 자식으로 집어넣고 화면 구도 잡기.
- 자식으로 빈 게임오브젝트 생성, 'BulletSpawnPoint'라 명명하고 얼굴 앞 즈음으로 위치 잡기.

- Player에 Capsule Collider 2개(Is Trigger를 체크 안한 것은 지면과의 접지용, Is Trigger를 체크 한 것은 적 총알등과의 충돌 체크용), Rigidbody(Freeze Rotation: x/y/z 모두 체크) 추가. YellowManCtrl.cs(캐릭터 조종/총알 발사 스크립트) 추가.

- 새 AnimatorController 생성, 'YellowMan'이라 명명하고 YellowMan-simple2dManAni2의 Animator-Controller에 집어넣기.
Animator 창에서 Idle, Run, Jump 상태 만들고 상태들의 Motion에 해당 애니메이션 파일 적용한 뒤 각각 트랜지션도 생성. 변수는 모두 Trigger 형으로 isIdle, isRunning, isJumping 3개를 만들어 상태 전환 조건용으로 사용.

* Unity 5에서 불러들인 캐릭터 이동, 점프시키기, 총알 발사하기, 애니메이션 적용시키기까지 성공. 한데 점프 애니메이션이 제대로 구현되지 않는다. 그리고 애니메이션을 느리게 혹은 빨리 실행시키는 방법은 없는지 궁금.