Exemplo n.º 1
0
void Face::ExtractMeshes(D3DXFRAME *frame) {
    if (frame == NULL)
        return;

    //Extract Mesh
    if (frame->pMeshContainer != NULL) {
        ID3DXMesh *mesh = frame->pMeshContainer->MeshData.pMesh;

        if (frame->Name != NULL) {
            if (strcmp(frame->Name, "Base") == 0) {      //Base Mesh
                m_pBaseMesh = mesh;
                mesh->AddRef();
            }
            else if (strcmp(frame->Name, "Blink") == 0) { //Blink Mesh
                m_pBlinkMesh = mesh;
                mesh->AddRef();
            }
            else if (strcmp(frame->Name, "Emotion") == 0) { //Emotion Mesh
                m_emotionMeshes.push_back(mesh);
                mesh->AddRef();
            }
            else if (strcmp(frame->Name, "Speech") == 0) { //Speech Mesh
                m_speechMeshes.push_back(mesh);
                mesh->AddRef();
            }
        }
    }

    //Check siblings and children
    ExtractMeshes(frame->pFrameSibling);
    ExtractMeshes(frame->pFrameFirstChild);
}