애니메이터

톤즈 오브 유니티 에셋쯔 3. Adventure Creator 본문

Game Engine/Unity3D

톤즈 오브 유니티 에셋쯔 3. Adventure Creator

욤마핫 2022. 6. 2. 23:32
1. Adventure Creator
  • Adventure Creator 는 말 그대로 어드벤쳐 게임을 쉽게 만들 수 있게 해주는 유니티 Add-on 이라 할 수 있다.
  • Cutscene 기능이 강력하기 때문에 이것을 활용해서 동영상을 만드는 방법을 알아보겠다.
  • Adventure Creator를 에셋스토어에서 결재 해서 설치를 한다.
  • 1 Computer only 이지만 만약에 다른 컴퓨터에서도 시험적으로 써보고 싶다면 프로젝트를 열어서 Asset단을 Package로 추출 후 다른 컴퓨터에서 Import 시켜서 사용하면 된다.
 
  • 인스톨을 하게 되면 풀다운 메뉴에 다음과 같은 메뉴가 추가 된다.
  • 간혹 메뉴가 사라지는 경우가 있는데, 프로젝트에 포함된 스크립트 외에 추가로 넣은 스크립트 등에서 오류가 생기면 메뉴가 사라진다. 해당 스크립트 오류를 수정하거나 삭제하고 유니티를 껐다가 키면 다시 나타난다.
 

 
2. Adventure Creator 로 동영상 제작
동영상 제작을 할때 1명으로 진행을 하지는 않을 것이다.
여러명이 동시에 작업을 하게 될 것인데 여기에는 Adventure Creator와 Unity를 관리할 수 있는 관리자 1명이 필요하다.
 
  • 관리자의 역할
    1. Project 세팅
    2. Scene 세팅
    3. 대사 작업
    4. 폴더 관리
    5. Prefab 관리
  • 작업자의 역할
    1. 리소스 제작
    2. Scene 제작
 
 
SVN 으로 각 작업자가 알아서 Commit, Update를 해도 되고 작업자가 리소를 Package로 뽑아서 관리자가 합쳐도 된다.
SVN 으로 진행은 Scene 제작에서 어떻게 하는가를 살펴보고 Package 작업은 Graphic Resources 제작에서 작업 방식을 알아보겠다.
 

 
1. Project 세팅
처음 시작하게된다면 Adventure Creator(이후 AC)로 처음 시작하기 위해서는 다음의 Wizard 메뉴를 통해서 Project를 시작한다.
이후에 나오는 7가지 과정을 거쳐서 기본 세팅을 마무리한다.
나오는 내용을 잘 살펴 보면서 하려고 하는 프로젝트 세팅에 맞게(3D or 2D 등) 빠르게 Next를 눌러 나가서 완료를 눌러 보면 아래 그림과 같이 Project 창에 기본 리소스들이 올라올 것이다.
이 중에서 2D Demo와 Demo 폴더는 AC 에서 제공하는 샘플 파일이며 각각 2D 와 3D 로 만든 AC Game 이 들어 있다. AC를 공부할때 유용하지만 지워도 상관 없다.
 
Scene을 만들려면 Game Editor를 실행시켜줘야 한다.
 
 
그러면 아래와 같이 AC Game Editor 창이 생길것이다.
처음 시작하기 위해서 Scene 탭에서 With folders를 클릭하면 Hierachy 창에 Folder들이 자동으로 생성되며, AC Game Editor 상에서 앞으로 작업에 쓰게 될 Prefab 항목들이 나타날 것이다.
Without Folder를 클릭하면 폴더 구조 없이 시작한다.
 
각각의 8개의 탭에는 각각의 manager 파일이 존재 하고 이 Manager 파일은 Project 단위로 관리 되기 때문에 Scene별로 따로 설정을 할 수는 없다.
Managers 파일들은 프로젝트의 Managers 폴더프로젝트 이름_탭이름Manager 파일로 존재한다.
동영상 만들기에서는 게임 기능이 필요 없기 때문에 Scene, Speech, Menu 정도만 살펴 보겠다.
 
 
 
 

 
2. Scene 세팅
 
  • Pathfinding Method : NPC 들이 맵상을 돌아 다닐때 또는 특정 위치로 이동시에 Unity Navi 시스템을 쓸 것인지, Collision Check 만 할것인지 선택한다. 동영상에서는 특정 영역에서 NPC 들이 무작정 돌아 다닐 필요는 없으므로 Collision 으로 선택한다.
  • Default Camera : Cutscene 시작할때 첫 Camera 를 선택한다.
  • On Start : Cutscene 시작할때 첫 Cutscene 를 선택한다.
  • Scene Prefabs : Scene 을 구성하기 위한 Prefab들이다.
 
 

 
2.1 배경 준비

Graphic Resource의 관리 측면에서 배경은 Package로 등록하여 사용하고자 하였다.
Character와는 달리 소품들이 많고 Unity에서의 후작업(Light map)도 있기 때문에 FBX와 텍스쳐를 넘기기만 해서는 관리자쪽의 일이 너무 많아지기 때문이다.
BG 의 폴더 구조는 아래와 같이 사용하였다. 꼭 이렇게 사용하라는것이 아니라 모든 BG 작업자들이 같은 구조를 사용하는 것이 사용상에 편의를 가져다 준다.
 
LightMap : Unity에서 LightMap을 구운후 LightMap을 저장
Materials : BG에 쓰인 Material과 Texture를 저장
mesh : 3dsMax 에서 만든 FBX를 저장
prefab : BG 구성을 완료후 전체를 하나의 Prefab으로 등록
scene : BG 를 Unity 에서 구성 후 LightMap을 굽고, Package를 뽑을때 해당 Scene을 오른 클릭하여 Export Package로 추출한다.
 
참고로써 회사에서 작업된 Cafe BG 데이터 이다.
3dsMax 에서 움직이지 않아도 되는 Object 과 수시로 움직이는 Object(Props)를 구분하여 작업을 한다.
컵이나 음식쟁반등 스토리 진행에서 수시로 위치가 변할 필요가 있는 요소들은 모두 별개의 FBX로 뽑는다.
 
2.1.1 LightMap
라이트맵은 BG 에 따라서 적당하게 배분하고 1024 by 1024가 한장씩 생기기 때문에 너무 많이 만들지 않도록 한다.
BG 작업시에 Cafe, Office 등 장소별로 다르게 작업하게 될것인데 동영상을 만들다 보면 한 Scene에 두 장소 이상이 필요한 경우가 있을 수 있다.
이럴 경우 배경의 LightMap이 제대로 들어가지 않게 된다.
이것은 LightMap은 파일 이름에 상관없이 Index Number로 구분을 하기 때문에 Lightmapping 창을 띄워서 Array SizeIndex Number를 수정해야 하며 각각의 Object들을 골라서 바뀐 Index Number로 고쳐 주어야 한다.
Lightmapping-object 세팅
 
 

 
2.2 캐릭터 준비

2.2.1 블렌드 쉐입
Facial 애니메이션에서는 블렌드 쉐입을 활용할 것이다.
3dsMax에서는 Morpher 라고 불린다.
얼굴 부분을 따로 떼어서 필요한 갯수 만큼 얼굴 표정을 만들어 준다. 작업의 편의를 위해서는 너무 많이 만들지 않기로 한다.
등록하는 순서대로 Index 번호가 매겨지므로 순서에 주의한다.
AC에서 기본으로 설정되어 있는 Phonems를 따라 가도 되고 프로젝트 품질을 위해서 추가하거나 삭제할 수 있는데 현 작업에서는 하나가 더 추가 되었다.
Phonems는 외부 음성 인식 프로그램으로 돌렸을때 대사를 분석해서 음소를 분류해 준다. 외부 프로그램은 여러가지가 지원되며 여기서는 Sapi 를 사용하였다.
참고. Sapi로 돌려서 나온 음소 파일
 
 
각각 음소 모양을 Phonems, 표정을 Expression Group으로 나누어 관리한다.
 
2.2.2 애니메이션 세팅
AC는 메카님, Legacy 둘다 지원한다. 여기서는 Legacy로 진행한다.
3dsMax 에서 작업 후 Legacy 네이밍에 맞춰서 FBX로 Unity에 넣어준다.
AC에서는 캐릭터가 다르더라도 강제로 애니메이션을 넣어줄 수 있으나 체형은 넣어주는 애니메이션 캐릭터 체형으로 바뀐다.
 
 
2.2.3 캐릭터 Prefab 생성
FBX를 Scene 에 올려두고 Add Componet로 아래 그림의 스크립트들을 추가해 준다.
      • Capsule Collider : 충돌체크
      • Rigidbody : 리지드 바디
      • NPC : AC 에서 NPC 임을 알게 해줌, 세팅에 관해서는 아래에서 따로 살펴보자.
      • Audio Source : 대사를 말하려면 Audio 설정이 있어야 함
      • Constant ID : Asset으로 묶어서 내보낼때 다른 NPC와 구별하기 위한 인덱스 번호 생성자
 
Character 에 블렌드 쉐입을 적용하기 위해서 얼굴 mesh를 선택하고 Shapeable 스크립트를 Add Componenet로 추가해 준다.
      • Create new shape group : 기본 Phoneme 이 외의 익프레션이나 다른 블렌드 쉐입 그룹을 추가한다.
      • Create new shape key : 각 그룹 안에서 몇개의 블렌드 쉐입을 쓸 것인지 설정하고 각각의 mesh를 등록한다.
      • BlendShape index : 3dsMax의 Morhper에 등록된 순서대로 "0" 부터 차례대로 적용한다.
      • Emotion Group 에서는 첫번째 Blendshape으로 등록하더라도 Phoneme 에서 쓴 이후 번호 부터 적용한다.
 
NPC 세팅 및 Blendshape 세팅이 끝났으면 Prefab 폴더에 NPC를 등록하고 Scene 에서는 삭제한다.
 
2.4 Scene 배치
2.1 에서 준비한 배경 Package를 Import 하여 필요한 배경 Prefab을 적당한 위치에 배치 하고 그 Scene 에서 acting할 2.2에서 준비된 캐릭터들을 배치한다.
리소스 Import 시에 Camera나 Light가 따라 왔다면 지워준다. AC에서 Camera 설치시 오류 발생을 유발한다.
Light도 적당한 값으로 설치 한다.
 
이것으로 동영상을 만들 그래픽 리소스는 준비가 되었다.
 
2.5 NPC 설정
      • Standard 3D Animation : 기본 세팅, 걷거나 서있을때 자동으로 나오는 동작
      • Bone transforms : 게임에서 상하 분리, 손 분리 동작 처럼 해당 Bone을 등록해 놓으면 분리된 애니메이션이 플레이 가능
      • Movement settings : 걷는 속도, 멈추는 속도, 도는 속도를 설정
      • Audio clips: 뛰거나 걸을때 걸음소리를 자동으로 나오게 해줌, Sound Child를 꼭 등록해 놓아야 함 Action list의 Sound와 별개로 동작됨
 

 
3. Speech 세팅
3.1. Lip synching
      • Lip synching : 음소 추출은 앞에서 언급한것과 같이 외부 프로그램을 사용한다. 여러 프로그램을 지원하고 있으며 여기서는 Sapi를 사용한다.
      • Perform lipsync on : Portrait And Game Object : 초상화와 Game object에서 동시에 립싱크를 지원한다.
      • Process speed : 립싱크가 대사 속도 대비 얼마나 빠르거나 느릴것 인가를 결정한다.
 
3.2. Game text
      • Gather text : 프로젝트 전체에 들어가 있는 대사를 스캔하여 Build 순서대로 Index 넘버를 부여한다.
      • Reset text : 위의 Indexing 작업을 리셋한다.
 
Lipsync를 하기 위해서는 지켜야할 규칙이 몇가지 있다.
      1. Gather text로 부여 받은 파일 이름으로 각각의사운드파일 및 립싱크 파일의 이름을 바꾼다. "캐릭터이름IndexNumber"
      2. 사운드파일 및 립싱크 파일을 Resources 폴더 아래에 Lipsync, Speech 폴더에 넣어준다.
 
3.3 대사 선작업
AC 로 팀작업을 할 경우에 대사는 선작업으로 진행되어야 한다.
각각의 작업자가 Gather text를 하게 되면 하나의 Index를 각각의 작업자 Scene에서 쓰게 되어 SVN에 커밋을 하게 되면 대사가 바뀌어 버리는 결과가 나오기 때문이다.
그러므로, Gather text는 관리자만! 사용하여야 한다.
그래서 다음과 같은 프로세서로 진행한다.
 
 

 
4. Scene 제작
4.1 Action List
동영상 제작의 본 작업이라고 할 수 있다.
아래 AC Game Editor에서 Prefab들 중 Cutscene을 추가해 주자.
Hierachy 창에서 확인해 보면 새로운 Cutscene이 들어와 있는 것을 확인할 수 있고 해당 Prefab의 오른쪽 아이콘을 클릭! 하게 되면 Action List 창이 열린다.
Action List 창을 열면 처음에는 Start 만 있을 것이다. 여기에서 그래픽 디자이너에게 익숙한 Node 구조로 Cutscene 작업을 진행할 수 있다.
Action Type 에서 필요한 작업을 설정을 하고 진행해 나가면 된다. 동영상에 필요한 Action Type을 살펴보자.
    1. Camera : 카메라 Fade In, Out 등의 카메라 연출에 대한 모든 것을 할 수 있음.
    2. Character : 캐릭터들의 Animation, 이동, Look at 등에 대한 연출을 제어 함
    3. Dialogue : 대사 처리
    4. Engine : Timing을 맞추거나 할 때 사용
    5. Object : 씬에 들어가 있는 모든 Obejct들을 제어 함, 캐릭터 제어도 가능, 특히 캐릭터의 표정을 컨트롤 하는 Blend shape 컨트롤이 여기에 있음.
    6. Sound : BGM 이나 효과음등의 제어
  1. 나머지 Node 는 동영상 작업에서는 쓰이지 않는다.
  2. Tip. AC 의 Action list 에는 버그가 있는데 이미 설치한 Node를 지우는 경우 작업한 Node가 꼬이는 경우가 종종 발생한다. 개발자로 부터 해당 버그에 대한 수정 스크립트를 받았지만 빈도수가 줄었을뿐 해당 버그는 아직 완전히 없어지지는 않았다. 따라서 Node 구조속에 있는 Node는 지우지 않는다.
    1. 쉽게 새로 연결할 수 있도록 순서를 지켜 Node를 위치 시킨다.
    2. 새로 막 생성한 Node를 지우는 것은 괜찮다.
 
이제, 동영상을 만들어 봅시다.
 
Scene이 완성이 되었다면 SVN에 Commit을 하는데 Scene폴더에서 Commit을 한다. 참고로 The company 작업 폴더 구조를 보자.
여기서 Scenes 폴더에 오른클릭을 하고 나오는 메뉴에서 Commit을 선택한다.
이렇게 해서 하나의 Scene이 완성 될 수 있다.