ID3DXAnimationController* m_pAnimController;一个Track也就是一个AnimationSet。
HRESULT Init( LPCSTR pName, LPDIRECT3DDEVICE9 pDevice )
{
D3DXLoadMeshHierarchyFromX( pName, D3DXMESH_MANAGED,pDevice,&m_Alloc, NULL, &m_pFrameRoot, &m_pAnimController );SetupBoneMatrixPointers( m_pFrameRoot ) ;
return S_OK;}
这样之后m_pAnimController就可以开始工作了。
1、获得动画集数目:m_pAnimController->GetNumAnimationSets();
2、 获得给定索引的动画集:LPD3DXANIMATIONSET pAnimSet = NULL;m_pAnimController->GetAnimationSet( index, &pAnimSet );
3、获得动画集的名称:pAnimSet->GetName();
4、获取 当前动画总播放时间:double m_lfTotalFrameTime;m_lfTotalFrameTime = pAnimSet->GetPeriod();
5、通过名字得到动画集:LPD3DXANIMATIONSET pAnimSet = NULL;m_pAnimController->GetAnimationSetByName( pName, &pAnimSet );
6、改变动画集:DWORD dwNewTrack = 0;
m_pAnimController->SetTrackAnimationSet( dwNewTrack, pAnimSet );
m_pAnimController->SetTrackEnable( dwNewTrack, TRUE );
以下多动画集渲染
LPD3DXANIMATIONSET pAnimSet;for(DWORD i=0;i<<span style="font-family: Arial;">m_pAnimController->GetNumAnimationSets()</span>;i++){m_pAnimController->GetAnimationSet(i,&pAnimSet);DWORD test = 0;test = pAnimSet->GetPeriod();strcpy(strTempName,pAnimSet->GetName());if(strcmp(strAnimName,strTempName)==0) {m_pAnimController->SetTrackAnimationSet(0,pAnimSet); //设置m_pAnimController->ResetTime();//重置return true;}}
,也会有想更换的念头。旅行,正好提供了这样一个机会,