[Computer Animation]Hierarchical Animation

후이재·2020년 11월 23일
0

시작하면서

  • 이제 강체(Rigid), 변화체(Deformable)의 Animation은 할 수 있다
  • 사람의 경우는 어떠할까? 사람은 root(pelvis)에서부터 관절과 뼈로 이루어져있다.
  • 이를 계층구조로 나타내어 Animation하는 방법을 알아보자

사람의 Animation 구현방법

  1. Physical laws
    근육의 특성이용하여, 뼈에 근육붙이고 시뮬레이션 하기
    장: 굉장히 정확한 움직임 얻을 수 있음
    단: 너~무 오래걸림
  2. Hierarchical Modeling
    계층구조로 나타내어 각 관절의 회전을 받아 시뮬레이션 하기
    각 관절마다 상대적인 회전값을 가짐
    여기에 제약사항을 넣어 실제와 가깝게 표현 가능!(ex.팔꿈치 회전의 제약)
    팔꿈치를 30도 회전하고, 어깨를 50도 회전해도 상대적인 회전값은 그대로. 전체적으로는 바뀜
    • Artuculation objec: 관절이 있는 물체
    • Articulation variable: 각도
    • End effector: 가장 끝 부분(손목 또는 손바닥이라고 할 수 있음)

Hierarchies in Animation

  1. Forward Kinematics (FK)
    • time 마다 angle을 하나씩 정해주기..
    • 그러고나서 interpolation
    • Art의 영역
      장: 원하는 움직임 가능
      단: 사람의 노력이 필요함
  2. Inverse Kinematics (IK)
    • 모두 control이 아니라, end effector의 위치를 바꾸려면 얼마나 회전해야할지 계산
    • Math의 영역
      장: 쉬운 제어 가능, 부가적인 움직임(잡기위해 허리 숙이는 등) 가능
      단: 계산으로 움직여서 부자연스러울 수 있음

FK는 어떻게 하나요?

모든 값을 지정해줍니다.

Joint의 종류

  • Revolute Joint: 한 방향 회전 joint
  • Prismatic Joint: 이동하는 joint(늘었다, 줄었다)
  • Complex Joint: 모든 축으로 회전 가능. 하나로 두기 복잡해서 3개의 관절로 나눠 표현하기도함.

Joint-Link표현

  • Node(모양)와 Arc(상대거리)값으로 되어있음
  • Arc값은 부모로부터 얼마나 떨어져있는지에 대한 값.(거리, 각도)
  • 머리에 10cm위로 붙어있는 모자라면, arc는 10을 가짐
  • Binary Tree 형태로 표현한다.

IK는 어떻게 하나요?

goal position까지의 회전 과정을 역으로 계산해냅니다.

Spaces

  • Configuration space: L과 세타로 구성된 위치
  • Reachable workspace: 도달할 수 있는 위치(End effector가 있을 수 있는 위치). 넓을수록 어디든 갈 수 있어
  • Dextrous workspace: 다양한 경우를 가질 수 있는 위치. 넓을수록 움직이기 편함

Numeric(Analytic)

  • analtytically하게 문제를 풀기가 어렵다.
  • 원하는 위치로 도달할 수 있는 방법이 너무 많음
  • 그래서 수치해석적인(Numeric) 풀이를 해보자!
  • 우선 사람의 팔은 3-1-3또는 3-2-2 의 DOF를 가짐
  • 가장 적게 움직이는 관절(end effector 근처의 관절)을 먼저 움직이도록 하는 방식
  • 움직여보고 안되면 더 넓은 범위의 움직임.
    장: 잘 풀리기는 한다.
    단: 자연스러운 움직임은 어렵다. 항상 해를 찾는것을 아니다.

Generic math notation

  • 일반적인 해를 구하기 위해서는 변화량에 따른 속도를 구해, Jacobian 행렬을 만들어 곱하기
  • Jacobian 의 역행렬을 곱하면 goal vector를 얻을 수 있다.
    장: 정확한 자연스러운 해 구함
    단: 현재 configuration에서만 정확하므로, 모든 시점에 대해 Jacobian 행렬을 구해야함..
    하지만.. 이또한 도달할 수 없는경우, 그곳에 가기위해 왔다갔다하며, 발버둥치는 모습을 볼 수 있다.
    Damping factor를 더해야한다.

IK에서 발생할 수 있는 문제

  1. Damping factor
    조금만 움직여도 더 움직이는걸로 여겨서, 결국엔 덜 움직이게 하기 위한것!
    => 그러면 왔다갔다 하는 현상이 줄어듦
  2. Singularity
    Singular위치에 goal 있으면 답 안나오는 문제.(일직선상에)
    기본 해결법: Singular한 곳에 빠지지 않게 하기
    그래도 안되면: 포기하거나.. 다른 방법을 생각해보거나.. 뒤로 물러나보기
  3. Cyclic Coordinate Descent(CCD)
    하나씩 움직여보기
    3차원일 경우, 2차원 상으로 투영시켜서 문제 풀기
    장: Joint limit주기가 쉬움, 속도 제약도 쉬워짐

정리!

  • FK는 자연스럽지만, 손으로 설정해야하는 단점
  • IK는 제어가 쉽지만, 자연스럽지 않다는 단점
    => 어떻게 해야할까? => Motion capture!

Motion Capture

사람의 motion을 캡쳐합니다.

무엇을 capture하는가

  • Joint의 움직임을 캡쳐합니다

어떻게 capture하는가

  • Joint의 위치를 캡쳐합니다. 어떻게? marker를 이용해서!

MoCap 기술

  1. Electro-Mechanical
    • exo-skeleton과 같은 기계를 입는다.
      장: 다른 장비 필요없음. 실외캡쳐 쌉가능
      단: 입는거, 움직임 불편. 액션하기 불편
  2. Magnetic
    • 자기장을 이용. x, y, z(위치), wx, wy, wz(각도)까지 얻어서 6DOF 가능
      장: 많은것을 붙일 필요 없음. 빨리 측정가능. 좀더 많은 모션 가능
      단: 선이 많아.. 근처에 금속판같이 자기장 변화시키는것 둘 수 없음
  3. Optical(Passive)
    • 광학식. 어디서든 정반사하는 마커를 이용. x, y, z(위치)만 가능.
    • 마커의 위치를 통해, 역으로 링크를 계산
    • 카메라 캘리브레이션이 필요(위치 대응하는 과정)
    • 위지윅스튜디오의 모션캡쳐실
      장: 선이 없음. 좋은 카메라 많으면, 정확도 올라감.
      단: 마커가 많이 필요. 가려지면 튀어버림. 정확한 위치가 필요해짐
  4. Optical(Active)
    • 마커가 빛을 내는 방식.
      장: 빛이 밝으니 적당히 가려져도 괜찮음. 재질의 영향도 적음. 마커에 비해 오래 쓸 수 있음
      단: 전선이 있다

비교해보자

  1. Electro-Mechanical: 정확하지않고, 자유롭지도 않음
  2. Magnetic: 적당히 정확하고, 적당히 자유로움
  3. Passive Optical: 정확하고, 자유로움
  4. Active Optical: 정확하고, 자유로움
    Optical 은 매우 비싸다는 단점이 있긴함.

Markerless system

  • 영상처리 방식. 부분으로 분리하여, 역으로 관절, 뼈 유추
    장: 마커가 없어도 됨
    단: 유추이다보니, 정확하지 목함. face는 괜찮은편

Marker 추출

  • 여러 카메라를 통해 마커의 위치 추정(삼각측량법 사용)
  • 마커와 옷 구분을 함.(적외선 사용. 반짝이는곳이 마커)
  • 주위환경에서 빛을 반사하지 않도록 조치해야함

Marker Tracking

  • 이전 움직임과 다음 움직임을 매칭시켜야함
  • 박수를 치고 난 후가 문제생길 수 있음.
  • 튀는 곳에 대해서는 clean up이 필요. 아직까지 수작업으로 고쳐주곤함

Mocap 결과

  • root에 대한 hierarchy 정보, 각 Frame에 대한 각도를 얻을 수 있음
  • 이제 캡쳐는 가능!
  • Missing joint, Different body size에 대한 문제 해결이 필요

활용

  • Motion Retargeting: 체형이 다른 캐릭터로 모션을 맞추기
  • Motion Blending: 걷는 motion에서 뛰는 motion으로 자연스럽게 연결하기
  • Motion Control: 굴곡 또는 경로 변경되면 자연스럽지 않을 수 있음. 리타게팅, 블렌딩 이용
profile
공부를 위한 벨로그

0개의 댓글