Пока вы редактировали анимацию и воспроизводили ее, но я не показал вам как визуализировать объекты, составляющие анимируемую сцену. В следующем фрагменте кода приведена большая часть функции визуализации, необходимой для отображения сцены:
// Очистка вторичного буфера синим цветом g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_RGBA(200, 250, 255, 255), 1.0f, 0); // Начало сцены g_pd3dDevice->BeginScene(); // Установка материала по умолчанию g_pd3dDevice->SetMaterial(&g_mtrlDefault); // Установка режима сплошной заливки g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); // Визуализация пола vDraw3DObject(D3DXVECTOR3( 0.0, 0.0, 0.0) , D3DXVECTOR3(200.0, 200.0, 200.0), D3DXVECTOR3( 90.0, 0.0, 0.0), 0); // Визуализация трехмерных объектов if(animTest.m_iNumFrames && animTest.m_iNumObjects) { for(int i = 0; i < animTest.m_iNumObjects; i++) { // Объекты не являющиеся текущими отображаем в каркасном режиме if(i != g_iCurObj) { g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME); } // Текущий объект отображаем в режиме сплошной заливки else { g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); } // Установка текущего кадра iCFrame = animTest.m_iCurFrame; // Визуализируем объекты, используя информацию кадра // хранящуюся в объекте анимации animTest.m_objObject[i]->vDisplayXYZ( animTest.m_keyFrames[i][iCFrame]->m_vecTrans.x, animTest.m_keyFrames[i][iCFrame]->m_vecTrans.y, animTest.m_keyFrames[i][iCFrame]->m_vecTrans.z, animTest.m_keyFrames[i][iCFrame]->m_vecRot.x, animTest.m_keyFrames[i][iCFrame]->m_vecRot.y, animTest.m_keyFrames[i][iCFrame]->m_vecRot.z, animTest.m_keyFrames[i][iCFrame]->m_vecScale.x, animTest.m_keyFrames[i][iCFrame]->m_vecScale.y, animTest.m_keyFrames[i][iCFrame]->m_vecScale.z); // Анимация объекта if(g_iAnimActive) { animTest.m_lCurTime++; // Переход к следующему кадру if(animTest.m_lCurTime >= animTest.m_keyFrames[i] [animTest.m_iCurFrame]->m_lTimeDelay) { animTest.m_iCurFrame++; bFrameChanged = 1; animTest.m_lCurTime = 0; // Сброс счетчика кадров if(animTest.m_iCurFrame >= animTest.m_iNumFrames) { animTest.m_iCurFrame = 0; } } } } }
