본문 바로가기

프로그래밍/DirectX

3D Animation 이론 1

SRT - Scale, Rotation, Translation

Skinning 장점
 : 정점의 뼈 가중치를 갖는 메쉬가 비선형 방식으로 구부러진 것 처럼 부드럽게 변형되는 것 처럼 보일 수 있다
-> 더 자연스러워 보여진다

프레임 구조에는 bone 구조, 메쉬 구조, bone과 메쉬 정점의 관계를 가지는 데이터들이 있다

메쉬 데이터는 노말, 텍스쳐 좌표와 같은 다른 데이터와 함께 루트 프레임에 상대적인 정점의 배열로 구성된다

정점의 pos는 주로 pose나 rest pos에 있다
애니메이션 메쉬는 주로 쉐이더에서 렌더한다

Frame TransformationMatrix는 애니메이션 배열을 사용하는 Render Cycle로 채워져 있다

애니메이션 컨트롤러 오브젝트나 함수를 이용해서 Transform을 계산하고 각 프레임의 TransformationMatrix에 결과를 저장한다

이 matrix는 정점들을 bone의 레퍼런스 프레임에서 부모의 bone의 애니메이션화된 레퍼런스 프레임으로 변환해준다

애니메이션 중 정점이 bone에 의해 올바르게 변형되도록 하려면 루트 프레임의 pose 위치에서 bone의 pose 프레임으로 변형되야 한다

pose의 pos에서 정점을 bone 공간으로 변환하는 것을 offset 행렬이라고 한다

메쉬가 루트 프레임 이외의 부모 프레임에 있는 경우, 그 메쉬는 부모 프레임에서 루트 프레임 공간으로 변형되어야만 pose 위치에서 변형될 수 있다.  각 bone 프레임에는 ToRoot 행렬이 있다. bone space에서 루트 프레임 공간으로 변환을 해야 하는데 역행렬을 곱해주면 변환을 할 수 있다

Root-Frame은 다른 모든 bone이 계층적으로 parent가 되는 프레임이다. 모든 bone은 부모 프레임 또는 부모의 부모 프레임(루트 프레임)을 갖는다

루트 프레임을 Transform하면 전체 계층이 Transform된다

'프로그래밍 > DirectX' 카테고리의 다른 글

DirectX 11 기초  (0) 2019.03.28
3D 애니메이션 이론 2  (0) 2019.03.26
Directx11 렌더링 파이프라인  (0) 2019.03.22
Rasterizer  (0) 2019.03.04
Light / Rendering  (0) 2019.02.28