Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 2765 in orxonox.OLD for orxonox/branches/importer/importer/object.cc


Ignore:
Timestamp:
Nov 9, 2004, 2:54:49 PM (20 years ago)
Author:
bensch
Message:

orxonox/branches/importer: read in whole line instead of only next entry, better for parsing textfiles

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/importer/importer/object.cc

    r2762 r2765  
    11#include "object.h"
    2 
    32Object::Object ()
    43{
    5   this->readFromObjFile ("reaphigh.obj");
    6    
     4  this->readFromObjFile ("sphere.obj");
     5
     6  listNumber = glGenLists(1);
     7  glNewList (listNumber, GL_COMPILE);
     8
    79  glEnableClientState (GL_VERTEX_ARRAY);
    810  glVertexPointer(3, GL_FLOAT, 0, vertices->getArray());
    911 
    10   listNumber = glGenLists(1);
    11   glNewList (listNumber, GL_COMPILE);
    12 
    1312  glColor3f(1.0,0,0);
    1413  glBegin(GL_QUADS);
    15  
     14  printf ("face-count %i\n", faces->getCount());
    1615  for (int i=0; i<=faces->getCount();++i)
    1716    {
    18       printf ("%i, %i\n", i, (int) faces->getArray()[i]);
    1917      glArrayElement((int)faces->getArray()[i] -1);
    2018    }
     
    3533bool Object::readFromObjFile (char* fileName)
    3634{
     35  OBJ_FILE = new ifstream (fileName);
     36  char Buffer[500];
     37  vertices = new Array();
     38  faces = new Array();
     39  while(!OBJ_FILE->eof())
     40    {
     41      OBJ_FILE->getline(Buffer, 500);
     42      //      printf("%s\n", Buffer);
     43     
     44
     45      // case vertice
     46      if (!strncmp(Buffer, "v ", 2))
     47        {
     48          char subbuffer1[10];
     49          char subbuffer2[10];
     50          char subbuffer3[10];
     51          sscanf (Buffer, "v %s %s %s", subbuffer1, subbuffer2, subbuffer3);
     52          vertices->addEntry(atof(subbuffer1), atof(subbuffer2), atof(subbuffer3));
     53        }
     54
     55      // case face
     56      else if (!strncmp(Buffer, "f ", 2))
     57        {
     58          char subbuffer1[10];
     59          char subbuffer2[10];
     60          char subbuffer3[10];
     61          char subbuffer4[10] ="";
     62          sscanf (Buffer, "f %s %s %s %s", subbuffer1, subbuffer2, subbuffer3, subbuffer4);
     63          //      vertices->addEntry(atof(subbuffer1), atof(subbuffer2), atof(subbuffer3));
     64          if (!strcmp(subbuffer4, ""))
     65            {
     66              printf ("triag: %s, %s, %s\n", subbuffer1, subbuffer2, subbuffer3);
     67              faces->addEntry(atof(subbuffer1));
     68              faces->addEntry(atof(subbuffer2));
     69              faces->addEntry(atof(subbuffer3));
     70            }
     71          else
     72            {
     73              printf ("quad: %s, %s, %s, %s\n", subbuffer1, subbuffer2, subbuffer3, subbuffer4);
     74              faces->addEntry(atof(subbuffer1));
     75              faces->addEntry(atof(subbuffer2));
     76              faces->addEntry(atof(subbuffer3));
     77              faces->addEntry(atof(subbuffer4));
     78
     79            }
     80        }
     81
     82      // case vt
     83      else if (!strncmp(Buffer, "vt ", 2))
     84      {
     85        //      printf ("verticeTangent found");
     86      }
     87         
     88
     89    }
     90 
     91
     92 
     93  OBJ_FILE->close();
     94 
     95  /*
     96
    3797  if ( (OBJ_FILE = fopen (fileName, "r")) == NULL)
    3898    {
     
    43103    {
    44104      char Buffer[100];
    45       vertices = new Array();
    46       faces = new Array();
    47       char lastWas = '0';
    48        
    49       while (fscanf (OBJ_FILE, "%s", Buffer) != EOF)
     105      char optionIs = '0';
     106      char optionWas = '0';
     107      int entryCount = 0; //counts how many inputs an option has.
     108      int lastEntryCount = 0;
     109      while (fscanf (OBJ_FILE, "%c10", Buffer) != EOF)
    50110        {
    51          
     111          printf("%s", Buffer);
     112
    52113          // case we read it is a vertex
    53114          if (!strcmp (Buffer, "v"))
    54115            {
    55               lastWas = 'v';
     116              optionIs = 'v';
     117              entryCount = 0;
    56118            }
    57119          // case we read a Face
    58120          else if (!strcmp (Buffer, "f"))
    59121            { 
    60               lastWas = 'f';
     122              optionIs = 'f';
     123              entryCount = 0;
    61124            }
    62125          else if (!strcmp (Buffer, "vn"))
    63126            {
    64               lastWas = 'n';
     127              optionIs = 'n';
     128              entryCount = 0;
    65129            }
    66130          else if (!strcmp (Buffer, "vt"))
    67131            {
    68               lastWas = 't';
     132              optionIs = 't';
     133              entryCount = 0;
    69134            }
    70135          else if (!strcmp (Buffer,"s"))
    71136            {
    72               lastWas = '0';
     137              optionIs = '0';
     138              entryCount = 0;
    73139            }
    74140          else if (!strncmp (Buffer,"u", 1))
    75141            {
    76               lastWas = '0';
     142              optionIs = '0';
     143              entryCount = 0;
    77144            }
    78145          else if (!strcmp (Buffer,"g"))
    79146            {
    80               lastWas = '0';
     147              optionIs = '0';
     148              entryCount = 0;
    81149            }
    82150
     
    85153          else
    86154            {
    87               if (lastWas == 'v')
     155              if (optionIs == 'v')
    88156                {
    89157                  vertices->addEntry(atof(Buffer));
    90                   printf ("v: %s\n", Buffer);
     158                  ++entryCount;
     159
     160                  //              printf ("v: %s\n", Buffer);
    91161                }
    92               else if (lastWas == 'f')
     162              else if (optionIs == 'f')
    93163                {
    94164                  char* pointTo;
    95165                  pointTo = strstr (Buffer, "/");
    96166                  pointTo[0] = '\0';
    97                   printf ("f: %s\n", Buffer);
     167                  //              printf ("f: %s\n", Buffer);
    98168                  faces->addEntry(atof(Buffer));
     169                  ++entryCount;
    99170                }
    100171             
    101172            }
     173
     174          if (entryCount == 0 && (optionWas == 'f'))
     175            {
     176              if (lastEntryCount == 3)
     177                printf ("triang\n");
     178              else if (lastEntryCount == 4)
     179                printf ("quads\n");
     180                     
     181            }
     182
     183          lastEntryCount = entryCount;
     184          optionWas = optionIs;
     185
    102186        }
    103187      vertices->finalizeArray();
    104188      faces->finalizeArray();
    105189      fclose (OBJ_FILE);
    106       printf("test\n");
    107190      return true;
    108191    }
     192  */
    109193}
     194
     195//caseChange (char optionIs, int entryCount)
Note: See TracChangeset for help on using the changeset viewer.