kwan's note

캐릭터 애니메이션 (charater animation) 본문

graphics VR AR/Computer Graphics -Korea Univ

캐릭터 애니메이션 (charater animation)

kwan's note 2021. 6. 29. 18:36
반응형

본 학습노트는 2021년 1학기 고려대학교 한정현 교수님의 컴퓨터 그래픽스 강의를 수강하고 이 내용을 기반으로작성하였습니다.

 

이전시간: https://reminder-by-kwan.tistory.com/140

 

실시간 애니메이션에서 캐릭터는 골격을 이용하여 움직인다.  따라서 이 골격을 정의하고 움직이는것은 중요한 요소이다.

서론에서 설명한 바와 같이 그래픽 디자이너는 모델링을 통해 캐릭터를 제작한다. 제작된 캐릭터는 dress pose로 정의되고 이 포즈에 리깅을 통해 골격이 합쳐진 모델이 된다.

3ds Max에서는 사람 캐릭터 모델링을 위해 bipad라는 골격이 제공된다.

 

모든 골격에는 tree 형태의 hierarchy가 존재한다.

위 그림은 bipad의 hierarchy이다.

이러한 상하관계가 필요한 이유는 골격의 회전에 대해 그 자식골격이 영향을 받기 때문이다.

예를들어 척추를 구부려 앞으로 움직이면 모든 상반신이 앞으로 기울게 된다.

또는 left forearm이 움직이면 이외의 골격은 가만히 있고 left fore arm과 left hand가 움직인다.

즉 어떤 뼈의 움직임은 그 자식들에게 이전된다.

따라서 각 뼈에대해 뼈 공간을 정의하고 뼈 내부에서 변환을 진행한 다음

뼈공간을 부모공간으로 이전시킴으로서 부모공간에서 변형으로 표현하고 궁극적으로 캐릭터의 공간(object space)에서 정의하고자 한다.

 

먼저 뼈 공간 사이에서 이전을 보도록 하자.  dress pose에서 forearm 에서 정의된 점에 대해 upper arm에서 정의하는 방식은 다음과 같다.

 

이러한 방식으로 모든 뼈에 각 joint의 부모-자식 공간에 대한 관계를 안다면 모든 점들에 대해 부모공간 혹은 부모의 부모공간등에 대해 정의할 수 있을 것이다.

 

일단 pelvis 즉 골반에서의 캐릭터 공간으로 변형은 I matrix라고 하고 나머지 점들을 캐릭터 공간으로 변형시키는 방법에 대해 생각해보자. 위에서 진행한 변형들을 연쇄적으로 이은 형태이다.

 

 

이제 반대로 캐릭터 공간에서 각각의 뼈 공간으로 이전을 생각해 보자.

 

이러한 방식에 대해서 생각하는 이유는 캐릭터의 움직임을 각각의 뼈 공간에 대해 joint의 회전으로 나타내기 위함이다.

이러한 역변환은 역행렬을 계산함으로서 진행할 수 있다.

 

 

이렇듯 Mid 의 inverse 를 통해 dress pose(T pose)에서 캐릭터 공간의 정점을 i번째 공간으로 변환시켰다.

 

이제 각각의 joint의 움직임(여기서는 회전)을 생각해보자. 물론 회전 이외의 움직임도 가능하나

사람의 경우 뼈가 scaling되거나 뼈가 분리되어 translation 되지 않으므로 main이 되는 변형은 회전이 될 것이다.

 

이제부터 관절체의 animation을 보자. 여기서 보고자 하는 움직임이 먼저 정의된 animation을 정 기구학이라고 한다.

아래 그림에서 joint 인 elbow가 90도 회전된 경우를 보자.

elbow를 90도 회전시키면 fore arm을 비롯한 그 descent는 동일하게 회전된다.

fore arm에 속한 v5도 회전하게 된다. forearm 뼈 공간에서 정의된 v5의 회전 후 위치를 v5' upperarm의 뼈 공간에서 정의된 회전후 v5의 좌표를 v5''라고 한다면 위 그림에서의 식과 같이 회전(M5l)을 진행한식으로 v5'가 정의되고

그 부모공간으로 이전하는식 M5,p를 곱함으로서 v5''가 정의된다.

 

이러한 정 기구학은 연쇄적으로 표현됨으로서 어떤 뼈 공간내의 점이라도 변형이 정의되고 부모 공간에서 표현될 수 있다. 이러한 변형을 Mn,a라고 한다. 이때 n은 뼈공간의 숫자를, a는 animation을 뜻한다.

다만 여기서 고려해야할 점이 하나 더있다.

우리는 뼈가 속한 공간만을고려했다. 하지만 실제 피부는 근육의 움직임으로 변형된다. 단 하나의 뼈에대해 움직임이 정의되지 않기 때문에 모든 움직임을 가장 가까운 뼈의 움직임으로 표현하면 분명히 한계가 발생한다.

따라서 피부를 변형하는 방식을 정점 블렌딩을 통해 표현하고자 한다. 하나의 점을 하나의 뼈에만 할당하는것이 아니라 가장 가까운점에는 높은 비중을 주고 그다음으로 가까운점에는 조금 낮은 가중치를 줌으로서 여러 뼈에 의존적인 피부를 표현하고자 한다.

이 방식을 이용해 비교적 현실적인 피부표현(skinning)을 할 수 있게된다.

즉 각각의 정점에 대해 뼈의 가중치를 주고 이를 이용하여 뼈의 움직임에 대해 어떻게 변형할 것인지 표현하게 된다. 이를이용하면 더 정교한 움직임을 보일 수 있다.

반응형