유니티 아바타 애니메이션 - yuniti abata aenimeisyeon

[Unity][3D] 아바타가 없는 asset(캐릭터) 애니메이션 

- 

사용 버전 : 2017.3.1

활용 에셋 : unito

* 해당 포스트는 Unity 매뉴얼을 참고하며 작성하였습니다.

* Asset은 수업 자료로 받은 것을 사용했음 알려드립니다.

-

00. 준비

 Unito 에셋은 idle, jump부터 다양한 애니메이션이 존재합니다.

그렇지만 unito@01_idle 같은 prefab을 그대로 scene에 띄우면 적용된 애니메이션만 반복적으로 움직입니다.

unito prefab을 넣으면 그대로 넣게 되면 멈춘채로 아무 동작도 하지 않습니다.

그럼 animator를 활용해 unito를 움직이게 해보자!

animator(이하 애니메이터)에 들어가보면 Layer(이하 레이어)가 있습니다.

그렇지만 비었다고 뜨기 때문에 만들어줘야만 합니다!

우클릭 -> 새로 만들기에서 레이어를 생성해줍니다.

그러면 Base Layer가 짠!  

사용할 애니메이션들을 넣어주고, 움직임에 따라 연결합니다.

Script에서 사용할 Parameter를 추가해줍니다.

01. 퍼펫 만들기

  ▶▶▶  

unito@01_Idle->Inspector -> Rig에서 위처럼 설정 후,

Apply를 클릭하면 퍼펫이 생성됩니다. (사람처럼 생긴 것) 

   

Inspector -> Animation에 들어가 LoopTime에 체크해줍니다. (꼭!)

02. 적용하기

unito Inspector로 넘어갑니다.

    

Animator -> Controller, Avatar에 각각 생성했던 레이어와 페펏을 넣어줍니다.

그런 다음 Script를 추가합니다. (Script는 마지막에 올려두겠습니다.)

03. 완성!

이제 실행하면 일반 unito prefab도 잘 움직입니다. (^^)!

-

기본 자세가 Idle 애니메이션이고,

방향키를 누르면 Move 애니메이션을

실행하는 구조입니다.

 < Script 참고 >

VRChat의 아바타들은 VRC에 맞는 전용 애니메이션 파일이 필요합니다.

그러므로 SDK에 기본적으로 존재하는 애니메이션 클립 파일을 가져와 포즈를 만드는 편이 좀 더 편합니다.

(SDK 가 임포트된 본인의 프로젝트 이름)\Assets\VRCSDK\Examples3\Animation\ProxyAnim

이 경로로 가면 여러가지 애니메이션 클립이 있는데, VRCaht 내에서 캐릭터를 조작하면 볼 수 있는

기본적인 애니메이션들이 존재합니다.

우리는 이 클립을 사용해서 아바타의 기본 포즈를 변형해 보려고 합니다.

(필자는 C를 누르면 나오는 앉기 포즈를 바꾸고자 합니다)

원본 파일은 계속해서 남겨두는것이 좋기 때문에, 기본 앉기 애니메이션을 복사해줍니다.

단축키 Ctrl + D 를 눌러서 복사 해 줄 수도 있습니다.

(SDK 가 임포트된 본인의 프로젝트 이름)\Assets\VRCSDK\Examples3\Animation\Controllers

안의 vrc_AvatarV3LocomotionLayer라는 AnimationController를 열어보면 Crouching이라는 이름의 State가 존재합니다.

해당 State 를 더블클릭해서 들어가보면, BlendTrees 라는 타입의 애니메이션이 있는것을 확인 할 수 있습니다.

Motion 탭의 애니메이션 클립들을 클릭하면, 어떤 애니메이션이 들어가 작동하는지도 확인 할 수 있습니다.

Asset Lavels 창을 확대해서, 해당 포즈가 어떤 포즈인지도 확인 해 볼 수 있습니다.

(SDK 가 임포트된 본인의 프로젝트 이름)\Assets\VRCSDK\Examples3\Animation\BlendTrees

안에 해당 앉기 모션의 BlendTree 파일도 직접 확인 할 수 있습니다.

가능하면 원본 파일을 변형하지 말고, 복사해서 본인의 폴더에 따로 분류해 줍시다.

본래라면 LocomotionLayer Animation Controller는 Animator 탭에 들어가면 안됩니다.

VRC Avatar Descriptor에 Bese에 들어가고 Animator 탭의 Controller 는 None으로 비워줘야 합니다.

하지만 포즈를 만들고 유니티 내부에서 포즈를 확인해 보기 위하여 해당 Controller에 컨트롤러를 넣어주고 난 뒤,

Animator 창에서 Crouching State 의 BleendTree를 복사해준 본인의 BleendTree로 바꿔줍니다.

이후 Window 메뉴에서 Animation 탭을 열어 포즈를 바꾸고자 하는 캐릭터를 Hierachy에서 선택 해 준 뒤,

Animation 탭에서 해당 아바타에 적용된 애니메이션들이 보이는지 확인합니다.

Hierachy에서 캐릭터를 선택했는데도 Animation 탭에 뜨는것이 없다면,

선택한 아바타의 Inspector 창 Animator 탭에 Controller가 None인지 확인해 줍니다.

밑줄 친 곳을 클릭해 애니메이션을 바꾸고 타임라인을 마우스로 드래그 해주면 해당 애니메이션의 모션이

잘 작동하는지 확인 할 수 있습니다.

이는 인간형인 캐릭터에서 확인 할 수 있고, 아바타가 Humanoid 상태일때 확인 해 줄 수 있습니다.

만약 이럼에도 애니메이션이 변화가 없다면 원본 FBX 파일이 Humanoid 가 아니거나,

프리팹의 Animator의 아바타 항목이 누락됐을 수 있습니다.

원본 FBX 파일의 Rig 탭에서 Animation Type이 Humanoid 인지 확인하고,

아바타 프리팹에서 Animator의 Avatar가 원본 FBX 파일의 아바타인지 확인해 주어야 합니다.

다시 바꾸고자 하는 아바타 프리팹에 들어가, 해당 Animator Controller 의 Crouching State 의 기본 앉기 모션을

처음에 복사했던 Animation 파일을 넣어줍니다.

이러면 Animation 탭에서 본인이 넣었던 애니메이션 파일의 이름이 뜹니다.

이 애니메이션 파일의 이름을 클릭 한 뒤에, 타임라인 드래그로 애니메이션이 작동하는지 다시한번 확인합니다.

이후 Animation 탭에서 REC 키를 누르면 "녹화중" 이라는 표시로 타임라인이 빨갛게 변합니다.

Animation 탭에서 애니메이션 항목 마다 표시한 곳을 클릭하고, 좌 우로 드래그하면 해당 애니메이션의 수치가 변하면서 캐릭터의 포즈가 바뀝니다.

이를 이용해 각 항목마다 어떤 부위가 움직이는지 확인하고, 본인만의 포즈를 만들어 주면 됩니다.

이때 주의해야 할 점은, Animation 키가 1프레임이 아닌 2프레임이나 3프레임에 찍히고 있지 않는지 확인합니다.

2프레임이나 3프레임등에 찍혀도 사실상 큰 문제는 없지만, 나중에 이 애니메이션 클립을 다른 아바타에 넣을 때

문제가 생길수도 있기 때문에 1프레임에만 해당 키를 삽입하는것을 추천합니다.

가능하면 예쁜 포즈의 레퍼런스를 보면서 잡는게 좋습니다. 

이렇게 아저씨같은 포즈 말고...

포즈를 다 만드셨다면, Animator 항목의 Controller 항목은 None으로 비우고, 

Base 탭에 컨트롤러가 작업한 컨트롤러가 제대로 들어가 있는지 확인해줍니다.

이후 SDK 툴로 해당 아바타를 Build 한 뒤에, 인게임에서 포즈가 잘 적용되어 있는지를 확인합니다.

인게임 내에서 잘 출력이 된다면 포즈 바꾸기 성공입니다.

이 외에도 Locomotion 애니메이션 컨트롤러에는 각 상태의 State를 바꿔줄 수 있습니다.

해당 State의 BlendTree 안의 애니메이션 클립들을 확인해 복사하여 위와같은 작업을 반복해주면

자신만의 애니메이션 포즈를 만들 수 있습니다.

Toplist

최신 우편물

태그