개발/SIGGRAPH / / 2022. 12. 14. 17:55

SIGGRAPH 시그라프 구경하기 - Learning Virtual Chimeras by Dynamic Motion Reassembly

반응형

시그라프 발표영상을 볼 수 있는 기회가 생겼는데, 사실 그래픽에 대해 아직 잘 모르는 상태여서 뭐라도 해보자는 마음에 발표 영상을 보고 정리해보기로 했다.

※ 개인적으로 보고 적는 글이기 때문에, 정확한 해석이 아닐 수 있음을 참고하시기 바랍니다.

 

제목은 Learning Virtual Chimeras by Dynamic Motion Reassembly 이다. 시작부터 보니 서울대 짱짱맨분들이 만든 영상이다.

내용은 가상의 동물인 키메라는 사람의 상체와 말의 하체를 가지고 있는데, 이들이 걸을 때는 사람과 같이 팔을 움직이지만, 뛸 때는 어떨지에 대한 의문으로 시작한다.

 

뛸 때의 예상 움직임은 위 그림처럼 두 팔을 마치 접영하는 것처럼 동시에 휘적휘적대는 것으로 표현하는데, 사람과는 중심의 움직임이 다르기 때문이라고 한다. 즉 말의 몸통이기 때문에 다른 부위의 영향을 받는다. 

 

애니메이션 키프레임이 자연스럽게 나오기 위해서는 중심의 움직임에 따른 물리적 효과를 반영해야한다. 

 

가상 캐릭터에 대한 애니메이션 연구들은 많았는데, 왼쪽은 Motion retargeting이라는 기법으로 기준이 되는 캐릭터의 모션에서 다른 캐릭터로 모션을 옮기는 방법인데, 이는 skeletal structure가 비슷해야지만 가능하다. 그렇기에 특이하게 표현된 생명체는 중심이 달라 힘들다.

 

Generate motion from scratch기법은 애니메이션의 과정을 부분부분 조각내서 만들고 이어붙이는 기법인듯 하다. 이러한경우 서로 다른 skeleton 구조에 영향을 받지 않지만, 넓은 범위의 모션은 만들 수 없다. 

 

그래서 여러 생명체가 합쳐짐에 따라 이렇게 각 부위를 나누고 부위에 따른 동작을 적용시키는 것 같다. 

키메라의 경우 여러 동물이 합쳐진 것이므로 모션을 만들 때 이렇게 재조합을 하기 때문에 motion reassembly이라는 명칭이 붙은 것 같다. 

 

이러한 방식으로 다양한 creature들을 만들 수 있는 모양이다. 각각 다른 부위의 모션을 합쳐서 특이한 행동을 하는 모션을 만들 수 있는 것 같다. 

 

이부분은 잘 이해하지 못했는데, 각각의 부위 애니메이션들을 재조합하면서 물리효과에 의한 영향과 무게중심을 맞추는데 성공하는게 목표라는 맥락인 것 같다. 

 

각 파트의 애니메이션을 재조합하면서 자연스럽게 블렌딩하려면 애니메이션 타임라인 frame들을 합친 하나의 timeline을 만들 수 있어야한다. 이렇게 합친게 키메라의 동작이 되는 것이다.

 

공룡다리부분이 파란색인데, 왼쪽은 다리와 팔이 같인 방향의 팔과 다리가 서로 반대로 움직이고, 오른쪽은 함께 움직이는 상황이다. 오른쪽의 경우 좋지 않다는 것을 인지할 수 있다. 

자연스러운 동작을 위해서 시간적으로 이 각 부분의 동작 관계를 적절히 배치하는게 중요하다는 맥락으로 보인다. 

 

왼쪽은 지면을 뚫고 이동, 중간은 자연스럽지만 캐릭터의 특색없이 일반적으로 이동하고, 오른쪽이 특성을 살리고 자연스러운 움직임이라는 설명이다. 실제 영상을 보면 오른쪽이 뭔가 양팔의 무게중심으로 인해 절뚝거림이 보여 생동감이 느껴진다. 

 

이 도전의 어려운 점에 대해서 설명하는 것 같다. 

첫 번째로 모션은 몸의 파트와 긴밀하게 연관되어있어 조금의 동작 변화 비율도 크게 영향을 미친다는 점이라고 한다. 이러한 상황에서 몸의 밸런스를 유지하기 쉽지 않은 모양이다. 

 

재조합을 할 때 각자 다른 캐릭터와 모션을 적절히 조합하도록 만드는데 들어가는 cost를 알고리즘에서 줄일 수 있어야한다는 내용인 것 같은데, 이해하지 못했다.

 

시스템의 구조는 중요한 두 개의 Part Assembler, Dynamic Controller로 구성된다고 한다. 

 

 

이 두 모듈이 어떻게 모션을 조합하는지에 대한 설명이었다.

각 모션들이 다음 동작으로 넘어가기까지 걸리는 델타들을 통해 tn의 다음것을 구하는 방식인 것 같다. 이를 계산할 때 무게를 싵고 움직이는 타이밍과 물리적인 밸런스를 고려한다.

dynamic controller가 이렇게 다음 step의 모션들을 통합하여 계산하는 역할인 듯 하다. 

 

자세한 설명은 모르겠으나, 이렇게 각 동작들은 딥러닝 네트워크를 통해 형성되는 듯 하다.

 

동작들 중 학습데이터와 아닌 것을 분류해서 네트워크에 넣을지 최적화단계에 넣을지 구분하는 것 같다.

 

optimization 식에서 contact의 역할은 잘 모르겠다.

global의 역할이 없으면 전체적인 움직임이 비정상적으로 특정 부분 모션에 쏠리는 듯 하다.

regularization이 없는경우 계속 모션이 흔들렸다. 모션의 시간에 따라 일관적으로 움직이기 위한 요소인 듯 하다.

 

dynamic controller의 구조를 알려주는 듯 하다.

 

1개의 모션일 때는 모든 포인트가 유효한 학습으로 적용되지만, 2개의 모션일 때에는 optimal로 가기위해서 분포가 부적절한 것 같다. 

 

visit based state를 사용해서 서서히 optimal로 향하도록 점점 분포 결과가 나온 것 같다. 

 

레퍼런스를 위해서 사람 캐릭터를 두 개의 body로 분류 하였다. 

 

점점 학습하면서 양발이 같이 움직이던게 점차 사람의 걸음걸이와 유사한 형태로 바뀐다.

 

6다리가 달린 벌레의 움직임도 있다.

 

각 캐릭터들에 곰의 다리를 조합하여 달리게 한 결과인 듯 하다. 소스가 되는 다리의 모션은 같지만, 키메라의 다른 부분에 의해서 안정감이나 속도 등이 달라진다. 

 

키메라의 역동적인 효과와 각 모션들의 스타일이나 의미를 유지하면서 조합할 수 있었다는 결과 같다.

해당 연구에서 개발한 알고리즘으로 제한된 모션과 캐릭터 리소스를 가지고도 다양한 조합을 만들 수 있다고 한다. 

여기서 필요한 점은 수동적으로 선택해야하는 변수들이 있다는 것과, part assembly에 큰 cost가 필요하다는 것이라고 한다. 

모션의 part가 하나 추가될 수록 그래프의 차원이 늘어나기 때문에 최적화를 위한 수치가 기하급수적으로 올라간다는 것 같다. 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유