버스를 타고 가는 사람
사람 : 자체 애니메이션
버스 : 버스 애니메이션
버스안에 타고 있는 사람 = 자체 애니메이션 * 버스 에니메이션
최종애니메이션 행렬 = 자체 애니메이션 행렬 * 부모 애니메이션 행렬
부모 애니메이션 행렬 = S * R * T;
WM = LV * XSM * YSM * ZSM * XRM * YRM * ZRM * XSM * YSM * ZSM;
PARENT MATRIX = PS * PR * PT;
WV = LV * XSM * YSM * ZSM * XRM * YRM * ZRM * XSM * YSM * ZSM *
PXSM * PYSM * PZSM * PXRM * PYRM * PZRM * PXSM * PYSM * PZSM *
지구 PXSM * PYSM * PZSM * PXRM * PYRM * PZRM * PXSM * PYSM * PZSM *
태양 PXSM * PYSM * PZSM * PXRM * PYRM * PZRM * PXSM * PYSM * PZSM;
WV = LV * 최종 애니메이션 행렬
월드 정점 => 로컬 정점 * 월드 행렬
윌드 행렬 => 자신의 행렬 * 부모 행렬
자신의 행렬 = 월드 행렬 * 역행렬( 부모 행렬 );
( 자체 행렬 * 부모 행렬 )
상위 행렬( 지구 2차 부모 행렬 * 태양 3차 부모 행렬 )
VB : Local Vertex
월드 변환 : World Matrix
WorldMatrix = Local Vertex * WorldMatrix
이동 변환
WorldMatrix = Local Vertex * Trans Matrix( X Trans * Y Trans * Z Trans );
회전 변환
WorldMatrix = Local Vertex * Rotation Matrix( X Rot * Y Rot * Z Rot );
신축 변환
WorldMatrix = Local Vertex * Scale Matrix( X Scl * Y Scl * Z Scl );
WorldMatrix = Local Vertex * S * R * T;
WM = LV * XSM * YSM * ZSM * XRM * YRM * ZRM * XSM * YSM * ZSM;
변화없는 데이터 = Local Vertex;
변화있는 데이터 = S, R, T
Scale : 0 ~ 100 프레임 1 ~ 3 배 적용된다면
시간단위로 새로운 월드행렬을 계산해서 적용할 것이다.
0 ~ 100 Frame
scale 1배 1.0배 3배
_11, _22, _33 => 1.0f 1.0f 2배
0 20 40 60 80 100
1.0f 1.2f 1.4f 1.6f 1.8f 2.0f
1.0, 1.1, 1.2~~~~~~~~~~
0 ~ 100 총 3.3초
0 1500 3000
1.0 1.5f 2.0f
엔진에서 프레임 1000프레임일 경우
3300 프레임 ( 3.3초일 경우에 )
뷰 변환
투영 변환
뷰포트 변환
'DirectX > 3D' 카테고리의 다른 글
맥스플러그인을 위해서 우리가 반드시 알아야 할 것들을 한번 (0) | 2010.09.16 |
---|---|
ASE 파서 파싱 (1) | 2010.07.27 |
Directx의 파이프라인을 따라 구현 (1) | 2010.07.19 |
ASE 관련 서적 ASE 에니메이션 오브젝트 등등 (0) | 2010.07.19 |
ASE 파일을 이용한 Bone Animation (1) (0) | 2010.07.19 |