Changeset 3186 in orxonox.OLD for orxonox/trunk/importer
- Timestamp:
- Dec 15, 2004, 7:51:10 PM (20 years ago)
- Location:
- orxonox/trunk/importer
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/importer/Makefile.am
r3182 r3186 18 18 object.h \ 19 19 array.h \ 20 material.h 20 material.h \ 21 stdincl.h 21 22 22 23 -
orxonox/trunk/importer/Makefile.in
r3182 r3186 183 183 object.h \ 184 184 array.h \ 185 material.h 185 material.h \ 186 stdincl.h 186 187 187 188 all: all-am -
orxonox/trunk/importer/array.h
r3184 r3186 31 31 void debug(void); 32 32 private: 33 //! One entry of the Array 33 34 struct Entry 34 35 { 35 GLfloat value; 36 Entry* next; 36 GLfloat value; //!< The value of this Entry. 37 Entry* next; //!< Pointer to the Next entry. 37 38 }; 38 39 39 GLfloat* array; 40 int entryCount; 41 bool finalized; 42 Entry* firstEntry; 43 Entry* currentEntry; 40 GLfloat* array; //!< The array that will be produced when finalizing the Array. 41 int entryCount; //!< The count of Entries in this Array. 42 bool finalized; //!< If this variable is set to true, the Array can not be changed anymore. true if finalized, false else (initially). 43 Entry* firstEntry; //!< Pointer to the first Entry of this Array 44 Entry* currentEntry; //!< Pointer to the current Entry of this Array. The one Entry we are working with. 44 45 45 46 -
orxonox/trunk/importer/material.cc
r3178 r3186 15 15 TGA-code: borrowed from nehe-Tutorials 16 16 17 ToDo:18 - free SDL-surface when deleting Material.19 - delete imgNameWithPath after use creation.20 17 */ 21 18 … … 31 28 using namespace std; 32 29 33 30 /** 31 \brief creates a ned PathList. 32 33 It is a good idea to use this as an initial List, 34 because if you give on a name the Path will not be checked for its existence. 35 */ 34 36 PathList::PathList() 35 37 { … … 37 39 next = NULL; 38 40 } 41 42 /** 43 \brief Creates a new PathList with a Name. 44 \param pName the Name of The Path. 45 46 This function just adds the Path without checking if it exists. 47 */ 39 48 PathList::PathList(char* pName) 40 49 { … … 44 53 } 45 54 55 /** 56 \brief destroys a PathList 57 58 It does this by deleting the Name and then delete its preceding PathList. 59 */ 46 60 PathList::~PathList() 47 61 { … … 52 66 } 53 67 68 /** 69 \brief Adds a new Pathlist Element. 70 \param pName 71 72 Adding a Path automatically checks if the Path exists, 73 and if it does not it will not add it to the List. 74 */ 54 75 void PathList::addPath (char* pName) 55 76 { … … 476 497 } 477 498 499 /** 500 \brief Loads a Texture to the openGL-environment. 501 \param pImage The Image to load to openGL 502 \param texture The Texture to apply it to. 503 */ 478 504 bool Material::loadTexToGL (Image* pImage, GLuint* texture) 479 505 { -
orxonox/trunk/importer/material.h
r3184 r3186 2 2 \file material.h 3 3 \brief Contains the Material Class that handles Material for 3D-Objects. 4 \todo free SDL-surface when deleting Material. 5 \todo delete imgNameWithPath after use creation. 4 6 */ 5 7 6 8 #ifndef _MATERIAL_H 7 9 #define _MATERIAL_H 10 11 8 12 9 13 extern int verbose; //!< will be obsolete soon. … … 29 33 #endif /* HAVE_SDL_SDL_IMAGE_H */ 30 34 35 //! Class to handle lists of paths. 36 /** 37 \todo Ability to return Paths by itself. 38 39 It is simple to use, and good, for all PathList you want. 40 just create a new Pathlist, and add Paths. 41 */ 31 42 class PathList 32 43 { … … 37 48 ~PathList(); 38 49 void addPath (char* pName); 39 char* pathName; 40 PathList* next; 50 char* pathName; //!< The Name of the current Path. 51 PathList* next; //!< Pointer to the next Pathlist. 41 52 }; 42 53 … … 81 92 82 93 private: 94 //! Struct to handle Infos about an Image 83 95 struct Image 84 96 { 85 int rowSpan; 86 GLuint width; 87 GLuint height; 88 GLuint bpp; 89 GLuint type; 90 GLubyte *data; 97 int rowSpan; //!< The count of the rows this Image has. 98 GLuint width; //!< The width of the Image. 99 GLuint height; //!< The height of the Image. 100 GLuint bpp; //!< BitsPerPixel 101 GLuint type; //!< Type of the Image. 102 GLubyte *data; //!< The Image Data comes here! DANGER: uncompressed data. 91 103 }; 92 104 93 105 94 char* name; 95 int illumModel; 96 float diffuse [4]; 97 float ambient [4]; 98 float specular [4]; 99 float shininess; 100 float transparency; 106 char* name; //!< The Name of the Material. 107 int illumModel; //!< The IlluminationModel is either flat or smooth. 108 float diffuse [4]; //!< The diffuse color of the Material. 109 float ambient [4]; //!< The ambient color of the Material. 110 float specular [4];//!< The specular color of the Material. 111 float shininess; //!< The shininess of the Material. 112 float transparency;//!< The transperency of the Material. 101 113 102 static PathList* pathList; 114 static PathList* pathList; //!< A pointer to the first element of Pathlist. This is static, because pathlists are global \todo copy this to the Globals.h or DataTank for deletion at the end. 103 115 104 GLuint diffuseTexture; 105 GLuint ambientTexture; 106 GLuint specularTexture; 116 GLuint diffuseTexture; //!< The diffuse texture of the Material. 117 GLuint ambientTexture; //!< The ambient texture of the Material. 118 GLuint specularTexture;//!< The specular texture of the Material. 107 119 108 bool diffuseTextureSet; 109 bool ambientTextureSet; 110 bool specularTextureSet; 120 bool diffuseTextureSet; //!< Chekcs if the diffuse texture is Set. 121 bool ambientTextureSet; //!< Chekcs if the ambient texture is Set. 122 bool specularTextureSet;//!< Chekcs if the specular texture is Set. 111 123 112 124 Material* nextMat; //!< pointer to the Next Material of the List. NULL if no next exists. -
orxonox/trunk/importer/object.cc
r3140 r3186 18 18 19 19 /** 20 \brief Creates a 3D-Object, but does not load any 3D-models 21 pretty useless 20 \brief Creates a 3D-Object, but does not load any 3D-models. 21 22 This Constructor is pretty useless, because why load no object in an object-loader?? 22 23 */ 23 24 Object::Object () … … 34 35 35 36 /** 36 \brief Crates a 3D-Object and loads in a File 37 \brief Crates a 3D-Object and loads in a File. 37 38 \param fileName file to parse and load (must be a .obj file) 38 39 */ … … 66 67 67 68 /** 68 \brief deletes an Object 69 \brief deletes an Object. 70 71 Looks if any from object allocated space is still in use, and if so deleted it. 69 72 */ 70 73 Object::~Object() … … 115 118 /** 116 119 \brief Draws the Object number groupNumber 120 \param groupNumber The number of the group that will be displayed. 121 117 122 It does this by just calling the List that must have been created earlier. 118 \param groupNumber The number of the group that will be displayed.119 123 */ 120 124 void Object::draw (int groupNumber) const … … 150 154 /** 151 155 \brief Draws the Object with a specific groupName 156 \param groupName The name of the group that will be displayed. 157 152 158 It does this by just calling the List that must have been created earlier. 153 \param groupName The name of the group that will be displayed.154 159 */ 155 160 void Object::draw (char* groupName) const … … 183 188 184 189 /** 185 \brief initializes the Object 186 This Function initializes all the needed arrays, Lists and clientStates 190 \brief initializes the Object. 191 192 This Function initializes all the needed arrays, Lists and clientStates. 193 It also defines default values. 187 194 */ 188 195 bool Object::initialize (void) … … 212 219 /** 213 220 \brief initializes a new Group object 221 \param group the group that should be initialized. 222 \todo Maybe Group should be a Class, because it does a lot of stuff 223 214 224 */ 215 225 bool Object::initGroup(Group* group) … … 229 239 /** 230 240 \brief initializes a new Face. (sets default Values) 241 \param face The face to initialize 231 242 */ 232 243 bool Object::initFace (Face* face) … … 283 294 284 295 /** 285 \brief Cleans up all Faces starting from face .286 \param face the first face to clean 296 \brief Cleans up all Faces starting from face until NULL is reached. 297 \param face the first face to clean. 287 298 */ 288 299 bool Object::cleanupFace (Face* face) … … 448 459 /** 449 460 \brief parses a group String 461 \param groupString the new Group to create 462 450 463 This function initializes a new Group. 451 464 With it you should be able to import .obj-files with more than one Objects inside. 452 \param groupString the new Group to create453 465 */ 454 466 bool Object::readGroup (char* groupString) … … 474 486 /** 475 487 \brief parses a vertex-String 488 \param vertexString The String that will be parsed. 489 476 490 If a vertex line is found this function will inject it into the vertex-Array 477 \param vertexString The String that will be parsed.478 491 */ 479 492 bool Object::readVertex (char* vertexString) … … 491 504 /** 492 505 \brief parses a face-string 506 \param faceString The String that will be parsed. 507 493 508 If a face line is found this function will add it to the glList. 494 509 The function makes a difference between QUADS and TRIANGLES, and will if changed re-open, set and re-close the gl-processe. 495 \param faceString The String that will be parsed.496 510 */ 497 511 bool Object::readFace (char* faceString) … … 554 568 /** 555 569 \brief parses a vertexNormal-String 570 \param normalString The String that will be parsed. 571 556 572 If a vertexNormal line is found this function will inject it into the vertexNormal-Array 557 \param normalString The String that will be parsed.558 573 */ 559 574 bool Object::readVertexNormal (char* normalString) … … 571 586 /** 572 587 \brief parses a vertexTextureCoordinate-String 573 If a vertexTextureCoordinate line is found this function will inject it into the vertexTexture-Array574 588 \param vTextureString The String that will be parsed. 589 590 If a vertexTextureCoordinate line is found, 591 this function will inject it into the vertexTexture-Array 575 592 */ 576 593 bool Object::readVertexTexture (char* vTextureString) … … 588 605 /** 589 606 \brief Function to read in a mtl File. 590 this Function parses all Lines of an mtl File591 607 \param mtlFile The .mtl file to read 608 609 This Function parses all Lines of an mtl File. 610 The reason for it not to be in the materials-class is, 611 that a material does not have to be able to read itself in from a File. 612 592 613 */ 593 614 bool Object::readMtlLib (char* mtlFile) … … 807 828 /** 808 829 \brief Adds a Face-element (one vertex of a face) with all its information. 830 \param elem The FaceElement to add to the OpenGL-environment. 831 809 832 It does this by searching: 810 833 1. The Vertex itself … … 812 835 3. The VertexTextureCoordinate 813 836 merging this information, the face will be drawn. 814 815 837 */ 816 838 bool Object::addGLElement (FaceElement* elem) … … 830 852 /** 831 853 \brief A routine that is able to create normals. 854 832 855 The algorithm does the following: 833 856 1. It calculates creates Vectors for each normale, and sets them to zero. … … 910 933 /** 911 934 \brief Includes a default object 935 912 936 This will inject a Cube, because this is the most basic object. 913 937 */ 914 938 void Object::BoxObject(void) 915 939 { 916 readVertex ("-0.5 00000 -0.500000 0.500000");917 readVertex ("0.5 00000 -0.500000 0.500000");918 readVertex ("-0.5 00000 0.500000 0.500000");919 readVertex ("0.5 00000 0.500000 0.500000");920 readVertex ("-0.5 00000 0.500000 -0.500000");921 readVertex ("0.5 00000 0.500000 -0.500000");922 readVertex ("-0.5 00000 -0.500000 -0.500000");923 readVertex ("0.5 00000 -0.500000 -0.500000");924 925 readVertexTexture ("0.0 00000 0.000000");926 readVertexTexture ("1.0 00000 0.000000");927 readVertexTexture ("0.0 00000 1.000000");928 readVertexTexture ("1.0 00000 1.000000");929 readVertexTexture ("0.0 00000 2.000000");930 readVertexTexture ("1.0 00000 2.000000");931 readVertexTexture ("0.0 00000 3.000000");932 readVertexTexture ("1.0 00000 3.000000");933 readVertexTexture ("0.0 00000 4.000000");934 readVertexTexture ("1.0 00000 4.000000");935 readVertexTexture ("2.0 00000 0.000000");936 readVertexTexture ("2.0 00000 1.000000");937 readVertexTexture ("-1.0 00000 0.000000");938 readVertexTexture ("-1.0 00000 1.000000");939 940 readVertexNormal ("0.0 00000 0.000000 1.000000");941 readVertexNormal ("0.0 00000 0.000000 1.000000");942 readVertexNormal ("0.0 00000 0.000000 1.000000");943 readVertexNormal ("0.0 00000 0.000000 1.000000");944 readVertexNormal ("0.0 00000 1.000000 0.000000");945 readVertexNormal ("0.0 00000 1.000000 0.000000");946 readVertexNormal ("0.0 00000 1.000000 0.000000");947 readVertexNormal ("0.0 00000 1.000000 0.000000");948 readVertexNormal ("0.0 00000 0.000000 -1.000000");949 readVertexNormal ("0.0 00000 0.000000 -1.000000");950 readVertexNormal ("0.0 00000 0.000000 -1.000000");951 readVertexNormal ("0.0 00000 0.000000 -1.000000");952 readVertexNormal ("0.0 00000 -1.000000 0.000000");953 readVertexNormal ("0.0 00000 -1.000000 0.000000");954 readVertexNormal ("0.0 00000 -1.000000 0.000000");955 readVertexNormal ("0.0 00000 -1.000000 0.000000");956 readVertexNormal ("1.0 00000 0.000000 0.000000");957 readVertexNormal ("1.0 00000 0.000000 0.000000");958 readVertexNormal ("1.0 00000 0.000000 0.000000");959 readVertexNormal ("1.0 00000 0.000000 0.000000");960 readVertexNormal ("-1.0 00000 0.000000 0.000000");961 readVertexNormal ("-1.0 00000 0.000000 0.000000");962 readVertexNormal ("-1.0 00000 0.000000 0.000000");963 readVertexNormal ("-1.0 00000 0.000000 0.000000");940 readVertex ("-0.5 -0.5 0.5"); 941 readVertex ("0.5 -0.5 0.5"); 942 readVertex ("-0.5 0.5 0.5"); 943 readVertex ("0.5 0.5 0.5"); 944 readVertex ("-0.5 0.5 -0.5"); 945 readVertex ("0.5 0.5 -0.5"); 946 readVertex ("-0.5 -0.5 -0.5"); 947 readVertex ("0.5 -0.5 -0.5"); 948 949 readVertexTexture ("0.0 0.0"); 950 readVertexTexture ("1.0 0.0"); 951 readVertexTexture ("0.0 1.0"); 952 readVertexTexture ("1.0 1.0"); 953 readVertexTexture ("0.0 2.0"); 954 readVertexTexture ("1.0 2.0"); 955 readVertexTexture ("0.0 3.0"); 956 readVertexTexture ("1.0 3.0"); 957 readVertexTexture ("0.0 4.0"); 958 readVertexTexture ("1.0 4.0"); 959 readVertexTexture ("2.0 0.0"); 960 readVertexTexture ("2.0 1.0"); 961 readVertexTexture ("-1.0 0.0"); 962 readVertexTexture ("-1.0 1.0"); 963 964 readVertexNormal ("0.0 0.0 1.0"); 965 readVertexNormal ("0.0 0.0 1.0"); 966 readVertexNormal ("0.0 0.0 1.0"); 967 readVertexNormal ("0.0 0.0 1.0"); 968 readVertexNormal ("0.0 1.0 0.0"); 969 readVertexNormal ("0.0 1.0 0.0"); 970 readVertexNormal ("0.0 1.0 0.0"); 971 readVertexNormal ("0.0 1.0 0.0"); 972 readVertexNormal ("0.0 0.0 -1.0"); 973 readVertexNormal ("0.0 0.0 -1.0"); 974 readVertexNormal ("0.0 0.0 -1.0"); 975 readVertexNormal ("0.0 0.0 -1.0"); 976 readVertexNormal ("0.0 -1.0 0.0"); 977 readVertexNormal ("0.0 -1.0 0.0"); 978 readVertexNormal ("0.0 -1.0 0.0"); 979 readVertexNormal ("0.0 -1.0 0.0"); 980 readVertexNormal ("1.0 0.0 0.0"); 981 readVertexNormal ("1.0 0.0 0.0"); 982 readVertexNormal ("1.0 0.0 0.0"); 983 readVertexNormal ("1.0 0.0 0.0"); 984 readVertexNormal ("-1.0 0.0 0.0"); 985 readVertexNormal ("-1.0 0.0 0.0"); 986 readVertexNormal ("-1.0 0.0 0.0"); 987 readVertexNormal ("-1.0 0.0 0.0"); 964 988 965 989 /* normaleLess-testingMode -
orxonox/trunk/importer/object.h
r3184 r3186 35 35 36 36 private: 37 struct FaceElement 37 //! This is the placeholder of one Vertex beloning to a Face. 38 struct FaceElement 38 39 { 39 int vertexNumber; 40 int normalNumber; 41 int texCoordNumber; 42 FaceElement* next; 40 int vertexNumber; //!< The number of the Vertex out of the Array* vertices, this vertex points to. 41 int normalNumber; //!< The number of the Normal out of the Array* normals, this vertex points to. 42 int texCoordNumber; //!< The number of the textureCoordinate out of the Array* vTexture, this vertex points to. 43 FaceElement* next; //!< Point to the next FaceElement in this List. 43 44 }; 44 45 45 //! Face 46 struct Face 46 //! This is the placeholder of a Face belonging to a Group of Faces. 47 /** 48 \todo take Material to a call for itself. 49 50 This can also be a Material-Change switch. 51 That means if you want to change a Material inside of a group, 52 you can create an empty face and apply a material to it, and the Importer will cahnge Colors 53 */ 54 struct Face 47 55 { 48 int vertexCount; 49 FaceElement* firstElem; 56 int vertexCount; //!< The Count of vertices this Face has. 57 FaceElement* firstElem; //!< Points to the first Vertex (FaceElement) of this Face. 50 58 51 char* materialString; 59 char* materialString; //!< The Name of the Material to which to Change. 52 60 53 Face* next; 54 }; 61 Face* next; //!< Pointer to the next Face. 62 }; 55 63 56 //! Group to handle multiple Objects per obj-file 64 //! Group to handle multiple Objects per obj-file. 57 65 struct Group 58 66 { 59 char* name; 67 char* name; //!< the Name of the Group. this is an identifier, that can be accessed via the draw (char* name) function. 60 68 61 GLuint listNumber; 62 Face* firstFace; 63 Face* currentFace; 64 int faceMode; 65 int faceCount; 69 GLuint listNumber; //!< The number of the GL-List this Group gets. 70 Face* firstFace; //!< The first Face in this group. 71 Face* currentFace; //!< The current Face in this Group (the one we are currently working with.) 72 int faceMode; //!< The Mode the Face is in: initially -1, 0 for FaceList opened, 1 for Material, 3 for triangle, 4 for Quad, 5+ for Poly \todo ENUM... 73 int faceCount; //!< The Number of Faces this Group holds. 66 74 67 Group* next; 75 Group* next; //!< Pointer to the next Group. 68 76 }; 69 77 70 78 71 Array* vertices; 72 int verticesCount; 73 Array* colors; 74 Array* normals; 75 Array* vTexture; 79 Array* vertices; //!< The Array that handles the Vertices. 80 int verticesCount; //!< A global Counter for vertices. 81 Array* normals; //!< The Array that handles the Normals. 82 Array* vTexture; //!< The Array that handles the VertexTextureCoordinates. 76 83 77 84 78 Group* firstGroup; //!< the first of all groups.79 Group* currentGroup; //!< the currentGroup. this is the one we will work with.80 int groupCount; 85 Group* firstGroup; //!< The first of all groups. 86 Group* currentGroup; //!< The currentGroup. this is the one we will work with. 87 int groupCount; //!< The Count of Groups. 81 88 82 Material* material; 83 float scaleFactor; 89 Material* material; //!< Initial pointer to the Material. This can hold many materials, because Material can be added with Material::addMaterial(..) 90 float scaleFactor; //!< The Factor with which the Object hould be scaled. \todo maybe one wants to scale the Object after Initialisation 84 91 85 char* objPath; 86 char* objFileName; 87 char* mtlFileName; 92 char* objPath; //!< The Path wher the obj and mtl-file are located. 93 char* objFileName; //!< The Name of the obj-file. 94 char* mtlFileName; //!< The Name of the mtl-file (parsed out of the obj-file) 88 95 89 96 bool initialize (void); -
orxonox/trunk/importer/stdincl.h
r3184 r3186 1 /*! 2 \file stdincl.h 3 \brief This file includes default headers that nearly every Class needs. 4 5 no Class is defined here, but many headers to classes, and more general Headers like the openGL-header. 6 */ 1 7 2 8 #ifndef STDINCL_H 3 9 #define STDINCL_H 4 10 5 #define null 0 11 #define null 0 //!< null 6 12 7 13 #ifdef __WIN32__
Note: See TracChangeset
for help on using the changeset viewer.