FBX 파일을 이용한 에니메이션
마야, 3DMax 등에서 작업한 오브젝트, 에니메이션 데이터를 unity3d에서 사용하기 위한
절차...
1. 마야에서 오브젝트와 각 에니메이션별로 export 한다.
* export 하는 방법에 따라 차이가 있는데, 일단 unity3d의 샘플 프로젝트는 아래와
같은 이름 규칙을 사용.
오브젝트명.fbx
이와 같은 형태로 익스포트된 fbx를 사용하고 있다.
* 하나의 fbx에 각 동작별로 프레임을 나눠 한번에 로드하고, 각 프레임별 에니메이션을
지정할 수 있다. 단 이럴경우 각 동작의 시작-끝 프레임번호를 알아야 한다.
(unity3d에서 import 후 오브젝트의 prefab 객체에 Animations 컴포넌트가 있는데, Split Animations 를
체크하고, 각 프레임별 에니메이션을 지정할 수 있다.)
* 일단은 샘플에서 사용한 방법대로 진행.
아래는 마야에서 test 오브젝트를 fbx 포맷으로 export 한 파일들이다.
기본 메쉬는 피라미드이고, y축 회전과 x축 회전으로 에니메이션이 구성되어 있다.
(마야에서 export fbx format이 활성화되지 않으면 Window > Setting/Preferences > Plug-in Manager를
실행시켜 fbx와 관련된 플러그인과 object 플러그인을 로드해준다.)
2. unity3d에서 Project 패널에서 import 한다.
오브젝트와 animation, 매터리얼 폴더가 임포트 된다.
(마야의 경우 export 옵션에서 각 항목을 뺄수 있음)
3. 메인 오브젝트를 씬에 배치한다.
Inspector를 살펴보면, 기본적으로 Animation 컴포넌트가 포함되어 있고,
Animation이 idle 로 설정되어 있다.(초기 에니메이션 변경가능)
그리고, 해당 오브젝트와 관련있는 에니메이션이 배열로 설정되어 있다.
4. 실행해보면 Play Automatically 가 체크되어 있으므로 첫번째 에니메이션이
자동으로 실행된다.(한번만~)
에니메이션 세부설정은 해당 에니메이션 컴포넌트를 클릭한뒤
Inspector에서 수정하면 된다.
idle 에니메이션을 Loop로 변경해 봤다.
5. 스크립트에서 에니메이션 변경
일반적인 사용 예>
.루프모드 : animation.wrapMode = WrapMode.Loop;
.각 에니메이션 접근 : Animation roll = animation["roll"];
.에니메이션 교체
animation.CrossFade("idle");
animation.CrossFade("roll", 0.2f); // 0.2초내에 교체
.현재 재생 중인 에니메이션이 끝나고 교체
animation.CrossFadeQueued("idle", 0.3f, QueueMode.PlayNow );
'프로그래밍 > Unity' 카테고리의 다른 글
[Unity] 인스펙터에 UI 추가하기 (0) | 2011.06.15 |
---|---|
2D를 위한 Plane 생성 (0) | 2011.05.30 |
Physics.Raycast (0) | 2011.05.13 |
2D 게임을 위한 몇가지 (0) | 2011.05.09 |
터치 입력 (0) | 2011.04.04 |
스크립트에서 오브젝트/컴포넌트 접근 및 활성화 (0) | 2011.02.11 |
강체-RigidBody 기본속성 (0) | 2011.02.03 |
[Unity3D] 오브젝트 회전 - Quaternion (0) | 2011.02.01 |
캐릭터 컨트롤 하기 (4) | 2011.01.20 |
기본 클래스 정리 (0) | 2011.01.17 |