도보주기 애니메이션에 대한 '모션'애니메이션을 만드는 일반적인 방법


13

방금 블렌더 아티스트 포럼에이 글을 올렸습니다. 더 많은 게임 개발 독자들로부터 더 나은 응답을 얻을 수 있다는 것을 깨달았습니다. 그것은 올바른 이유입니다 :)

저는 오우거를 사용하여 게임 프로젝트를 위해 걷는 캐릭터를 애니메이션하려고하는 프로그래머입니다. 블렌더에서 매우 간단한 보행주기를 만들어 오우거로 내보냈습니다. 괜찮아, 나는 그것이 작동한다는 것을 의미하지만, 발이 끔찍하게 움직입니다. 블렌더에서 (원점에서) 보행 애니메이션을 방금 애니메이션했기 때문에 물론, "보행 속도"가 무엇인지 알지 못하기 때문에 게임 내 캐릭터를 움직일 때 모션이 애니메이션에서 발의 움직임과 반드시 ​​일치해야합니다.

그래서 내 질문은 :이 종류의 일반적인 접근 방법은 무엇입니까? 직장에서 우리는 Maya를 사용하고 애니메이터는 캐릭터의 "위치"를 나타내는 특수한 'moveTrans'노드에 애니메이션을 적용하거나 (또는 ​​익스포터가 루트 노드의 움직임에서 생성하도록) 애니메이션이 캐릭터를 얼마나 빨리 움직이는 지 알기 위해 따라서 Maya 파일에서 캐릭터는 한 사이클 동안 앞으로 나아가고이 추가 노드는 발로 따라옵니다. 오픈 소스 토지에서 이와 같은 것을 보지 못했으며 Ogre Exporter 스크립트에는 그에 대한 조항이 없습니다. 챕터는 보통 이것을 위해 무엇을합니까?


1
다음은 개념에 대한 환상적인 설명이있는 토론입니다 : blog.wolfire.com/2011/08/…
벤 하이머

답변:


10

루트 모션 또는 "코드 내"의 두 가지 방법이 있습니다.

루트 모션을 사용하면 기본적으로 "moveTrans"노드에서 제안하는 것과 정확히 일치합니다. 해당 객체의 동작을 사용하여 보행주기를 얼마나 빨리 재생할지 결정합니다. 위치 X에 있고 싶다면 어떤 프레임에 있어야하는지 알아 내기 위해 일종의 역 조회를 수행 할 수 있습니다. 그러나 루트 모션의 진정한 장점은 사실적인 애니메이션을 얻으려면 움직임이 진정한 선형 경로가 아니라는 점을 고려해야합니다. 실제 사람들은 시간이 지남에 따라 변하기 쉬운 속도로 움직이거나 왼쪽과 오른쪽을 조금씩 움직입니다.

Mixamo는 Unity를 사용하여 루트 모션 컨트롤로 좋은 예를 보였습니다. 여기에 비디오가 있습니다 : http://vimeo.com/12052874

이제 루트 모션에는 단점이 있습니다. 계단에서 "워크"애니메이션을 작동시키려는 것과 같은 작업으로 까다로울 수 있습니다 (이상적으로는 계단 / 사다리 등반 애니메이션이 따로 있고 애니메이션에서 모든 동작을 수행함). 또한 IK가 실제로 어떻게 작동하는지 잘 모르겠습니다.

이제 "코드로"하는 것이 프로그래밍 측면에서 훨씬 쉽습니다. 내가 제안하는 것은 먼저 모든 단위가 일관성을 유지하는 것입니다. 예를 들어 Maya에서 1 단위이고 게임은 1 미터입니다. 그런 다음 아티스트가 캐릭터 걷기를 움직이게합니다 (앞으로 이동 완료). 이를 사용하여 애니메이션의 속도를 파악하고 전방 속도없이 애니메이션을 내 보냅니다. 이를 사용하여 애니메이션을 얼마나 빨리 재생하는지 파악하십시오. 따라서 1x 속도의 보행 애니메이션이 5m / s이고 플레이어를 7m / s로 실행하려면 7/5 = 1.4x 속도로 재생하면됩니다. 모델이 확대 또는 축소되는 경우 애니메이션 재생 속도에 배율의 역을 곱하십시오. 절반 높이의 친구는 1x 스케일의 남자와 같은 속도로 움직이기 위해 두 배 빨리 걸어야합니다.


나는 Mixamo의 Root Motion Computer를 보지 못했고 그것을들은 적이 없었으므로 링크와 설명에 감사드립니다! 기본적으로 생각했던대로 명시 적으로 애니메이션하거나 자동 생성하고 빌드 타임이나 런타임에 생성합니다. 내보내기 스크립트에서 직접 코딩해야 할 것 같습니다. 내가 지금 매우 혼란스러워하는 한 가지는 한 사이클 동안 변화하는 모션입니다. 어떻게 지구상에서 게임 플레이에서이를 이끌어 낼 수 있습니까? "5m / s로 이동"은 이제 다른 것을 의미합니다 ... 그리고 방향 변경은 AI에게는 악몽이 될 것입니다! 아마도 Agerage 모션을 사용하는 것이 가장 좋을까요?
Ben Hymers

문자가 부족합니다. 좀 더 의견을 얻기 위해 이것을 허용 된 것으로 표시하기 전에 잠시 기다립니다. 답변 주셔서 감사합니다!
Ben Hymers

루트 모션의 경우 플레이어의 속도를 직접 제어하지 않습니다. 실제로 애니메이션 속도의 재생 만 제어 할 수 있으며 애니메이션이 앞으로 z 값을 직접 제어하게 할 수 있습니다. 내가 준 5m / s의 예는 발 미끄럼을 해결하는 전통적인 방법이었습니다.
Tetrad

게임 플레이 프로그래머로서, 그것은 완전한 악몽처럼 들린다. :) 애니메이터가 움직이는 것의 움직임 속도만큼 중요한 것을 제어하게 하는가? 고맙지 만 사양 할게! 정보를 추출하여 반대 방향이 아닌 이동 속도를 기반으로 애니메이션 재생 속도를 설정할 수 있도록 정보를 추출하는 것을 선호합니다. 그것이 비선형 모션이 나에게 지옥을 혼란스럽게하는 이유이며, 다른 방향으로 돌리는 것이 좋은 이유 일 것입니다.
Ben Hymers

Gah, 새 줄을 시작하려고하는 것에 대한 의견을 입력 한 스택 교환 Exchange ... 애니메이션이 동작을하도록해도 AI 캐릭터의 경우 여전히 문제가 될 수 있습니다. 포인트를 얻으려고하는데 움직임 애니메이션이 좌우로 숨어 있으면 어떻게됩니까 (예 : 술취한 스 태거 애니메이션)? 그들은 어느 방향을 향해야하는지 어떻게 알 수 있습니까?
Ben Hymers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.