728x90
반응형
13.2 정기구학
- 각 정점은 자신이 속한 뼈에 의해 움직이는데, 오른쪽 그림은 아래팔(foream)이 회전함에 따라 $v_5$도 회전한 것을 보여준다.
- 이렇게 애니메이션이 완료된 정점을 렌더링에 사용하기 위해서는 이를 다시 캐릭터 공간으로 변환해야 한다.
- 그래야 애니메이션 포즈의 캐릭터 전체가 GPU 파이프라인을 따라 월드 변환, 뷰 변환 등을 거쳐서 최종적으로 스크린에 렌더링될 것이다.
- $v_5$에 애니메이션을 적용
- 그 결과를 캐릭터 공간으로 옮기는 변환이 필요하다. 이를 $M_5,a$라 표기하자.
- 오른쪽 그림에서 아래팔은 90도 회전했다. 이는 아래팔의 뼈 공간의 원점인 팔꿈치를 중심으로 한 회전이다.
- 이러한 지역적인(local) 특성을 반영하여 이를 지역 변환(local transform)이라 부르자.
- 인체구조상 변환은 회전만 가능하다.
- 2차원 동차 좌표계에서의 회전 행렬은 다음과 같다.
- 아래팔이 회전해도 $v_5$는 아래팔 공간에서 (2, 0)이라는 좌표를 그대로 유지한다.
- 반면 $v_5'$는 '회전되기 전의' 아래팔 공간을 기준으로 하는 좌표이다.
- 그런데, '회전되기 전의' 아래팔과 위팔 사이의 관계는 $M_5,p(M_f,p)$에 의해 정의되었다. 따라서, $v_5'$는 $M_5,p$에 의해 위팔 공간으로 변환된다.
- 관절체 애니메이션에서 모든 뼈는 회전이 가능하다. 즉, 아래팔뿐 아니라 위팔도 회전할 수 있다.
- "(1) 위팔에 속한 정점에 애니메이션을 적용하고, (2) 그 결과를 캐릭터 공간으로 옮기는 변환"을 $M_4,a$라 표기하자. 그러면 $M_5,a$를 정의할 수 있다.
- $M_5,pM_5,l$에 의해 아래팔 공간에서 위팔 공간으로 옮겨지고, $M_4,a$에 의해 캐릭터 공간으로 변환되는 것이다.
- 골격 계층 구조를 생각해보면 다음과 같이 일반화 될 수 있다.
- $M_i,a$계산을 위해서는 $M_i-1,a$만 있으면 된다. 그런데 $M_i-1,a$ 계산을 위해서는 $M_i-2,a$가 필요하다.
- 이런식으로 골격 계층을 거슬러 올라가 보면 우리에게 궁극적으로 필요한 것은 루트 노드인 골반의 $M_1,a$임을 알 수 있다.
- (pelvis) $M_1,a$에 애니메이션을 따로 적용할 필요가 없다. 왜냐하면 월드변환으로 대체된다. root니까
- 월드 공간에서 캐릭터의 위치와 방향을 정하기 위해 월드 변환이 필요할 텐데, 이 월드 변환은 골격의 루트 노드인 골반(pelvis)을 기준으로 정한다.
- $M_1,a$는 단위 행렬이고, 단위 행렬인 $M_1,a$부터 시작해 골격 계층 구조를 따라 '위에서 아래로 내려가면서' 각 뼈마다 일반화된 식을 사용해 $M_i,a$를 계산하면 된다.
- 드레스 포즈 골격이 결정되면, 골격 계층 구조를 따라 '위에서 아래로 내려가면서' 각 뼈마다 $M_i,d^-1$을 계산한다. 이는 단 한번 계산된다.
- 한편, 애니메이션 포즈가 결정되면, 골격 계층 구조를 따라 역시 '위에서 아래로 내려가면서' 각 뼈마다 $M_i,a$를 계산한다.
- 이는 모든 애니메이션 포즈에서, 즉 애니메이션의 각 프레임마다 반복된다.
- 드레스 포즈에서 정점의 캐릭터 공간좌표를 $v$로 표기하자. 이는 우선 $M_i,d^-1$에 의해 해당 뼈 공간으로 변환되고, $M_i,a$에 의해 애니메이션되고 캐릭터 공간으로 변환된다. 이 정점을 $v'$라 표기하자.
- 이렇게 얻어진 $v'$들을 모아 렌더링하면 애니메이션 포즈의 캐릭터를 얻게 된다.
- 이렇게 모든 뼈의 변환을 계산하여 관절체 전체의 모습을 결정하는 것을 정기구학(forward kinematics 혹은 direct kinematics)이라고 부른다.
출처
한정현 - [OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]을 보고 공부하고 정리한 내용입니다.
728x90
'공부 > Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문' 카테고리의 다른 글
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [4/4] (0) | 2022.06.06 |
---|---|
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [3/4] (0) | 2022.06.06 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [1/4] (0) | 2022.05.20 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 12 - 스크린 물체 조작 [2/2] (0) | 2022.03.16 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 12 - 스크린 물체 조작 [1/2] (0) | 2022.03.16 |