Upload
mingeun-park
View
1.311
Download
9
Embed Size (px)
Citation preview
캐릭터 애니메이션윈도우 게임 프로그래밍
박민근
[KGC2010] M2 프로젝트의 절차적 리깅 시스템
애니메이션
1.Vertex Animation
2.Hierarchical Animation ( 계층적 애니메이션 )
3.Bone Animation, Skeletal Animation
4.Skinning
5.Inverse Kinematics
Vertex Animation각각의 버텍스를 직접 이동 = 모핑 (morphing)
Hierarchy Animation계층 구조를 만들어 , 부모의 이동이 자식 노드에게 영향을 준다모든 애니메이션 구조의 기본이 된다 .
Skeletal Animation뼈대 (Bone) 을 중심으로 각 버텍스가 어느 뼈대에 붙어있는지 ( 가중치 ) 정의 되어 있고 ,
뼈대를 움직여서 애니메이션을 한다 .
뼈대는 렌더링 되지 않는 모델링에 정의 되어 있는 계층적 자료 구조이다 .
Skeletal Animation
Bone 이 애니메이션 하면 , Bone 에 영향을 받는 Vertex 들도 따라서 이동 한다 .
Skeletal Animation본의 계층 구조가 같으면 , 다른 모델에도 동일한 애니메이션을 적용 가능
Skinning
http://cybershin.tistory.com/category/API.%20Programming/DirectX9
정점에 서로 다른 Bone 에 대한 가중치를 주고 보간 한다 .
Skinning
예를 들어 , 영향을 받는 본의 개수가 2 개일 때
Vertex[39] : Bone 7(0.3), Bone 8(0.7)
이런식으로 Mesh 에 저장되어 있다 .
Inverse KinematicLeaf Bone 의 위치가 결정됨에 따라서 , 역으로 부모 본들의 위치가 실시간으로 변경되는 애니메이션
애니메이션 블렌딩2 개 이상의 애니메이션을 섞는 것 ( 블렌딩 )
상하체 애니메이션 블렌딩 애니메이션 전환 블렌딩
[KGC2010] M2 프로젝트의 절차적 리깅 시스템
[KGC2010] M2 프로젝트의 절차적 리깅 시스템
DirectX Skinned Mesh
Skinning Animation 구현
1.SW 계산으로 구현 (CPU)
2.Fixed-Pipeline 사용
3.Fixed-Pipeline Index 사용 ( 매트릭스 팔레트 )
4.셰이더 사용
D3DXFRAMESkeletal 의 Bone 구조체
D3DXMESHCONTAINERSkinned Mesh 의 정보를 담는 구조체
ID3DXAllocateHierarchy각 Frame 과 MeshContainer 를 할당하고 해제하는 인터페이스 구현
1. Shader File 로딩
2. Mesh Hierarchy 로딩
D3DXLoadMeshHierarchyFromX
위 함수를 호출하면 , CAllocateHierarchy 에 구현된 함수들이 호출 된다 .
SetupBoneMatrixPointers
Mesh 에 정의된 BoneMatrix 들을 세팅한다
3. CreateMeshContainerMesh Data 를 로딩하고 , 생성하는 함수
4. GenerateSkinnedMesh
5. OnFrameMove
6. UpdateFrameMatrices
7. OnFrameRender셰이더에 ViewProj Matrix 세팅
8. DrawMeshContainer
8. DrawMeshContainer
9. SkinnedMesh.fx
Skinning
예를 들어 , 영향을 받는 본의 개수가 2 개일 때
Vertex[39] : Bone 7(0.3), Bone 8(0.7)
이런식으로 Mesh 에 저장되어 있다 .
10. SkinnedMesh.fx
참고자료
3D 게임 프로그래밍 – 애니메이션 챕터
DX9 게임 프로그래밍 – 애니메이션 챕터
게임 프로그래밍의 정석 – 애니메이션 챕터