애니메이션에 블렌드 트리 대 상태 머신을 사용하는 경우


13

경험이 풍부한 게임 개발자는 Unity에서 3D 애니메이션 캐릭터로 첫 번째 게임을 만드는 데 익숙하며 블렌드 트리와 애니메이션 상태 머신을 언제 사용할지 고민하고 있습니다. 나는 개념적으로는 이해하지만 Unity와 다른 소스 모두에서 많은 튜토리얼에서 캐릭터 애니메이션에 사용되는 블렌드 트리와 애니메이션 상태 머신을 모두 보았습니다. 언제 / 왜 다른 사람보다 더 나은지 잘 모르겠습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.

내 게임은 3 인칭 액션 롤 플레잉 알라 와우 또는 KOTOR 또는 매스 이펙트입니다 (내가 아는 다른 시스템이지만 관점과 전투 스타일은 다소 높은 수준입니다). 공격, 블록, 페인, 죽음, 걷기, 달리기, 점프, 슈팅 등을위한 수많은 애니메이션이 있지만 자연스럽게 함께 시퀀스하는 방법에 대해서는 잘 모르겠습니다.

캐릭터 모션을 유동적으로 유지하려고 할 때 나에게 의미가있는 운동에 사용되는 블렌드 트리를 보았지만 그 블렌드 트리에서 공격 상태로 이동하는 방법을 이해하지 못했습니다. 기타). 모션 상태에서 블렌드 트리를 만들어 공격 / 사망 / 닷지 상태로 만들어야합니까? 상태 머신 만 사용하여 더 많은 제어권을 가지고 있습니까? 매우 일반적인 트랜지션 팽창으로 인해 상태 머신이 약간 조심스럽고 블렌딩없이 잔잔한 애니메이션 시퀀싱 가능성이 더 크다고 생각합니다.

Unity 캐릭터 컨트롤러를 사용하고 자체 로직 스크립트를 작성하여 구동 할 계획입니다. AI의 경우 내장 탐색 메쉬 에이전트를 사용합니다. 캐릭터 컨트롤러 애니메이션은 AI 애니메이션과 다르게 처리됩니까?

모든 통찰력은 환영 이상입니다!

감사

답변:


21

나는 Unity에서 Mecanim과 꽤 일했고, 그것이 어떻게 작동하는지 잘 알고 있다고 생각합니다.

당신이 말했듯이, 혼합 나무는 거의 확실히 운동을하는 길입니다. 블렌드 트리는 일반적으로 애니메이션을 연속적으로 블렌딩하여 최종 출력을 만들려는 경우에 사용됩니다. 플레이어에게 아바타의 속도를 제어 할 수있는 것처럼.

모든 단일 조치 는 개별 상태로 유지하는 것이 좋으며 전환 할 수 있습니다. 게임의 강렬함에 따라 다른 애니메이션이 끝날 때까지 기다리지 않고 Any State 를 출발점으로 사용하여 빠르게 점프, 공격 등을 할 수 있습니다.

블렌드 트리에서 실행중인 블렌딩의 핵심은 전환 을 사용하는 것입니다 . Unity에서 전환을 미리 보면서 신중하게 계획하고 조정하는 것만으로도 마술처럼 보이지 않습니다. 많은 작업이 성공적인 전환을위한 토대를 마련하기 위해 애니메이터에 의존합니다.

전환을 할 때 명심해야 할 것은 균형이 좋아 보이고 플레이어에게 예상되는 피드백을주는 것입니다. 빠른 전환은 게임 느낌에 가장 적합한 반면 느린 전환은 더 좋아 보이지만 플레이어는 컨트롤러를 버리고 싶어 할 수 있습니다.

아래는 화살표가 전환이 진행되는 방식을 나타내는 다소 간단한 설정입니다. 전환은 입력 조건을 기반으로하며 애니메이션이 완료되거나 주어진 조건이 충족되면 종료됩니다. 이것은 또한 하나의 상태가 다른 조건에 따라 다양한 다른 상태로 갈 수 있음을 의미합니다.

상태 머신

아마도 이것이 "스파게티"의 큰 더미가 될 수 있으며, 이러한 혼란을 피하는 방법 은 위의 이미지에 포함 된 모든 상태 를 이용하는 것 입니다.

모든 국가는 주어진 시간에서 아무것도로 전환 할 수 있다는 이점이있다. 전환은 여전히 ​​애니메이션을 혼합하는 데 사용할 수 있지만 어떻게 보일지에 대해 어둠 속에서 조금 더 일하고 있습니다. 설정하는 동안 다양한 상태에서 미리보기가 가능합니다.

언급하지 않은 것은 Layers로 캐릭터가 상처를 입히거나 상체를 재정 의하여 다른 무기를 운반하는 동안 모든 무기의 다리에 동일한 애니메이션을 사용하는 데 매우 유용합니다. 예를 들어 레이어 를 혼합하고 점진적으로 조정할 수 있으므로 캐릭터가 다소 상처를 입을 수 있습니다. 다른 예는 다른 캐릭터를 그대로 유지하면서 캐릭터 팔을 공중으로 들어 올리는 것입니다 (캐릭터가 항복 한 경우 등).

그러나 견고한 애니메이션 컨트롤러를 설정하는 것은 1 시간 작업이 아닙니다. 약간의 계획이 필요하며 점프, 유휴 및 워킹 / 런 블렌드 트리라는 두 가지 공격으로 간단한 상태 머신을 설정하는 것이 좋습니다. 또한 찾을 수 있습니다 동작 제어 또는 스크립트와 상호 작용하기위한 매우 유용한 유니티 5에서 소개합니다.

AI가 플레이어 컨트롤러와 동일한 방식으로 작동한다는 것을 99 % 확신합니다. 애니메이션이 상태에서 상태로 이동하는 방식을 제어하는 ​​스크립트를 통해 매개 변수가 변경 되었기 때문입니다.

요약

  • 운동을위한 블렌드 트리 .
  • 미국 하나의 정의 된 작업 또는 단순 루프 상태에 대한.
  • 점프와 같은 일련의 상태 를 구성하기위한 하위 상태 .
  • 다른 상태 간의 블렌딩 / 전환을 위한 전환 (상태는 블렌드 트리 일 수도 있음).
  • 기본 애니메이션을 재정의하거나 추가하기위한 레이어 입니다.

블렌드 트리를 확장 상태로 생각하면 매개 변수 값을 기반으로 작동합니다.

약간의 긴 충격이 있지만 주제에 약간의 빛이 비추기를 바랍니다. :)


멋진 설명에 감사드립니다. 이것은 이제 의미가 있습니다
weichsem

환상적인, 도와 드리겠습니다 :)
Morten Andersen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.