一個Track就是一個AnimationSet
ID3DXAnimationController* m_pAnimController;
HRESULT CSkinMesh::Init( LPCSTR pName, LPDIRECT3DDEVICE9 pDevice )
{
m_pDevice = pDevice;
HRESULT hr;
V_RETURN( D3DXLoadMeshHierarchyFromX( pName, D3DXMESH_MANAGED, m_pDevice,
&m_Alloc, NULL, &m_pFrameRoot, &m_pAnimController ) );
// calculate each mesh 's bone matrix array, for efficiency look up .
V_RETURN( SetupBoneMatrixPointers( m_pFrameRoot ) );
return S_OK;
}
這樣m_pAnimController就能開始工作了
得到動畫集數目:
m_pAnimController->GetNumAnimationSets();
得到給定索引的動畫集:
LPD3DXANIMATIONSET pAnimSet = NULL;
m_pAnimController->GetAnimationSet( index, &pAnimSet );
得到動畫集的名稱:
pAnimSet->GetName();
/// 當前動畫總播放時間
double m_lfTotalFrameTime;
m_lfTotalFrameTime = pAnimSet->GetPeriod();
通過名字得到動畫集:
LPD3DXANIMATIONSET pAnimSet = NULL;
m_pAnimController->GetAnimationSetByName( pName, &pAnimSet );
改變動畫集:
DWORD dwNewTrack = 0;
m_pAnimController->SetTrackAnimationSet( dwNewTrack, pAnimSet );
m_pAnimController->SetTrackEnable( dwNewTrack, TRUE );
| ID3DXAnimationController::SetTrackAnimationSet |
Applies the animation set to the specified track. |