bool ImporterOBJ::ProcessFile() { bool result; result = ReadInfileAndElementCounts(); if(!result) return false; result = FillMeshData(); if(!result) return false; result = MakeScene(); if(!result) return false; return true; }
bool CMayaMesh::Save( FILE * pFile ) { if ( NULL == pFile ) { return false; } m_bValid &= ExtractVertices(); m_bValid &= ExtractUVSets(); /*m_bValid &=*/ ExtractSurfaces(); m_bValid &= FillMeshData(); // Настраиваем ссылки ( для удобства чтения кода ) const uint & nComponentCount = m_MeshData.tHeader.nComponentCount; const uint & nVertexCount = m_MeshData.tHeader.nVertexCount; const uint & nVertexSize = m_MeshData.tHeader.nVertexSize; const uint & nSurfaceCount = m_MeshData.tHeader.nSurfCount; //-------------------------------------------------------------------------- // Tip: Сохранение заголовка объекта //-------------------------------------------------------------------------- TObjectHdr tHeader; FillObjectHeader( &tHeader ); //tHeader.szParent[ 0 ] = 0; tHeader.nShapeBlockSize = 0; if ( m_bValid ) { tHeader.nShapeBlockSize = sizeof( TMeshData::THeader ) + nComponentCount * sizeof( TVertexComponent ) + nVertexCount * nVertexSize + nSurfaceCount * sizeof( TSurface::THeader ); } // Пишем заголовок object'а fwrite( &tHeader, sizeof( TObjectHdr ), 1, pFile ); if ( !m_bValid ) { return false; } //-------------------------------------------------------------------------- // Tip: Сохранение mesh'а //-------------------------------------------------------------------------- // Пишем заголовок mesh'а fwrite( &m_MeshData.tHeader, sizeof( TMeshData::THeader ), 1, pFile ); // Пишем компоненты вершины fwrite( m_MeshData.pComponents, nComponentCount * sizeof( TVertexComponent ), 1, pFile ); // Пишем массив вершин fwrite( m_MeshData.pVertices, nVertexCount * nVertexSize, 1, pFile ); // Записываем каждый материал ( surface ) for ( uint n = 0; n < nSurfaceCount; ++n ) { TSurface & tSurf = m_MeshData.pSurfaces[ n ]; // Пишем заголовок surface'а fwrite( &tSurf.tHeader, sizeof( TSurface::THeader ), 1, pFile ); // Пишем индексы вершин fwrite( tSurf.pIndices, tSurf.tHeader.nIndexCount * tSurf.tHeader.nIndexSize, 1, pFile ); } return true; }