나의 이해를 돕기 위해 이 내용 저 내용을 다룬다.... bone based animation , skeketal animation 계층적 애니메이션 방식을 좀 더 범용적으로 발전시킨 것이다. 인간의 몸 속에 뼈가 있듯, 3 차원적으로 구성된 뼈대를 만들고 이 뼈대에 메시를 자식으로 붙이는 방식이다. 뼈대는 메시가 아니므로 화면에 렌더는 되지 않는다. 동일한 뼈대 구조를 가진 오브젝트들의 메시만 뼈대에 적용하면 되기 때문에 메모리절약, 다양한 응용 가능하다. 본은 D3DXFRAME 구조체를 통해 기술되며 이 구조체를 통하여 완전한 본 게층 구조 구성이 가능하다. 해당되는 멤버들에 대하여 조금 살펴보자면 //변환 프레임 계층 내의 변환 프레임을 캡슐화한다. struct D3DXFRAME{ LPSTR Nam..
=>.x 파일에 대한 우리가 x 파일로 메시를 로드하려면 D3DXLoadMeshFromX() 함수로 간단하게 로드 가능하지만 애니메이션을 위한 로드작업은 간단하지 않다... 그래도 한번 만들어놓으면 변경할것없이 간단하게 사용이 가능하게 된다. .x 파일에 있는 본 계층 구조부터 로드하기 위한 작업이며 기존에 D3D에 있는 ID3DXAllocateHierarchy 인터페이스를 상속받고 확장하면 마침내 D3DXLoadMeshHierarchyFromX 를 사용할 수있다. D3DXLoadMeshHierarchyFromX() .x 파일을 읽어오는 D3DX의 유틸리티 함수이다. cAllocateHierarchy 클래스로 만들어낸 객체의 포인터를 받아 실제 프레임정보, 메시컨테이너를 만들때 이곳에 있는 함수를 사용한..
스킨정보, 본 메시를 이용하여 스킨을 만드는것 계층구조 + 뼈대 애니메이션을 적용할때 관절부를 끊어먹지 않기위한 방법이다. 주로 가중치기법이 많이 사용됨 메시를 구성하는 각각의 정점이 뼈대로부터 얼마만큼의 힘을 받는가를 계산하여 적용해주는것 뼈대의 가중치 본의 중량 (weight) 본 계층 구조에서 메시를 구성하는 정점은 하나 또는 그 이상의 본과 링크된다. 정점의 렌더링 좌표는 해당 정점에 링크된 각각의 본이 그 정점에 어느 정도 영향을 미치는가를 나타내는것이 가중치(중량, weight) 개념 한 정점에 링크된 모든 본들의 중량의 합은 1.0이다. 정점의 위치를 결정짓는 최종변환 행렬은 그 정점과 링크된 모든 본들의 중량, 변환 행렬을 곱한것들의 합 애니메이션 되는 객체의 스킨을 구성하는 정점의 위치가..
D3DXLoadMeshFromX function Loads a mesh from a DirectX .x file. Syntax C++ HRESULT D3DXLoadMeshFromX( _In_ LPCTSTR pFilename, _In_ DWORD Options, _In_ LPDIRECT3DDEVICE9 pD3DDevice, _Out_ LPD3DXBUFFER *ppAdjacency, _Out_ LPD3DXBUFFER *ppMaterials, _Out_ LPD3DXBUFFER *ppEffectInstances, _Out_ DWORD *pNumMaterials, _Out_ LPD3DXMESH *ppMesh ); Parameters pFilename [in] Type: LPCTSTR Pointer to a str..
이미지를 불러들이기 위한 여러가지 파일포맷들 중 x 파일이 있다. 템플릿 지향의 포맷이며, 메쉬, 텍스쳐, 애니메이션, 사용자 정의 가능한 개체 등을 저장 할 수 있다. 애니메이션 세트를 지우너하고 있기 때문에 리얼타임에 재생하기 위해서 사전 정의된 패스를 저장할 수 있다. 등등등 많은 설명이 있지만 무슨말인지 모르겠다. 여튼 워드 프로세서 같은 프로그램으로 읽을 수 있다. 대부분의 3d 모델러를 이용해서도 메쉬데이터들을 .x 파일로 변환이 가능하며 DirectX 가 이 파일의 포맷을 정의하고 있으므로 우리는 DirectX에 있는 함수들을 이용하여 x파일을 바로 읽거나 저장할 수있다. 오브젝트파일이나 기타등등 처럼 우리가 직접 파싱하는 코드를 작성하지 않아도 된다. 메쉬 파일을 읽어오는 함수 D3DXLo..