Index: orxonox/trunk/src/importer/framework.cc
===================================================================
--- orxonox/trunk/src/importer/framework.cc	(revision 3413)
+++ orxonox/trunk/src/importer/framework.cc	(revision 3418)
@@ -52,5 +52,5 @@
 int main(int argc, char *argv[])
 {
-  verbose = 3;
+  verbose = 1;
 
   Uint8* keys; // This variable will be used in the keyboard routine
@@ -77,5 +77,5 @@
       // This also packs everything into a DisplayList, and can be handled exactly as any other model.
       // This is an example of a cube with Texture-Coordinates, but without explicite Vertex-Normals. (they are soft-created).
-
+      /*
       obj = (OBJModel*) new Model();
       obj->setName("CUBE");
@@ -111,4 +111,6 @@
       obj->addFace ("7 1 3 5");
       obj->finalize();
+      */
+      obj = (OBJModel*) new Model(SPHERE);
     }
   M = Vector(wHandler.screen->w/2, wHandler.screen->h/2, 0); 
@@ -252,4 +254,10 @@
 	      obj = new OBJModel(argv[1]);
 	    break;
+	  case SDLK_a:
+	    zoomTo /=2;
+	    break;
+	  case SDLK_z:
+	    zoomTo *=2;
+
 	  }
 	break;
Index: orxonox/trunk/src/importer/model.cc
===================================================================
--- orxonox/trunk/src/importer/model.cc	(revision 3413)
+++ orxonox/trunk/src/importer/model.cc	(revision 3418)
@@ -16,4 +16,5 @@
 #include "model.h"
 #include <math.h>
+#include <stdarg.h>
 
 using namespace std;
@@ -47,4 +48,5 @@
       break;
     case SPHERE:
+      this->sphereModel();
       break;
     case CYLINDER:
@@ -456,14 +458,36 @@
 
 /**
-   \brief imports a new Face.
-   \param faceElemCount The Cout of Vertices this Face has.
-   \param ... The Elements by number.
-
-   \todo hmmpf... this also has to parse normals and vertices... sounds like stress...
-*/
-bool Model::addFace(const float faceElemCount, ...)
-{
-  // TODO
-
+   \brief adds a new Face
+   \param faceElemCount the number of Vertices to add to the Face.
+   \param type 0: vertex only, 1: vertex and normal, 2: vertex and Texture, 3 vertex, normal and texture
+*/
+bool Model::addFace(const float faceElemCount, int type, ...)
+{
+   if (this->currentGroup->faceCount > 0)
+    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new Face;
+  this->initFace (this->currentGroup->currentFace);
+
+  FaceElement* tmpElem = this->currentGroup->currentFace->firstElem = new FaceElement;
+  tmpElem->next = NULL;
+  
+  va_list itemlist;
+  va_start (itemlist, type);
+
+  for (int i = 0; i < faceElemCount; i++)
+    {
+      if (this->currentGroup->currentFace->vertexCount>0)
+	  tmpElem = tmpElem->next = new FaceElement;
+      tmpElem->next = NULL;
+
+      tmpElem->vertexNumber = va_arg (itemlist, int) -1;
+      if (type >= 2)
+	tmpElem->texCoordNumber = va_arg (itemlist, int) -1;
+      if (type == 1 || type ==3)
+ 	tmpElem->normalNumber = va_arg(itemlist, int) -1;
+      this->currentGroup->currentFace->vertexCount++;
+    }
+  va_end(itemlist);
+
+  this->currentGroup->faceCount += this->currentGroup->currentFace->vertexCount - 2;
 }
 
@@ -830,4 +854,46 @@
 
 
+void Model::sphereModel()
+{
+  int detail = 30;
+  if (detail <= 0) detail = 1;
+  float df = (float)detail;
+  for (float i = 0.0; i < df/2; i+=1.0)
+    {
+      for (float j = 0.0; j < df; j+=1.0)
+      {
+	float vz = i/df *2.0*PI - PI/2.0;
+	this->addVertex(cos(j/df*2.0*PI) * cos(vz) ,
+			sin(j/df*2.0*PI) * cos(vz),
+			sin(vz));
+	//if (j==0.0)
+	//printf ("%f %f\n", vz, sin (vz));
+	if (i==0.0)
+		  printf("%f, %f\n", j/df*2.0*PI, cos(j/df*PI));
+      }
+    }
+  vertices->debug();
+  for (int i = 0; i < detail/2; i++)
+    for (int j = 1; j < detail; j++)
+      {
+	unsigned int v1,v2,v3,v4;
+	v1 = i*detail +j;
+
+	/*	if (j+1 == detail)
+	  {
+	    v2 = i*detail +1;
+	    v3 = i*detail+detail + 1;
+	  }
+	  else*/
+	  {
+	    v2 = i*detail +j+1;
+	    v3 = i*detail+detail + j+1;
+	  }
+	v4 = i*detail+detail + j;
+	//printf("%i %i %i %i\n", v1, v2, v3, v4);
+	this->addFace(4, 0, v1, v2, v3, v4);
+      }
+}
+
 void Model::cylinderModel()
 {
Index: orxonox/trunk/src/importer/model.h
===================================================================
--- orxonox/trunk/src/importer/model.h	(revision 3413)
+++ orxonox/trunk/src/importer/model.h	(revision 3418)
@@ -47,12 +47,5 @@
 
   //! This is the placeholder of a Face belonging to a Group of Faces.
-  /**
-     \todo take Material to a call for itself.
-
-     This can also be a Material-Change switch. 
-     That means if you want to change a Material inside of a group,
-     you can create an empty face and apply a material to it, and the Importer will cahnge Colors
-  */
-  struct Face 
+  struct Face
   {
     int vertexCount;        //!< The Count of vertices this Face has.
@@ -105,5 +98,5 @@
   bool addVertex(const float x, const float y, const float z);
   bool addFace(char* faceString);
-  bool addFace(const float faceElemCount, ...);
+  bool addFace(const float faceElemCount, int type, ...);
   bool addVertexNormal(char* normalString);
   bool addVertexNormal(const float x, const float y, const float z);
@@ -120,4 +113,5 @@
 
   void cubeModel(void);
+  void sphereModel(void);
   void cylinderModel(void);
 };
