Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7216 in orxonox.OLD for branches/std/src/world_entities/terrain.cc


Ignore:
Timestamp:
Mar 12, 2006, 8:54:30 AM (18 years ago)
Author:
bensch
Message:

orxonox/std:: compile and run again, with many more std::strings….

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/std/src/world_entities/terrain.cc

    r7207 r7216  
    4848    this->loadParams(root);
    4949
    50 //  if (this->model != NULL)
    51     //this->ssp = new SpatialSeparation((Model*)this->model, 10.0f);
     50  //  if (this->model != NULL)
     51  //this->ssp = new SpatialSeparation((Model*)this->model, 10.0f);
    5252}
    5353
     
    6464
    6565  if (!strstr(fileName, ".obj") || !strstr(fileName, ".OBJ") )
    66     {
    67       this->loadModel(fileName);
    68     }
     66  {
     67    this->loadModel(fileName);
     68  }
    6969  else
    70     {
    71       // load the hightMap here.
    72     }
     70  {
     71    // load the hightMap here.
     72  }
    7373}
    7474
     
    9898
    9999  if(this->heightMap)
    100         delete heightMap;
     100    delete heightMap;
    101101}
    102102
     
    122122
    123123  LoadParam(root, "scale", this, Terrain, setScale)
    124       .describe("The scale in x,y,z direction");
     124  .describe("The scale in x,y,z direction");
    125125
    126126  LoadParam(root, "texture", this, Terrain, loadTexture)
    127       .describe("The name of the Texture for this heightMap");
     127  .describe("The name of the Texture for this heightMap");
    128128
    129129  LoadParam(root, "vegetation", this, Terrain, loadVegetation)
    130       .describe("the fileName of the vegetation, that should be loaded onto this terrain. (must be relative to the data-dir)") ;
     130  .describe("the fileName of the vegetation, that should be loaded onto this terrain. (must be relative to the data-dir)") ;
    131131
    132132  LoadParam(root, "height-map", this, Terrain, loadHeightMap)
    133       .describe("The HeightMap, splitted into two strings seperated by ','. 1: HeighMap, 2: ColorMap");
     133  .describe("The HeightMap, splitted into two strings seperated by ','. 1: HeighMap, 2: ColorMap");
    134134
    135135}
     
    140140}
    141141
    142 void Terrain::loadHeightMap(const char* heightMapFile, const char* colorMap)
     142void Terrain::loadHeightMap(const std::string& heightMapFile, const std::string& colorMap)
    143143{
    144144  if (this->heightMap != NULL)
     
    151151
    152152  this->heightMap = new HeightMap(hmName, hmColorName);
    153 //   heightMap->scale(Vector(43.0f,4.7f,43.0f));
     153  //   heightMap->scale(Vector(43.0f,4.7f,43.0f));
    154154  heightMap->scale(this->terrainScale);
    155155  heightMap->setAbsCoor(this->getAbsCoor());
     
    158158
    159159
    160 void Terrain::loadTexture(const char* textureName)
    161 {
    162    PRINTF(0)("Load texture: %s\n", textureName);
    163 
    164    heightMapMaterial->setDiffuse(1.0,1.0,1.0);
    165    heightMapMaterial->setAmbient(1.0,1.0,1.0 );
    166    heightMapMaterial->setSpecular(1.0,1.0,1.0);
    167    heightMapMaterial->setShininess(.5);
    168    heightMapMaterial->setTransparency(1.0);
    169 
    170    heightMapMaterial->setDiffuseMap(textureName);
    171   heightMapMaterial->setAmbientMap(textureName);
    172   heightMapMaterial->setSpecularMap(textureName);
     160void Terrain::loadTexture(const std::string& textureName)
     161{
     162  PRINTF(4)("Load texture: %s\n", textureName.c_str());
     163
     164  heightMapMaterial->setDiffuse(1.0,1.0,1.0);
     165  heightMapMaterial->setAmbient(1.0,1.0,1.0 );
     166  heightMapMaterial->setSpecular(1.0,1.0,1.0);
     167  heightMapMaterial->setShininess(.5);
     168  heightMapMaterial->setTransparency(1.0);
     169
     170  heightMapMaterial->setDiffuseMap(textureName);
     171  //  heightMapMaterial->setAmbientMap(textureName);
     172  //  heightMapMaterial->setSpecularMap(textureName);
    173173}
    174174
     
    202202                this->getAbsCoor ().z);
    203203  /* rotate */
    204  // Vector tmpRot = this->getAbsDir().getSpacialAxis();
     204  // Vector tmpRot = this->getAbsDir().getSpacialAxis();
    205205  //glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
    206206
     
    224224
    225225
    226 /*
    227   glMatrixMode(GL_MODELVIEW);
    228   glPushMatrix();
    229   glLoadIdentity();
    230   Vector camera =   State::getCameraNode()->getAbsCoor(); // Go on here ..........!!!
    231 
    232   float height =    heightMap->getHeight(camera.x, camera.z);
    233 
    234   glEnable (GL_COLOR_MATERIAL) ;
    235   glBegin(GL_QUADS);            // Draw The Cube Using quads
    236   glColor3f(0.0f,1.0f,0.0f);  // Color Blue
    237   glVertex3f(camera.x + 63.0f,Terrain->getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f);      // Top Right Of The Quad (Top)
    238   glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f);      // Top Left Of The Quad (Top)
    239   glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f);      // Bottom Left Of The Quad (Top)
    240   glVertex3f(camera.x+ 63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f);      // Bottom Right Of The Quad (Top)
    241   glEnd();                      // End Drawing The Plan
    242 
    243   glPopMatrix();*/
    244 
    245 
    246 /* THIS IS ONLY FOR DEBUGGING INFORMATION */
     226  /*
     227    glMatrixMode(GL_MODELVIEW);
     228    glPushMatrix();
     229    glLoadIdentity();
     230    Vector camera =   State::getCameraNode()->getAbsCoor(); // Go on here ..........!!!
     231
     232    float height =    heightMap->getHeight(camera.x, camera.z);
     233
     234    glEnable (GL_COLOR_MATERIAL) ;
     235    glBegin(GL_QUADS);            // Draw The Cube Using quads
     236    glColor3f(0.0f,1.0f,0.0f);  // Color Blue
     237    glVertex3f(camera.x + 63.0f,Terrain->getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f);      // Top Right Of The Quad (Top)
     238    glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f);      // Top Left Of The Quad (Top)
     239    glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f);      // Bottom Left Of The Quad (Top)
     240    glVertex3f(camera.x+ 63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f);      // Bottom Right Of The Quad (Top)
     241    glEnd();                      // End Drawing The Plan
     242
     243    glPopMatrix();*/
     244
     245
     246  /* THIS IS ONLY FOR DEBUGGING INFORMATION */
    247247  if (this->ssp != NULL)
    248248    this->ssp->drawQuadtree();
     
    254254  // if the terrain is the Terrain of Dave
    255255  if (debugTerrain == TERRAIN_DAVE)
    256     {
    257       objectList = glGenLists(1);
    258       glNewList (objectList, GL_COMPILE);
    259 
    260       glColor3f(1.0,0,0);
    261 
    262       int sizeX = 100;
    263       int sizeZ = 80;
    264       float length = 1000;
    265       float width = 200;
    266       float widthX = float (length /sizeX);
    267       float widthZ = float (width /sizeZ);
    268 
    269       float height [sizeX][sizeZ];
    270       Vector normal_vectors[sizeX][sizeZ];
    271 
    272 
    273       for ( int i = 0; i<sizeX-1; i+=1)
    274         for (int j = 0; j<sizeZ-1;j+=1)
    275           //height[i][j] = rand()/20046 + (j-25)*(j-25)/30;
     256  {
     257    objectList = glGenLists(1);
     258    glNewList (objectList, GL_COMPILE);
     259
     260    glColor3f(1.0,0,0);
     261
     262    int sizeX = 100;
     263    int sizeZ = 80;
     264    float length = 1000;
     265    float width = 200;
     266    float widthX = float (length /sizeX);
     267    float widthZ = float (width /sizeZ);
     268
     269    float height [sizeX][sizeZ];
     270    Vector normal_vectors[sizeX][sizeZ];
     271
     272
     273    for ( int i = 0; i<sizeX-1; i+=1)
     274      for (int j = 0; j<sizeZ-1;j+=1)
     275        //height[i][j] = rand()/20046 + (j-25)*(j-25)/30;
    276276#ifdef __WIN32__
    277           height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5;
     277        height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5;
    278278#else
    279       height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5;
     279        height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5;
    280280#endif
    281281
    282       //Die Huegel ein wenig glaetten
    283       for (int h=1; h<2;h++)
    284         for (int i=1;i<sizeX-2 ;i+=1 )
    285           for(int j=1;j<sizeZ-2;j+=1)
    286             height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4;
    287 
    288       //Berechnung von normalen Vektoren
    289       for(int i=1;i<sizeX-2;i+=1)
    290         for(int j=1;j<sizeZ-2 ;j+=1)
    291           {
    292             Vector v1 = Vector (widthX*(1),      height[i][j],      widthZ*(j) );
    293             Vector v2 = Vector (widthX*(i-1),    height[i-1][j],    widthZ*(j));
    294             Vector v3 = Vector (widthX*(i),      height[i][j+1],    widthZ*(j+1));
    295             Vector v4 = Vector (widthX*(i+1),    height[i+1][j],    widthZ*(j));
    296             Vector v5 = Vector (widthX*(i),      height[i][j-1],    widthZ*(j-1));
    297 
    298             Vector c1 = v2 - v1;
    299             Vector c2 = v3 - v1;
    300             Vector c3=  v4 - v1;
    301             Vector c4 = v5 - v1;
    302             Vector zero = Vector (0,0,0);
    303             normal_vectors[i][j]=c1.cross(v3-v5)+c2.cross(v4-v2)+c3.cross(v5-v3)+c4.cross(v2-v4);
    304             normal_vectors[i][j].normalize();
    305           }
    306 
    307       glBegin(GL_QUADS);
    308       int snowheight=3;
    309       for ( int i = 0; i<sizeX; i+=1)
    310         for (int j = 0; j<sizeZ;j+=1)
    311           {
    312             Vector v1 = Vector (widthX*(i),      height[i][j]-20,       widthZ*(j)  -width/2);
    313             Vector v2 = Vector (widthX*(i+1),    height[i+1][j]-20,     widthZ*(j)  -width/2);
    314             Vector v3 = Vector (widthX*(i+1),    height[i+1][j+1]-20,   widthZ*(j+1)-width/2);
    315             Vector v4 = Vector (widthX*(i),      height[i][j+1]-20,     widthZ*(j+1)-width/2);
    316             float a[3];
    317             if(height[i][j]<snowheight){
    318               a[0]=0;
    319               a[1]=1.0-height[i][j]/10-.3;
    320               a[2]=0;
    321               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    322             }
    323             else{
    324               a[0]=1.0;
    325               a[1]=1.0;
    326               a[2]=1.0;
    327               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    328 
    329             }
    330             glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z);
    331             glVertex3f(v1.x, v1.y, v1.z);
    332             if(height[i+1][j]<snowheight){
    333               a[0]=0;
    334               a[1] =1.0-height[i+1][j]/10-.3;
    335               a[2]=0;
    336               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    337             }
    338             else{
    339               a[0]=1.0;
    340               a[1]=1.0;
    341               a[2]=1.0;
    342               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    343 
    344             }
    345             glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z);
    346             glVertex3f(v2.x, v2.y, v2.z);
    347             if(height[i+1][j+1]<snowheight){
    348               a[0]=0;
    349               a[1] =1.0-height[i+1][j+1]/10-.3;
    350               a[2]=0;
    351               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    352             }
    353             else{
    354               a[0]=1.0;
    355               a[1]=1.0;
    356               a[2]=1.0;
    357               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    358 
    359 
    360             }
    361             glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z);
    362             glVertex3f(v3.x, v3.y, v3.z);
    363             if(height[i][j+1]<snowheight){
    364               a[0]=0;
    365               a[1] =1.0-height[i+1][j+1]/10-.3;
    366               a[2]=0;
    367               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    368             }
    369             else{
    370               a[0]=1.0;
    371               a[1]=1.0;
    372               a[2]=1.0;
    373               glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
    374             }
    375             glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z);
    376             glVertex3f(v4.x, v4.y, v4.z);
    377 
    378           }
    379       glEnd();
    380       glEndList();
    381     }
     282    //Die Huegel ein wenig glaetten
     283    for (int h=1; h<2;h++)
     284      for (int i=1;i<sizeX-2 ;i+=1 )
     285        for(int j=1;j<sizeZ-2;j+=1)
     286          height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4;
     287
     288    //Berechnung von normalen Vektoren
     289    for(int i=1;i<sizeX-2;i+=1)
     290      for(int j=1;j<sizeZ-2 ;j+=1)
     291      {
     292        Vector v1 = Vector (widthX*(1),      height[i][j],      widthZ*(j) );
     293        Vector v2 = Vector (widthX*(i-1),    height[i-1][j],    widthZ*(j));
     294        Vector v3 = Vector (widthX*(i),      height[i][j+1],    widthZ*(j+1));
     295        Vector v4 = Vector (widthX*(i+1),    height[i+1][j],    widthZ*(j));
     296        Vector v5 = Vector (widthX*(i),      height[i][j-1],    widthZ*(j-1));
     297
     298        Vector c1 = v2 - v1;
     299        Vector c2 = v3 - v1;
     300        Vector c3=  v4 - v1;
     301        Vector c4 = v5 - v1;
     302        Vector zero = Vector (0,0,0);
     303        normal_vectors[i][j]=c1.cross(v3-v5)+c2.cross(v4-v2)+c3.cross(v5-v3)+c4.cross(v2-v4);
     304        normal_vectors[i][j].normalize();
     305      }
     306
     307    glBegin(GL_QUADS);
     308    int snowheight=3;
     309    for ( int i = 0; i<sizeX; i+=1)
     310      for (int j = 0; j<sizeZ;j+=1)
     311      {
     312        Vector v1 = Vector (widthX*(i),      height[i][j]-20,       widthZ*(j)  -width/2);
     313        Vector v2 = Vector (widthX*(i+1),    height[i+1][j]-20,     widthZ*(j)  -width/2);
     314        Vector v3 = Vector (widthX*(i+1),    height[i+1][j+1]-20,   widthZ*(j+1)-width/2);
     315        Vector v4 = Vector (widthX*(i),      height[i][j+1]-20,     widthZ*(j+1)-width/2);
     316        float a[3];
     317        if(height[i][j]<snowheight)
     318        {
     319          a[0]=0;
     320          a[1]=1.0-height[i][j]/10-.3;
     321          a[2]=0;
     322          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     323        }
     324        else
     325        {
     326          a[0]=1.0;
     327          a[1]=1.0;
     328          a[2]=1.0;
     329          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     330
     331        }
     332        glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z);
     333        glVertex3f(v1.x, v1.y, v1.z);
     334        if(height[i+1][j]<snowheight)
     335        {
     336          a[0]=0;
     337          a[1] =1.0-height[i+1][j]/10-.3;
     338          a[2]=0;
     339          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     340        }
     341        else
     342        {
     343          a[0]=1.0;
     344          a[1]=1.0;
     345          a[2]=1.0;
     346          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     347
     348        }
     349        glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z);
     350        glVertex3f(v2.x, v2.y, v2.z);
     351        if(height[i+1][j+1]<snowheight)
     352        {
     353          a[0]=0;
     354          a[1] =1.0-height[i+1][j+1]/10-.3;
     355          a[2]=0;
     356          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     357        }
     358        else
     359        {
     360          a[0]=1.0;
     361          a[1]=1.0;
     362          a[2]=1.0;
     363          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     364
     365
     366        }
     367        glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z);
     368        glVertex3f(v3.x, v3.y, v3.z);
     369        if(height[i][j+1]<snowheight)
     370        {
     371          a[0]=0;
     372          a[1] =1.0-height[i+1][j+1]/10-.3;
     373          a[2]=0;
     374          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     375        }
     376        else
     377        {
     378          a[0]=1.0;
     379          a[1]=1.0;
     380          a[2]=1.0;
     381          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     382        }
     383        glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z);
     384        glVertex3f(v4.x, v4.y, v4.z);
     385
     386      }
     387    glEnd();
     388    glEndList();
     389  }
    382390
    383391  if (debugTerrain == TERRAIN_BENSCH)
    384     {
    385       /*
    386         this->model = (OBJModel*) new Model();
    387       this->model->setName("CUBE");
    388       this->model->addVertex (-0.5, -0.5, 0.5);
    389       this->model->addVertex (0.5, -0.5, 0.5);
    390       this->model->addVertex (-0.5, 0.5, 0.5);
    391       this->model->addVertex (0.5, 0.5, 0.5);
    392       this->model->addVertex (-0.5, 0.5, -0.5);
    393       this->model->addVertex (0.5, 0.5, -0.5);
    394       this->model->addVertex (-0.5, -0.5, -0.5);
    395       this->model->addVertex (0.5, -0.5, -0.5);
    396 
    397       this->model->addVertexTexture (0.0, 0.0);
    398       this->model->addVertexTexture (1.0, 0.0);
    399       this->model->addVertexTexture (0.0, 1.0);
    400       this->model->addVertexTexture (1.0, 1.0);
    401       this->model->addVertexTexture (0.0, 2.0);
    402       this->model->addVertexTexture (1.0, 2.0);
    403       this->model->addVertexTexture (0.0, 3.0);
    404       this->model->addVertexTexture (1.0, 3.0);
    405       this->model->addVertexTexture (0.0, 4.0);
    406       this->model->addVertexTexture (1.0, 4.0);
    407       this->model->addVertexTexture (2.0, 0.0);
    408       this->model->addVertexTexture (2.0, 1.0);
    409       this->model->addVertexTexture (-1.0, 0.0);
    410       this->model->addVertexTexture (-1.0, 1.0);
    411 
    412       this->model->finalize();
    413       */
    414     }
     392  {
     393    /*
     394      this->model = (OBJModel*) new Model();
     395    this->model->setName("CUBE");
     396    this->model->addVertex (-0.5, -0.5, 0.5);
     397    this->model->addVertex (0.5, -0.5, 0.5);
     398    this->model->addVertex (-0.5, 0.5, 0.5);
     399    this->model->addVertex (0.5, 0.5, 0.5);
     400    this->model->addVertex (-0.5, 0.5, -0.5);
     401    this->model->addVertex (0.5, 0.5, -0.5);
     402    this->model->addVertex (-0.5, -0.5, -0.5);
     403    this->model->addVertex (0.5, -0.5, -0.5);
     404
     405    this->model->addVertexTexture (0.0, 0.0);
     406    this->model->addVertexTexture (1.0, 0.0);
     407    this->model->addVertexTexture (0.0, 1.0);
     408    this->model->addVertexTexture (1.0, 1.0);
     409    this->model->addVertexTexture (0.0, 2.0);
     410    this->model->addVertexTexture (1.0, 2.0);
     411    this->model->addVertexTexture (0.0, 3.0);
     412    this->model->addVertexTexture (1.0, 3.0);
     413    this->model->addVertexTexture (0.0, 4.0);
     414    this->model->addVertexTexture (1.0, 4.0);
     415    this->model->addVertexTexture (2.0, 0.0);
     416    this->model->addVertexTexture (2.0, 1.0);
     417    this->model->addVertexTexture (-1.0, 0.0);
     418    this->model->addVertexTexture (-1.0, 1.0);
     419
     420    this->model->finalize();
     421    */
     422  }
    415423}
    416424
     
    450458
    451459void Terrain::writeDebug( ) const
    452 {
    453 }
     460  {}
    454461
    455462void Terrain::readDebug( ) const
    456 {
    457 }
     463  {}
    458464
    459465float Terrain::getHeight(float x, float y)
    460466{
    461         if(this->heightMap != NULL)
    462                 return (this->heightMap->getHeight(x, y));
    463         return 0;
    464 }
     467  if(this->heightMap != NULL)
     468    return (this->heightMap->getHeight(x, y));
     469  return 0;
     470}
Note: See TracChangeset for help on using the changeset viewer.