Changeset 2083


Ignore:
Timestamp:
02/05/07 13:26:30 (17 years ago)
Author:
gumbau
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoMesh.cpp

    r1070 r2083  
    44using namespace std; 
    55 
    6 //--------------------------------------------------------------------------- 
     6//------------------------------------------------------------------------- 
    77//      Cosntructor. 
    8 //--------------------------------------------------------------------------- 
     8//------------------------------------------------------------------------- 
    99Mesh::Mesh(): 
    1010        mVertexBuffer(0), mSubMeshCount(0), mSubMesh(0), hasSkeleton(false) 
     
    1919} 
    2020 
    21 //--------------------------------------------------------------------------- 
     21//------------------------------------------------------------------------- 
    2222//      Destroyer. 
    23 //--------------------------------------------------------------------------- 
     23//------------------------------------------------------------------------- 
    2424Mesh::~Mesh() 
    2525{ 
     
    2828} 
    2929 
    30 //--------------------------------------------------------------------------- 
     30//------------------------------------------------------------------------- 
    3131//      Copy constructor. 
    32 //--------------------------------------------------------------------------- 
     32//------------------------------------------------------------------------- 
    3333Mesh::Mesh(const Mesh &mesh) 
    3434{ 
     
    171171} 
    172172 
    173 //--------------------------------------------------------------------------- 
     173//------------------------------------------------------------------------- 
    174174//      Assignment operator. 
    175 //--------------------------------------------------------------------------- 
     175//------------------------------------------------------------------------- 
    176176Mesh &Mesh::operator =(const    Mesh &mesh) 
    177177{ 
     
    192192 
    193193        //      For each submesh. 
    194         for(size_t      i       =       0;      i < mesh.mSubMeshCount; i++) 
     194        for (size_t     i       =       0;      i < mesh.mSubMeshCount; i++) 
    195195        { 
    196196                mSubMesh[i].mSharedVertexBuffer                                 =       mesh.mSubMesh[i].mSharedVertexBuffer; //.false; 
     
    210210                } 
    211211 
    212                 for(size_t s = 0; s < mesh.mSubMesh[i].mVertexBuffer->mVertexCount; s++) 
     212                for (   size_t s = 0; 
     213                                        s < mesh.mSubMesh[i].mVertexBuffer->mVertexCount; 
     214                                        s++) 
    213215                { 
    214216                        mSubMesh[i].mVertexBuffer->mPosition[s].x = mesh.mSubMesh[i].mVertexBuffer->mPosition[s].x; 
     
    286288} 
    287289 
    288 //--------------------------------------------------------------------------- 
     290//------------------------------------------------------------------------- 
    289291//      Load mesh. 
    290 //--------------------------------------------------------------------------- 
     292//------------------------------------------------------------------------- 
    291293void Mesh::Load(Serializer &s) 
    292294{ 
     
    326328} 
    327329 
    328 //--------------------------------------------------------------------------- 
     330//------------------------------------------------------------------------- 
    329331//      Save mesh. 
    330 //--------------------------------------------------------------------------- 
     332//------------------------------------------------------------------------- 
    331333void Mesh::Save(Serializer &s) 
    332334{ 
     
    348350} 
    349351 
    350 //--------------------------------------------------------------------------- 
     352//------------------------------------------------------------------------- 
    351353//      Export to obj mesh. 
    352 //--------------------------------------------------------------------------- 
     354//------------------------------------------------------------------------- 
    353355void Mesh::exportToOBJ(char *fileName) 
    354356{ 
     357        size_t  vertex_count; 
     358 
     359        vertex_count    =       0; 
     360 
    355361        std::ofstream obj(fileName); 
    356          
     362 
    357363        obj << "begin" << std::endl; 
     364 
     365        for (size_t     j       =       0;      j < mVertexBuffer->mVertexCount;        j++) 
     366        {        
     367                obj     <<      "v " 
     368                        <<      mVertexBuffer->mPosition[j].x 
     369                        <<      " " 
     370                        <<      mVertexBuffer->mPosition[j].y 
     371                        <<      " " 
     372                        <<      mVertexBuffer->mPosition[j].z 
     373                        <<      " " 
     374                        <<      std::endl; 
     375        } 
    358376 
    359377        // Vertices. 
    360378        for (size_t     i       =       0;      i < mSubMeshCount;      i++) 
    361379        { 
    362                 for (size_t     j       =       0;      j < mSubMesh[i].mVertexBuffer->mVertexCount;    j++) 
    363                 {        
    364                         obj     <<      "v " 
     380                if (!mSubMesh[i].mSharedVertexBuffer) 
     381                { 
     382                        for (size_t     j       =       0;      j < mSubMesh[i].mVertexBuffer->mVertexCount;    j++) 
     383                        {        
     384                                obj     <<      "v " 
    365385                                        <<      mSubMesh[i].mVertexBuffer->mPosition[j].x 
    366386                                        <<      " " 
     
    370390                                        <<      " " 
    371391                                        <<      std::endl; 
     392                        } 
     393                } 
     394        } 
     395 
     396        //      Normals. 
     397        for (size_t     j       =       0;      j < mVertexBuffer->mVertexCount;        j++) 
     398        {        
     399                obj     <<      "vn " 
     400                        <<      mVertexBuffer->mNormal[j].x 
     401                        <<      " " 
     402                        <<      mVertexBuffer->mNormal[j].y 
     403                        <<      " " 
     404                        <<      mVertexBuffer->mNormal[j].z 
     405                        <<      " " 
     406                        <<      std::endl; 
     407        } 
     408 
     409        for (size_t     i       =       0;      i < mSubMeshCount;      i++) 
     410        { 
     411                if (!mSubMesh[i].mSharedVertexBuffer) 
     412                { 
     413                        for (size_t     j       =       0;      j < mSubMesh[i].mVertexBuffer->mVertexCount;    j++) 
     414                        {        
     415                                obj     <<      "vn " 
     416                                        <<      mSubMesh[i].mVertexBuffer->mNormal[j].x 
     417                                        <<      " " 
     418                                        <<      mSubMesh[i].mVertexBuffer->mNormal[j].y 
     419                                        <<      " " 
     420                                        <<      mSubMesh[i].mVertexBuffer->mNormal[j].z 
     421                                        <<      " " 
     422                                        <<      std::endl; 
     423                        } 
    372424                } 
    373425        } 
     
    378430                for (size_t     j = 0;  j < mSubMesh[i].mIndexCount;    j       =       j + 3) 
    379431                {        
    380                         obj     <<      "f " 
    381                                         <<      mSubMesh[i].mIndex[j] + 1 
    382                                         <<      " "      
    383                                         <<      mSubMesh[i].mIndex[j + 1] + 1 
    384                                         <<      " " 
    385                                         <<      mSubMesh[i].mIndex[j + 2] + 1 
    386                                         <<      std::endl; 
    387                 } 
     432                        int a = mSubMesh[i].mIndex[j] + 1 + vertex_count; 
     433                        int b = mSubMesh[i].mIndex[j+1] + 1 + vertex_count; 
     434                        int c = mSubMesh[i].mIndex[j+2] + 1 + vertex_count; 
     435                        obj     <<      "f " << a       <<      "//" << a << " "         
     436                                                                         <<     b       <<      "//" << b << " "         
     437                                                                         <<     c       <<      "//" << c << " "         
     438                                <<      std::endl; 
     439 
     440                } 
     441                vertex_count    +=      mSubMesh[i].mVertexBuffer->mVertexCount; 
    388442        } 
    389443 
    390444        obj     <<      "end"   <<      std::endl; 
    391          
     445 
    392446        obj.close(); 
    393447} 
    394448 
    395 //--------------------------------------------------------------------------- 
     449//------------------------------------------------------------------------- 
    396450// Transform to shared vertex mesh. 
    397 //--------------------------------------------------------------------------- 
     451//------------------------------------------------------------------------- 
    398452Mesh *Mesh::toSharedVertex()  
    399453{ 
     
    536590        } 
    537591 
    538         /* 
     592 
    539593        //      Copy mesh bones. 
    540594        if (!mBones.empty()) 
     
    545599                } 
    546600        } 
    547         */ 
    548601 
    549602        return mesh; 
Note: See TracChangeset for help on using the changeset viewer.