modelobject

This commit is contained in:
seba 2008-04-11 16:43:46 +02:00
parent 35bc9783ea
commit 4db04f28c7
2 changed files with 101 additions and 0 deletions

61
models/model.cpp Normal file
View File

@ -0,0 +1,61 @@
#include "model.h"
ModelObject::ModelObject() {
}
void ModelObject::clear() {
normal.clear();
vertex.clear();
mapcoord.clear();
polygon.clear();
}
void ModelObject::calcNormales() {
normal.clear();
Punkt3D a, b;
for(unsigned int i=0; i<polygon.size(); i++) {
a = vertex.at((unsigned short)polygon[i].x) - vertex.at((unsigned short)polygon[i].z);
b = vertex.at((unsigned short)polygon[i].y) - vertex.at((unsigned short)polygon[i].z);
normal.push_back(a.kreuzprodukt(b));
}
}
void ModelObject::render() {
std::cout << "render " << name << std::endl;
glBegin(GL_TRIANGLES);
for(unsigned int i=0; i<polygon.size(); i++) {
// glNormal3f(normal.at( (unsigned short)polygon[i].x));
// glTexCoord2f(mapcoord.at((unsigned short)polygon[i].x));
glVertex3f(vertex.at( (unsigned short)polygon[i].x));
// glNormal3f(normal.at( (unsigned short)polygon[i].y));
// glTexCoord2f(mapcoord.at((unsigned short)polygon[i].y));
glVertex3f(vertex.at( (unsigned short)polygon[i].y));
// glNormal3f(normal.at( (unsigned short)polygon[i].z));
// glTexCoord2f(mapcoord.at((unsigned short)polygon[i].z));
glVertex3f(vertex.at( (unsigned short)polygon[i].z));
vertex.at( (unsigned short)polygon[i].x).print();
}
glEnd();
}
Model::Model() {
}
void Model::clear() {
objects.clear();
}
void Model::addObject(ModelObject c) {
objects.push_back(c);
}
void Model::render() {
std::cout << "Render Model " << objects.size() << std::endl;
for(unsigned int i=0; i<objects.size(); i++)
objects[i].render();
}

40
models/model.h Normal file
View File

@ -0,0 +1,40 @@
#ifndef __MODEL_H
#define __MODEL_H
#include <iostream>
#include <vector>
#include "../punkt2d.h"
#include "../punkt3d.h"
#include "../gltexture.h"
// #include "load3ds.h"
class ModelObject {
friend class Load3ds;
private:
std::vector<Punkt3D> normal;
std::vector<Punkt3D> vertex;
std::vector<Punkt2D> mapcoord;
std::vector<Punkt3D> polygon;
void calcNormales();
std::string name;
public:
ModelObject();
void render();
void clear();
};
class Model {
private:
std::vector<ModelObject> objects;
public:
Model();
void addObject(ModelObject c);
void clear();
void render();
};
#endif