애니메이션 블렌딩 기본


23

달리고 걸을 수있는 캐릭터가있는 프레임 워크가 있다고 가정 해 봅시다.

애니메이션 블렌딩이 런타임에 동적 애니메이션을 생성하여 부드럽게 전환하는 과정이라고 생각하고 있습니까?

그렇다면 이것이 어떻게 작동하는지에 대한 기본 이론은 무엇이며 어떻게 구현합니까?


1
한 애니메이션의 마지막 프레임에서 다른 애니메이션의 첫 번째 프레임까지 각 본 사이의 선형 보간이라고 생각합니다.
대담하게

또는 가중 평균을 원할 경우 smoothstep을 사용한 선형 보간 (:
Gustavo Maciel

@ Gustavo-Gtoknu 당신이 방금 말한 것에 대해 더 설명 할 수 있습니까?
SirYakalot

블렌딩 할 두 프레임의 알파에서 선형 보간을 수행하고 다른 프레임과 반대로합니다. 둘 다 시간의 기능. 보간에서 단계를 부드럽게하거나 가중 평균을 사용하여 다른 효과를 얻을 수 있습니다.
Gustavo Maciel 님이

답변:


18

캐릭터 애니메이션 블렌딩이 더 일반적이며 다음에 사용할 수 있습니다.

  • 두 클립 사이의 부드러운 전환을 계산;
  • 기존 애니메이션에서 완전히 새로운 애니메이션 제작 (잠재적으로 2 개 이상)
  • IK와 유사한 행동 달성
  • 기타

기본 아이디어는 애니메이션 클립이 서로 다른 두 개의 동일한 골격에 대해 각 관절 회전마다 값을 계산한다는 것입니다. 애니메이션 클립은 회전으로 표시됩니다. 따라서 오일러 각도를 사용하더라도 정확한 결과를 원할 경우 선형 보간법을 사용해야합니다. 예를 들어 slerp를 사용할 수 있지만 더 복잡한 솔루션이 존재합니다.

이것은 복잡한 솔루션의 복잡한 문제입니다. 기본적으로 애니메이션 클립 A와 B가 두 개인 경우 :

  • A와 B가 완전히 다른 경우 (블렌딩 점프와 수영) 이상한 / 재미있는 결과를 얻을 가능성이 있습니다.
  • A와 B가 비슷하면 (두 걷는 애니메이션 클립), 예를 들어 두 왼발이 모두 바닥에있을 때 클립을 동기화하기 위해 먼저 동기화해야합니다.
  • 기타

당신이 관심이 있다면, 난 당신이 어려움이 무엇인지 더 잘 이해할 수 있도록이 기사를 읽고 시작하는 것이 좋습니다 : http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf

가장 최신 정보는 아니지만 읽기 쉽습니다.

이게 도움이 되길 바란다. 친애하는.


5

먼저, 애니메이션 블렌딩은 거의 골격 애니메이션에만 적용되므로 골격 애니메이션 (특히 3D 그래픽)에 대해 이야기한다고 가정합니다. 2D 스프라이트 기반 애니메이션에 대해 이야기하고 있다면 (질문에 지정하지 않았 음) 애니메이션 블렌딩을 잊어 버릴 수 있습니다.

그 길에서 ...

애니메이션 블렌딩이 런타임에 동적 애니메이션을 생성하여 부드럽게 전환하는 과정이라고 생각하고 있습니까?

그것은 그 용어가 의미하는 바와 거의 같습니다. 그러나 "동적 애니메이션 생성"이라는 문구는 약간 오해의 소지가 있습니다. 절차 적 애니메이션을 염두에두고 정확하게하는 것은 아닙니다.

"애니메이션 블렌딩"은 한 클립의 가중치가 올라가고 다른 클립의 가중치가 내려가는 동안 두 애니메이션의 비트를 사용하여 두 애니메이션 클립간에 전환하는 경우입니다. 이것은 골격 애니메이션에서 가장 잘 작동하므로 각 관절의 회전이 두 개의 다른 애니메이션 클립에서 관절의 애니메이션 사이의 중간 점으로 설정되고 시간이 지남에 따라 각 클립의 가중치가 변경됩니다. 즉, 각 관절의 회전을 다음과 같이 계산합니다.

rotCombined = weightA*rotA + weightB*rotB

이제 애니메이션 블렌딩이 골격 애니메이션에서 가장 잘 작동하지만 정점 애니메이션 (예 : MD2)으로도 가능합니다. 현대 게임 엔진에서 정점 애니메이션을 사용하는 사람이 거의 없기 때문에 역사적으로 더 중요하지만 두 가지 다른 애니메이션에서 정점 위치 간의 가중치와 같은 방식으로 정점 위치를 설정할 수 있습니다. 스켈레톤 애니메이션은 메시의 다양한 부분이 전체적으로 유지되도록하는 반면에, 두 애니메이션이 너무 다른 경우 이상한 모양의 보간 (예 : 메쉬의 일부가 접히거나 뒤집어 짐)이 발생할 수 있습니다.


2D 그래픽으로이 작업을 수행 할 수 없다고하면 스프라이트 기반 애니메이션을 의미합니까? 개별 신체 부위의 위치 및 회전을 기반으로 mecanim에서 생성 된 일부 2D 애니메이션을 혼합하는 방법을 찾으려고하지만 2D이기 때문에 왜 불가능한지 알 수 없습니다.
mallardz

스프라이트 애니메이션에서 새 프레임을 생성 할 방법이 없기 때문입니다. 3D 애니메이션에서 개별 이미지는 미리 생성되지 않습니다.
jhocking

나는 그것을 얻지 만 2D 애니메이션은 전체 스프라이트를 변경하는 것에 전적으로 의존 할 필요는 없습니다. 여러 스프라이트로 오브젝트를 구성하고 회전 및 위치 등을 애니메이션으로 만들 수 있습니다. 나는 당신의 대답을 읽을 때 이것을 수행하는 방법을 찾으려고 노력하고 있었고 첫 번째 줄은 나를 슬프게했습니다 :(! Unity에서 쉽게 할 수 있고 자신의 엔진을 굴리는 사람들을위한 3D 블렌딩보다 더 어려운 일은 없을 것입니다.
mallardz

1
아 그래, 난 스프라이트 기반의 애니메이션을 의미 했어 내 대답을 편집 할거야
초에 jhocking
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.