---------------------------------------------------------------------------
함수 (bone, Forward, Orientation) 받아서
//역행렬을 만들기 위해서 계층 구조의 방향행렬들을 결합
concatenate(bone->orientation, orientation, localOrientation);
//이 뼈대의 방향 행렬의 역행렬 구한다
inverse(localOrientation. bone->inverseOrientation);
//이 뼈대의 방향 행렬을 전진 행렬과 합친다.
concatenate(bone->orientation, forward, localForward);
//이 뼈대의 애니메이션 행렬을 전진 행렬과 합친다
concatenate(bone->animation, localForward, localForward);
//최종 스티칭 행렬을 완성한다
concatenate(bone->inverseOrientation, localForward, bone->final);
if(bone->child)
함수 (bone->child, localForward, localOrientation)
if(bone->sibling)
함수 (bone->sibling, forward, orientation)
---------------------------------------------------------------------------
bone->final = (①뼈대 좌표계로 변환해서 ②애니메이션 시키는 행렬) 이라면
① inv(bone->orientation * orientation)
:: TM은 로컬을 바로 월드로 바꿔주는 행렬이라면,
:: A->B->C 계층 구조로 되어있고 B의 bone->final을 구한다면
:: 위의 ①는 inv(B.TM * A.TM) 가 되는데, 뼈대 좌표로 변환하기 위해서
:: 그냥 inv(B.TM)만 곱해주면 되는 것 같은데 A.TM이 있어서 좀 이상합니다
:: bone->orientation이 TM과 다른 것인가요?
② (bone->orientation * forward * bone->animation)
:: B.TM * ? * B.AniTM
:: 여기서 forward와 bone->animation 행렬을 어떻게 구하는지 궁금합니다.
또, A->B->C라면 최종적으로 B영향 받는 정점의 스키닝은,
V = V * inv(B.TM) *(B.AniTM * A.AniTM)
= V 정점을 B pivot 로컬로 옮기고 B애니메이션 -> A애니메이션
= 월드 상에 V정점 계산
이렇게 했는데, 화면에 삼각형이 날아다니고 춤을 추는 등?의
특수효과만 나오네요 --; 답답할 따름입니다.
[GPG 1 글 4.15] GPG1 - 4장15절에서..
Moderator: 류광
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
오랜만에 GPG에 대한 질문이 올라왔네요.. 잘은 모르지만 다른 분들의 답변을 유도한다는 의미에서 제 생각을 말씀드리면요...
1번은... 현재 뼈대의 좌표계는 부모 뼈대의 좌표계를 기준으로 한다고 봐야 그 코드 전체가 성립되는 것 갈습니다. 계통구조를 따라 내려오면서 계속 누적되는 식으로...
2 번은 forward는 뼈대의 긴쪽 방향인데 이전 재귀에서의 결과가 넘어옵니다. 최초의 방향은 ?? 기준자세에서의 기준 방향이 아닐까 싶은데...
animation 행렬은 이 함수 외부에서 해당 트리 노드에 이미 지정되어 있어야 할 것이구요... 애니메이션 시퀀스의 현재 프레임에 대해 보간 등을 통해서 미리 결정되어 있어야 하는게 아닐지...
1번은... 현재 뼈대의 좌표계는 부모 뼈대의 좌표계를 기준으로 한다고 봐야 그 코드 전체가 성립되는 것 갈습니다. 계통구조를 따라 내려오면서 계속 누적되는 식으로...
2 번은 forward는 뼈대의 긴쪽 방향인데 이전 재귀에서의 결과가 넘어옵니다. 최초의 방향은 ?? 기준자세에서의 기준 방향이 아닐까 싶은데...
animation 행렬은 이 함수 외부에서 해당 트리 노드에 이미 지정되어 있어야 할 것이구요... 애니메이션 시퀀스의 현재 프레임에 대해 보간 등을 통해서 미리 결정되어 있어야 하는게 아닐지...