유니티 절차적 애니메이션 [Procedural animation]
직접 이해한 내용을 바탕으로 작성한 글이기에 틀린 내용이 있을 가능성이 있습니다.
절차적 애니메이션
기본적으로 사용하는 키 프레임 애니메이션은 정해진 시간동안 정해진 움직임을 수행한다.
그러니까 늘 같은 움직임만을 재생한다.
절차적 애니메이션이란 실시간으로 애니메이션의 움직임을 수정하는 방법이다. 예를들어 땅 지형에 맞게 발 위치가 조정된다거나, 캐릭터 머리가 어떤 사물을 바라보는 것이 있다.
기본적으로 유니티 툴 외에서 캐릭터 애니메이션을 작업한다 했을때 캐릭터는 Rigging
이라는 작업을 한다.
Rigging이란 캐릭터 모델에게 Bone(관절)
과 그에 따른 Constraint(제약조건)
을 설정해주는 것이다.
먼저 Bone
이란 흔한 동물의 관절과 같은 것으로 캐릭터의 몸에 관절과 같은 부위에 위치하며
Weight(가중치)
에 따라 자신에게 주어진 주변 신체 부위들을 움직이는 역할
을 한다.
흔히 다른 3D툴에서 Bone에 따른 주변 신체에 가중치를 주는 작업을 Weight Painting이라 한다.
그 다음 Constraint
란 Bone에게 어떠한 규칙을 부여하는 것이다.
예를 들어 현실에서의 우리는 어깨를 움직이면 어깨 밑의 팔들이 함께 움직인다.
그러니까 어깨 밑의 팔들은 어깨의 움직임을 따른다 다른 제약조건을 가지는 것이다.
유니티에서 제공하는 Animation Rigging은 이러한 Bone과 Constraint를 유니티에서도
설정할 수 있도록 도와준다. 절차적 애니메이션은 이러한 Animation Rigging 패키지를 통해 구현하면 매우 편하다.
절차적 애니메이션 적용 방법
우선은 패키지 매니저(Unity Registry)에서 Animation Rigging을 설치한다.
애니메이터가 있는 위치에 Rig Buiduer 컴포넌트를 추가해줌.
유니티에서 본이 시각적으로 보이고 선택하기 쉽게 하기 위해서 Bone Renderer
를 추가해줌.
그리고 Bone Renderer의 트랜스폼으로 본들을 넣어줌.
본들을 직접 수동으로 넣어줘도 되지만 그냥 애니메이터가 있는 오브젝트 선택 후
유니티 상단에 있는 도추창에서 Animation Rigging -> Bone Renderer Setup에서도 가능
이제 리그 빌더에 추가해줄 리그들을 생성할 차례이다.
위에서도 말했듯 리그는 Bone + Constraint 이다. 즉 해당되는 본들과 그 본들의 제약규칙을 정해주어야한다.
Rig를 추가하기 위해 먼저 애니메이터가 있는 게임 오브젝트의 자식으로 빈 오브젝트를 생성 후
Rig컴포넌트를 넣어준다.
그 다음 다시 이 오브젝트 밑으로 빈 오브젝트를 생성한다. 그리고 유니티에서 제공하는 Constraint 컴포넌트들 중 하나를 선택하여 넣는다.
나는 간단하게 multi-Aim Constraint를 넣어주었다. 이 기능은 머리가 바라보는 방향을 설정할 때 쓰기 좋다.
Constrained Object에 머리Bone을 넣어주었고 타겟으로 문을 넣어주었다.
이제 리그가 있는 게임오브젝트를 리그 빌더의 Layer로 드래그해주면 적용된다.
댓글남기기