Computer Animation Algorithms & Techniques (By Rick Parent)
책을 정리한 내용입니다. (틀린 내용이 있을 수 있습니다)
Motion Capture
- 실제 객체의 움직임은 복잡하다
- 애니메이터가 현실적으로 보이는 움직임을 만드는 것보다 실제 물체의 움직임을 기록하고, 합성 객체(synthetic object)에 mapping 하는 것이 종종 더 쉬운 경우가 있다.
- 모션캡쳐란 실제 움직임을 합성 객체에 기록하고, mapping 하는 것을 말한다.
6.1 Motion Capture Technologies
- 모션캡쳐를 하는 방식으로 electromagnetic sensor과 optical markers가 있다.
- 전자의 방식은 장점으로 3차원의 센서의 위치와 방향이 실시간에 기록되고 디스플레이된다는 점이다.
단점으로는 자기장이 외곡되지 않는 환경이어야한다는 점과 장치로 인한 이동이 제한된다는 점이다.
- 후자의 방식의 장점으로는 케이블로 연결되지 않아 큰 범위로 이용 가능하고, 비용이 적게 든다는 점이다.
단점으로는 실시간 피드백이 제공되지 않으며, 오류와 노이즈가 발생할 수 있다는 점이다.
-> 앞으로 optical markers에 대한 내용을 주로 다룬다.
6.2 Processing the Images
- motion controll의 목적은 실제 객체의 3차원 동작을 재구성하여 합성 모델에 적용하는 것이다.
1) 애니메이터가 2차원 비디오 이미지에서 마커의 위치, 종류와 상관관계를 알 수 있도록 이미지 처리
2) 마커의 2차원 위치에서 3차원 위치를 재구성
-> camera calibration 기술 필요
3) 3차원 마커의 위치는 모션 캡쳐한 실제 객체의 모델에 constrained 시킨다.
- 마커의 위치는 관절의 위치와 유사할수록(겹치지 않을수록) 좋은 결과가 나온다.
- optical marker의 문제1 : 한 개 이상의 마커가 가려지는 경우
-> 해결하기 위해서는 마커의 위치를 3차원으로 구상하는 방법이 있다.
- optical marker의 문제2 : 모션 캡쳐 시스템의 연속적인 노이즈 문제
-> 재구성 과정에서 데이터를 재조정하는 과정이 필요하다.
(지나치게 불일치하는 데이터는 버리고 특징점은 버리지 않고 조정하기 - 사용자의 개입이 필요하다.)
6.3 Camera Calibration
- 마커의 3차원 위치를 재생하기 전에 필요한 것
-> world space에서의 카메라의 location & orientation
-> 카메라의 초점 거리, 이미지 중심, aspect ratio (카메라 내부 요인)
- camera calibration : 3차원 공간(world space)의 점을 카메라 좌표계의 이미지 평면에 투상시켜 3차원 공간의 점을 카메라의 내부 요인에 의한 외곡을 보정하는 작업
[pinhole 모델을 통한 camera calibration 과정]
-> 투상시킨 여러개의 점을 가지고 camera calibration을 실행한다.
-> 닮음비와 least-square solution method를 통해 선형 수식을 만든다.
6.4 Three-Dimensional Position Reconstructions
-
어떠한 마커의 3차원 좌표를 재생하기 위해서는 적어도 두개의 카메라(C1, C2)에서 마커의 위치를 알아야 한다.
-> 두 개의 카메라 위치가 수직 정도가 클수록 정확하게 재생될 가능성이 커진다.
[두 개의 카메라를 사용하여 한 점을 보는 관점]
-
카메라에 대한 이미지 평면의 위치와 global coordinates에 대한 카메라의 position과 orientation을 알면 P의 위치를 구하는데, I1,I2를 이용할 수 있다.
C1+k1(I1-C1)=p
C2+k2(I2-C2)=p
-
아래의 식을 만족할 때 위의 두 식을 연립하여 계산이 가능하다. (=노이즈가 지나치지 않을때)
(P2-P1) dot (I1-C2) = 0
(P2-P1) dot (I2-C2) = 0
-
마커의 개수 : 인체의 경우 14개 정도가 필요하다.
-> 팔 다리 당 3개 / 머리 2개
-> 좀 더 정교한 작업을 위해서는 팔꿈치, 무릎, 가슴, 양 손, 발끝, 발목, 척추에 추가한다.
-
다중 카메라 : 마커의 위치가 많아질수록 마커들이 겹칠 가능성이 커진다.
-> 전형적인 시스템으로는 8개의 카메라로 동시 촬영한다.
6.5 Fitting to the Skeleton
- 직접적인 접근법은 각 프레임에 각 마커의 위치에 뼈대의 관절에 대한 절대적인 위치를 정하는 방법이다.
- 문제점1) 위치를 표시하기 위해 마커를 직접 사용하면, 노이즈와 데이터 재구성을 적용하기가 어렵다. (foot-sliding, skating 현상 발생)
-> IK를 이용하여 발을 바닥에 고정하여 문제를 해결할 수 있다.
- 문제점2) 마커들이 정확히 관절에 존재하지 않고, 관절 바깥 표면에 자리 잡았다는 것이다.
-> 마커들의 위치를 직접 조절하는 방법으로 해결할 수 있다. 그러나 마커와 마커간의 상대적인 위치를 정하는 것에 문제가 있다.
-> 마커를 관절의 양쪽에 두고, 두 마커 사이 현을 중점으로 관절을 보간하는 방법이 존재한다.(어깨와 척추의 경우는 해결할 수 없다)
-> 세개의 마커로 만들어진 평면을 사용하여 세 개의 연속된 관절로 된 평면의 법선을 계산하여 관절의 위치를 결정한다.(팔의 경우 쭉 편 상태에서는 법선의 계산이 어려워진다)
- 위의 방법들로 구한 digitized joint positions를 가지고 뼈대를 제어할 수 있게 된다.
-> 끝단부(end effector) 에서 문제가 생길 가능성이 많기에 독립적으로 먼저 자리를 정해준 후 관절을 조절하는 과정이 필요하다.
6.6 Output from Motion Capture System
-
일반적인 모션캡쳐 데이터 포맷의 두 가지
-> Acclaim two file format : .asf/ .asm
-> Bio-vision : .bvh
-> 두 가지 포맷 모두 정적정보(관절 계층)와 시간 변화정보(각 관절의 DOF에 대한 값) 는 가지고 있다.
[정적정보 데이터 값 예시]
[시간변화정보 데이터 값 예시]
-
관절 계층은 각 DOF(degree of freedom)의 수와 유형, DOF 매개변수가 주어진 순서, 관절 한계를 포함하는 관절을 정의 / 이전 관절에 상대적인 관절의 위치를 포함하는 계층적 연결성을 정의한다.
6.7 Manipulating Motion Capture
6.7.1 Processing the Signals
- Motion signal Processing은 주파수 구성 요소가 모션의 다양한 특성을 어떻게 캡쳐하는지 고려하는 것이다.
-> 고주파수는 특이한 움직임 / 저주파수는 기본 동작
-> 주파수 영역을 추출, 조작, 재조합 하여 원하는 결과를 만든다.
- Motion Warping 은 제한사항을 만족하기 위해 신호를 왜곡되게 하는 것이다.
6.7.2 Retargeting the Motion
- synthetic character가 캡쳐된 주체와 맞지 않는다면 motion retargeting을 사용한다.
- motion retargeting : synthetic character에 mapping한 다음 주요 제한사항에 맞도록 수정해야 한다.
6.7.3 Combining Motion
- 모션들은 몇 분동안 segment로 캡쳐된다.
- 긴 애니메이션을 위해서 segment를 결합하는 작업이 유용하다.
- 가장 간단한 방법은 중립 위치에서 각 segment를 시작하고 정지하는 것이다.
-> segment사이의 결합은 segment의 한 끝을 다음 segment 시작에 혼합하는 것이다.
-> 해당 결합과정을 자연스럽게 하는것이 최근 연구 주제이다.
- 모션 그래프를 통해 긴 애니메이션을 자연스럽게 만드는 방법이 연구되고 있다.
-> 모션 segment간의 합성이 자연스러운 지점들을 미리 지정해둔다.
-> 모션의 합성에 있어서 약간의 수정을 허용한다.