Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 2977 in orxonox.OLD for orxonox/branches/osX/importer


Ignore:
Timestamp:
Nov 24, 2004, 12:50:55 PM (20 years ago)
Author:
bensch
Message:

orxonox/branches/importer: merged back from the trunk again: command: svn merge trunk/ branches/osX -r 2887:HEAD

Location:
orxonox/branches/osX/importer
Files:
7 edited
3 copied

Legend:

Unmodified
Added
Removed
  • orxonox/branches/osX/importer/Makefile.am

    r2776 r2977  
    66
    77bin_PROGRAMS=importer
    8 importer_SOURCES=framework.cc windowHandler.cc object.cc array.cc material.cc
     8importer_SOURCES=framework.cc windowHandler.cc vector.cc object.cc array.cc material.cc
    99
    10 noinst_HEADERS=windowHandler.h object.h array.h material.h
     10noinst_HEADERS=framework.h windowHandler.h  vector.h object.h array.h material.h
    1111
    1212
  • orxonox/branches/osX/importer/Makefile.in

    r2776 r2977  
    5353PROGRAMS = $(bin_PROGRAMS)
    5454am_importer_OBJECTS = framework.$(OBJEXT) windowHandler.$(OBJEXT) \
    55         object.$(OBJEXT) array.$(OBJEXT) material.$(OBJEXT)
     55        vector.$(OBJEXT) object.$(OBJEXT) array.$(OBJEXT) \
     56        material.$(OBJEXT)
    5657importer_OBJECTS = $(am_importer_OBJECTS)
    5758importer_LDADD = $(LDADD)
     
    6162@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/array.Po ./$(DEPDIR)/framework.Po \
    6263@AMDEP_TRUE@    ./$(DEPDIR)/material.Po ./$(DEPDIR)/object.Po \
    63 @AMDEP_TRUE@    ./$(DEPDIR)/windowHandler.Po
     64@AMDEP_TRUE@    ./$(DEPDIR)/vector.Po ./$(DEPDIR)/windowHandler.Po
    6465CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    6566        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     
    151152AM_CXXFLAGS = "-I/usr/X11R6/include"
    152153AM_LDFLAGS = "-L/usr/Mesa-6.0.1/lib  -L/usr/X11R6/lib -lXt -lX11" $(MWINDOWS)
    153 importer_SOURCES = framework.cc windowHandler.cc object.cc array.cc material.cc
    154 noinst_HEADERS = windowHandler.h object.h array.h material.h
     154importer_SOURCES = framework.cc windowHandler.cc vector.cc object.cc array.cc material.cc
     155noinst_HEADERS = framework.h windowHandler.h  vector.h object.h array.h material.h
    155156all: all-am
    156157
     
    223224@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/material.Po@am__quote@
    224225@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Po@am__quote@
     226@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Po@am__quote@
    225227@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windowHandler.Po@am__quote@
    226228
  • orxonox/branches/osX/importer/framework.cc

    r2863 r2977  
    1 #include "windowHandler.h" // Include the Whandler Basecode
    2 #include "object.h"
     1#include "framework.h"
    32
    43int verbose = 1;
    5 WindowHandler wHandler;  // Create an instance of the whandler basecode class
    6 Object* obj;
    7 float rotator = 0.0;
    8   GLfloat whiteLight[] = {1.0, 1.0, 0.0,1.0};
    94
    105void DrawGLScene()
    116{
    12   rotator +=.001;
    13  
     7  currFrame = SDL_GetTicks();
     8  dt = currFrame - lastFrame;
     9  if (dt == 0)
     10    dist += (zoomTo-dist)/500;
     11  else
     12    dist += (zoomTo-dist)/500 *(float)dt;
     13
     14  rotatorP += rotatorV *(float)dt;
     15 
     16
    1417  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    1518  glLoadIdentity(); // Reset the view
     
    1720  glMatrixMode(GL_PROJECTION);
    1821  glLoadIdentity();     
    19   gluPerspective(45.0f,500/375,0.1f,100.0f);
    20   gluLookAt (5*sin(rotator),7.5,5*cos(rotator), 0,0,0, 0,1,0);
    21   whiteLight[1] = .5+.5*sin(rotator*10);
    22   whiteLight[2] = .5+.5*sin(rotator*10);
    23 
    24   GLfloat lightPosition[] = {10.0*sin(rotator*10), 10, 19.0, 0.0};
    25   glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
    26 
    27   glLightfv(GL_LIGHT0, GL_DIFFUSE, whiteLight);
     22  gluPerspective(45.0f,500/375,0.1f,dist * 5.0f);
     23    gluLookAt (0, dist , dist, 0,0,0, up.x,up.y,up.z);
     24
     25  glMatrixMode(GL_MODELVIEW);
     26  glPushMatrix();
     27  //  glRotatef (180, dir.x, dir.y, dir.z);
     28  glMultMatrixf (*matQ);
    2829  obj->draw();
    2930
     31  glPopMatrix();
     32
    3033  SDL_GL_SwapBuffers(); // Swap the buffers
     34  lastFrame = currFrame;
    3135}
    3236
     
    4650    return 0;
    4751  }
     52 
     53  printf ("%i, %i\n", wHandler.screen->w, wHandler.screen->h);
    4854  if (argc>=3)
    4955    obj = new Object (argv[1], atof(argv[2]));
     
    5359    obj = new Object();
    5460 
     61  M = Vector(wHandler.screen->w/2, wHandler.screen->h/2, 0);
     62  rotAxis = Vector (0.0,1.0,0.0);
     63  rotAngle = 0;
     64
     65  matQ[0][0] = matQ[1][1] = matQ[2][2] = matQ[3][3] = 1;
     66  rotQ = Quaternion (rotAngle, rotAxis);
     67  rotQlast = rotQ;
     68  dir = Vector (0.0, 0.0, 1.0);
     69  up = Vector (0.0, 1.0, 0.0);
     70
     71  glEnable(GL_LIGHTING);
     72  glEnable(GL_DEPTH_TEST);
     73
     74  GLfloat whiteLight[] = {1.0, 1.0, 1.0,1.0};
     75  GLfloat light0Position[] = {10.0, 10.0, 10.0, 0.0};
     76  GLfloat light1Position[] = {-10.0, -7.0, -6.0, 0.0};
    5577  GLfloat lmodelAmbient[] = {.1, .1, .1, 1.0};
     78
     79  glEnable(GL_LIGHT0);
     80  glLightfv(GL_LIGHT0, GL_POSITION, light0Position);
    5681  glLightfv(GL_LIGHT0, GL_DIFFUSE, whiteLight);
    5782  glLightfv(GL_LIGHT0, GL_SPECULAR, whiteLight);
    58   glEnable(GL_LIGHTING);
    59   glEnable(GL_LIGHT0);
    60   glEnable(GL_DEPTH_TEST);
    61 
     83 
     84  glEnable(GL_LIGHT1);
     85  glLightfv(GL_LIGHT1, GL_POSITION, light1Position);
     86  glLightfv(GL_LIGHT1, GL_DIFFUSE, whiteLight);
     87  glLightfv(GL_LIGHT1, GL_SPECULAR, whiteLight);
     88 
     89  rotatorP = .0;
     90  rotatorV = .0;
     91  dist = 5.0;
     92  zoomTo = dist;
    6293  // Build the font from a TGA image font.tga in the data directory
    6394  // Hide the mouse cursor
    64   SDL_ShowCursor(0);
     95    SDL_ShowCursor(2);
     96    mouse1Down = false;
    6597
    6698  // This is the main loop for the entire program and it will run until done==TRUE
     
    73105    while ( SDL_PollEvent(&event) ) {
    74106      switch (event.type) {
     107      case SDL_MOUSEMOTION:
     108        if (verbose >=3)
     109          printf("Mouse motion about %d,%d Pixels to (%d,%d).\n",
     110                 event.motion.xrel, event.motion.yrel,
     111                 event.motion.x, event.motion.y);
     112        // TRACKBALL
     113        if (mouse1Down)
     114          {
     115            int mX = event.button.x;
     116            int mY = event.button.y;
     117            int wH = wHandler.screen->h;
     118            int wW = wHandler.screen->w;
     119            Vector tmpV (mX, mY, sqrt ( (float) abs(wH * wH/4 - (wW/2-mX) * (wW/2-mX) - (wH/2-mY) * (wH/2-mY)) ));
     120            //      printf ("tmpV: %f, %f, %f\n", tmpV.x, tmpV.y, tmpV.z);
     121            p2 = tmpV-M;
     122            p2.y = -p2.y;
     123            rotAxis = p1.cross(p2);
     124            //  printf ("rotAxis: %f, %f, %f\n", rotAxis.x, rotAxis.y, rotAxis.z);
     125
     126            // in case that there is no rotation-axis defined
     127            if (rotAxis.x != 0 || rotAxis.y != 0 || rotAxis.z != 0)
     128              {
     129                rotAxis.normalize();
     130                //              printf ("rotAxis: %f, %f, %f\n", rotAxis.x, rotAxis.y, rotAxis.z, rotAngle);
     131                               
     132                rotAngle = angle_rad (p1, p2);
     133                rotQ = Quaternion (rotAngle, rotAxis);
     134                rotQ = rotQ * rotQlast;
     135                rotQ.matrix (matQ);
     136                //      dir = rotQ.apply(dir);
     137                //      dir.normalize();
     138                //      printf ("rotAxis: %f, %f, %f, %f\n", dir.x, dir.y, dir.z, rotAngle);
     139              }
     140            rotQlast = rotQ;
     141            p1 = p2;
     142
     143          }
     144        break;
     145      case SDL_MOUSEBUTTONDOWN:
     146        if (event.button.button == 4)
     147          {
     148            printf("MouseWheel up\n");
     149            zoomTo *= .5;
     150          }
     151        else if (event.button.button == 5)
     152          {
     153            printf("MouseWheel down\n");
     154            zoomTo *= 2.0;
     155          }
     156        else if (event.button.button == 1)
     157          {
     158            mouse1Down = true;
     159            int mX = event.button.x;
     160            int mY = event.button.y;
     161            int wH = wHandler.screen->h;
     162            int wW = wHandler.screen->w;
     163            Vector tmpV (mX, mY, sqrt ( (float) abs(wH * wH/4 - (wW/2-mX) * (wW/2-mX) - (wH/2-mY) * (wH/2-mY)) ));
     164            p1 = tmpV-M;
     165            p1.y = -p1.y;
     166
     167          }
     168        else
     169          {
     170            printf("MouseButton %d pressed at (%d,%d).\n",
     171                   event.button.button, event.button.x, event.button.y);
     172            rotatorV = ( (float)wHandler.screen->w/2 -event.button.x) / (float)wHandler.screen->w / 100.0;
     173          }
     174           
     175        break;
     176      case SDL_MOUSEBUTTONUP:
     177        if (event.button.button == 4);
     178        else if (event.button.button == 5);
     179        else if (event.button.button == 1)
     180          mouse1Down =false;
     181        else
     182            {
     183        printf("MouseButton %d released at (%d,%d).\n",
     184               event.button.button, event.button.x, event.button.y);
     185            }
     186        break;
     187           
    75188        // If a quit event was recieved
    76189      case SDL_QUIT:
     
    81194          break;
    82195      }
     196
     197
    83198    }
    84199
  • orxonox/branches/osX/importer/object.cc

    r2863 r2977  
    4848   \param scaling The factor that the object will be scaled with.
    4949*/
    50 
    5150Object::Object(char* fileName, float scaling)
    5251{
     
    9089  groupCount = 0;
    9190 
    92   initGroup (currentGroup);
     91  initGroup (firstGroup);
    9392  mtlFileName = "";
    9493  scaleFactor = 1;
    9594  material = new Material();
    9695
    97   glEnableClientState (GL_VERTEX_ARRAY);
     96  //  glEnableClientState (GL_VERTEX_ARRAY);
    9897  //  glEnableClientState (GL_NORMAL_ARRAY);
    9998  //  glEnableClientState (GL_TEXTURE_COORD_ARRAY);
     
    226225  group->name = "";
    227226  group->faceMode = -1;
    228   group->faceCount =0; 
     227  group->faceCount = 0; 
    229228  if ((group->listNumber = glGenLists(1)) == 0 )
    230229    {
     
    237236      group->firstVertex = 0;
    238237      group->firstNormal = 0;
    239       group->firstNormal = 0;
     238      group->firstVertexTexture = 0;
    240239    }
    241240  else
     
    265264  glEndList();
    266265}
     266
    267267/**
    268268   \brief deletes the Arrays of the Group to save space.
     
    295295    }
    296296  objFileName = fileName;
    297   char Buffer[500];
     297  char Buffer[10000];
    298298  while(!OBJ_FILE->eof())
    299299    {
    300       OBJ_FILE->getline(Buffer, 500);
     300      OBJ_FILE->getline(Buffer, 10000);
    301301      if (verbose >=4)
    302302        printf ("Read input line: %s\n",Buffer);
     
    377377    {
    378378      currentGroup->vertices->finalizeArray();
    379       glVertexPointer(3, GL_FLOAT, 0, currentGroup->vertices->getArray());
     379      //      glVertexPointer(3, GL_FLOAT, 0, currentGroup->vertices->getArray());
    380380      currentGroup->normals->finalizeArray();
    381       glNormalPointer(GL_FLOAT, 0, currentGroup->normals->getArray());
     381      //      glNormalPointer(GL_FLOAT, 0, currentGroup->normals->getArray());
    382382      currentGroup->vTexture->finalizeArray();
    383383    }
     
    385385  readingVertices = false;
    386386  currentGroup->faceCount++;
    387   char subbuffer1[20];
    388   char subbuffer2[20];
    389   char subbuffer3[20];
    390   char subbuffer4[20] ="";
    391   sscanf (faceString, "%s %s %s %s", subbuffer1, subbuffer2, subbuffer3, subbuffer4);
    392   if (!strcmp(subbuffer4, ""))
     387
     388  int elemCount = 0;
     389 
     390  FaceElement* firstElem = new FaceElement;
     391  FaceElement* tmpElem = firstElem;
     392
     393 
     394  while(strcmp (faceString, "\0"))
     395    {
     396      if (elemCount>0)
     397          tmpElem = tmpElem->next = new FaceElement;
     398      tmpElem->next = NULL;
     399
     400
     401      sscanf (faceString, "%s", tmpElem->value);
     402      faceString += strlen(tmpElem->value);
     403      if (strcmp (faceString, "\0"))
     404        faceString++;
     405      elemCount++;
     406
     407
     408    }
     409 
     410 
     411  if (elemCount == 3)
    393412    {
    394413      if (currentGroup->faceMode != 3)
     
    401420      currentGroup->faceMode = 3;
    402421      if (verbose >=3)
    403         printf ("found triag: %s, %s, %s\n", subbuffer1, subbuffer2, subbuffer3);
    404       addGLElement(subbuffer1);
    405       addGLElement(subbuffer2);
    406       addGLElement(subbuffer3);
    407       return true;
    408     }
    409   else
     422        printf ("found triag.\n");
     423    }
     424 
     425  else if (elemCount == 4)
    410426    {
    411427      if (currentGroup->faceMode != 4)
     
    417433      currentGroup->faceMode = 4;
    418434      if (verbose >=3 )
    419         printf ("found quad: %s, %s, %s, %s\n", subbuffer1, subbuffer2, subbuffer3, subbuffer4);
    420       addGLElement(subbuffer1);
    421       addGLElement(subbuffer2);
    422       addGLElement(subbuffer3);
    423       addGLElement(subbuffer4);
    424       return true;
    425     }
     435        printf ("found quad.\n");
     436    }
     437 
     438  else if (elemCount > 4)
     439    {
     440      if (currentGroup->faceMode != -1)
     441        glEnd();
     442      glBegin(GL_POLYGON);
     443      if (verbose >=3)
     444        printf ("Polygon with %i faces found.", elemCount);
     445      currentGroup->faceMode = elemCount;
     446    }
     447
     448  tmpElem = firstElem;
     449  FaceElement* delElem;
     450  while (tmpElem != NULL)
     451    {
     452      //      printf ("%s\n", tmpElem->value);
     453      addGLElement(tmpElem->value);
     454      delElem = tmpElem;
     455      tmpElem = tmpElem->next;
     456      delete delElem;
     457    }
     458
    426459}
    427460
     
    442475
    443476  char* texture;
    444   texture = strstr (vertex, "/");
    445   texture[0] = '\0';
    446   texture ++;
    447   if (verbose>=3)
    448     printf ("includeing texture #%i, and mapping it to group texture #%i, textureArray has %i entries.\n", atoi(texture), (atoi(texture)-1 - currentGroup->firstVertexTexture)*3, currentGroup->vTexture->getCount());
    449   glTexCoord2fv(currentGroup->vTexture->getArray()+(atoi(texture)-1 - currentGroup->firstVertexTexture)*2);
    450 
    451   char* normal;
    452   if ((normal = strstr (texture, "/")) !=NULL)
    453     {
    454       normal[0] = '\0';
    455       normal ++;
    456       //glArrayElement(atoi(vertex)-1);
    457       glNormal3fv(currentGroup->normals->getArray() +(atoi(normal)-1 - currentGroup->firstNormal)*3);
     477  if ((texture = strstr (vertex, "/")) != NULL)
     478    {
     479      texture[0] = '\0';
     480      texture ++;
     481      if (verbose>=3)
     482        printf ("includeing texture #%i, and mapping it to group texture #%i, textureArray has %i entries.\n", atoi(texture), (atoi(texture)-1 - currentGroup->firstVertexTexture)*2, currentGroup->vTexture->getCount());
     483      glTexCoord2fv(currentGroup->vTexture->getArray()+(atoi(texture)-1 - currentGroup->firstVertexTexture)*2);
     484
     485      char* normal;
     486      if ((normal = strstr (texture, "/")) !=NULL)
     487        {
     488          normal[0] = '\0';
     489          normal ++;
     490          //glArrayElement(atoi(vertex)-1);
     491          glNormal3fv(currentGroup->normals->getArray() +(atoi(normal)-1 - currentGroup->firstNormal)*3);
     492        }
    458493    }
    459494  if (verbose>=3)
     
    603638   \param matString the Material that will be set.
    604639*/
    605 
    606640bool Object::readUseMtl (char* matString)
    607641{
     
    635669  readVertex ("-0.500000 -0.500000 -0.500000");
    636670  readVertex ("0.500000 -0.500000 -0.500000");
     671
    637672  readVertexTexture ("0.000000 0.000000");
    638673  readVertexTexture ("1.000000 0.000000");
  • orxonox/branches/osX/importer/object.h

    r2863 r2977  
    1818extern int verbose; //!< fill be removed and added again as a verbose-class
    1919
     20
     21struct FaceElement
     22{
     23  char value[20];
     24  FaceElement* next;
     25};
    2026
    2127//! Class that handles 3D-Objects. it can also read them in and display them.
  • orxonox/branches/osX/importer/windowHandler.cc

    r2759 r2977  
    33#include "windowHandler.h"
    44#include <stdio.h>
    5 void WindowHandler::ReSizeGLScene(GLsizei width, GLsizei height)                // Resize And Initialize The GL Window
     5void WindowHandler::ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize The GL Window
    66{
    7         if (height==0)                                                                          // Prevent A Divide By Zero By
     7        if (height==0)  // Prevent A Divide By Zero By
    88        {
    9                 height=1;                                                                               // Making Height Equal One
     9                height=1;// Making Height Equal One
    1010        }
    1111
    12         glViewport(0,0,width,height);                                           // Reset The Current Viewport
     12        glViewport(0,0,width,height); // Reset The Current Viewport
    1313
    14 
    15         glMatrixMode(GL_PROJECTION);                                            // Select The Projection Matrix
     14       
     15        glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
    1616        glLoadIdentity();       
    1717
     
    2121        gluLookAt (0,0,15, 0,0,0, 0,1,0);
    2222
    23         glMatrixMode(GL_MODELVIEW);                                                     // Select The Modelview Matrix
    24         glLoadIdentity();                                                                       // Reset The Modelview Matrix
     23        glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
     24        glLoadIdentity(); // Reset The Modelview Matrix
    2525
    2626}
     
    2929int WindowHandler::InitGL(GLvoid)                                                                               // All Setup For OpenGL Goes Here
    3030{
    31         glEnable(GL_TEXTURE_2D);                                                        // Enable Texture Mapping
    32         glShadeModel(GL_SMOOTH);                                                        // Enable Smooth Shading
    33         glClearColor(0.00f, 0.00f, 0.00f, 0.0f);                        // Black Background
    34         glClearDepth(1.0f);                                                                     // Depth Buffer Setup
    35         glEnable(GL_DEPTH_TEST);                                                        // Enables Depth Testing
    36         glDepthFunc(GL_LEQUAL);                                                         // The Type Of Depth Testing To Do
    37         glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);      // Really Nice Perspective Calculations
     31        glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
     32        glShadeModel(GL_SMOOTH); // Enable Smooth Shading
     33        glClearColor(0.00f, 0.00f, 0.00f, 0.0f); // Black Background
     34        glClearDepth(1.0f);  // Depth Buffer Setup
     35        glEnable(GL_DEPTH_TEST); // Enables Depth Testing
     36        glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
     37        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);  // Really Nice Perspective Calculations
    3838
    3939    return TRUE;
     
    4141
    4242
    43 GLvoid WindowHandler::KillGLWindow(GLvoid)                                                              // Properly Kill The Window
     43GLvoid WindowHandler::KillGLWindow(GLvoid) // Properly Kill The Window
    4444{
    4545        SDL_Quit();
     
    6363        }
    6464        SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 1 );
    65         if ( SDL_SetVideoMode(width, height, 0, flags) == NULL ) {
     65        if ( (screen = SDL_SetVideoMode(width, height, 0, flags)) == NULL ) {
    6666                return FALSE;
    6767        }
    6868        SDL_GL_GetAttribute( SDL_GL_STENCIL_SIZE, &size);
    6969
    70         ReSizeGLScene(width, height);                                           // Set Up Our Perspective GL Screen
     70        ReSizeGLScene(width, height); // Set Up Our Perspective GL Screen
    7171
    72         if (!InitGL())                                                                          // Initialize Our Newly Created GL Window
     72        if (!InitGL()) // Initialize Our Newly Created GL Window
    7373        {
    74                 KillGLWindow();                                                                 // Reset The Display
    75                 return FALSE;                                                                   // Return FALSE
     74          KillGLWindow();  // Reset The Display
     75          return FALSE;
    7676        }
    7777
    78         return TRUE;                                                                            // Success
     78        return TRUE;
    7979}
    8080
  • orxonox/branches/osX/importer/windowHandler.h

    r2804 r2977  
    1414#include <math.h>
    1515
     16#ifdef __WIN32__
     17#include <windows.h>
     18#endif /* __WIN32__ */
    1619
    1720#define TRUE 1
     
    2629    GLvoid KillGLWindow(GLvoid);
    2730    BOOL CreateGLWindow(char* title, int width, int height, int bits, BOOL fullscreenflag);
     31    SDL_Surface* screen;
    2832  private:
    2933    int InitGL(GLvoid);
Note: See TracChangeset for help on using the changeset viewer.