Cargador de modelos para OpenGL. Más...
#include <OpenGLModel.h>
Métodos públicos | |
OpenGLModel (const char *strPath, bool bTexturesEnabledByDefault=true, bool bColorMaterialEnabledByDefault=true, bool bIgnoreTexturePath=false, char *strTextureBasePath=0) | |
GLint | generateDisplayList () |
Métodos protegidos | |
virtual void | preProcess () |
virtual void | applyTransformation (float *fMatrix4Data) |
virtual void | unApplyLastTransformation () |
virtual void | processMesh (const struct aiMaterial *pMtl, const struct aiFace *pFaces, unsigned int nNumFaces, aiVector3D *aVertices, aiColor4D *aColorsByVertexIndex, aiVector3D *aNormalsByVertexIndex, aiVector3D *aTextureCoordsByVertexIndex) |
virtual void | postProcess () |
virtual void | applyMaterial (const struct aiMaterial *mtl) |
Atributos protegidos | |
bool | bTexturesEnabledByDefault |
bool | bTexturesEnabled |
bool | bColorMaterialEnabledByDefault |
bool | bColorMaterialEnabled |
bool | bIgnoreTexturePath |
GLuint | nActualTexture |
float | cDif [4] |
float | cAmb [4] |
float | cSpe [4] |
float | cEmi [4] |
float | oldShi |
float | oldColor [4] |
string | strTextureBasePath |
float | fScaleFactor |
Vector3 | oCenterVector |
Cargador de modelos para OpenGL.
OpenGLModel::OpenGLModel | ( | const char * | strPath, | |
bool | bTexturesEnabledByDefault = true , |
|||
bool | bColorMaterialEnabledByDefault = true , |
|||
bool | bIgnoreTexturePath = false , |
|||
char * | strTextureBasePath = 0 | |||
) |
Carga un modelo de ruta "strPath" que luego sera dibujado en OpenGL al llamar a la funcion "process()" bTexturesEnabledByDefault indica si GL_TEXTURE_2D al llamar a "process()" se encuantra habilitado o no, se puede asumir que al terminar "process()" GL_TEXTURE_2D se encuentra en el estado indicado por bTexturesEnabledByDefault. Si bTexturesEnabledByDefault == false entonces no se usaran texturas al dibujar el modelo. bColorMaterialEnabledByDefault idem a bTexturesEnabledByDefault, si esta en false entonces no se habilitara GL_COLOR_MATERIAL al dibujar el modelo bIgnoreTexturePath se utiliza para el cargado de las texturas, en particular como segundo parametro de "GetTextureID(...)" de OpenGLTextureMap. Esto es util cuando un modelo hace referencia a una textura mediante una ruta absoluta. Ej: Si bIgnoreTexturePath == true y el modelo hace referencia a una textura en "C:/misTexturas/text1.jpg", solo se buscara "text1.jpg" El valor de strTextureBasePath sera concatenado al valor de la ruta obtenida con bIgnoreTexturePath. En el ejemplo anterior si strTextureBasePath == "texturas/" entonces se buscara el archivo "texturas/text1.jpg". En caso de valer NULL se ignora.
void OpenGLModel::applyTransformation | ( | float * | fMatrix4Data | ) | [protected, virtual] |
Aplica la transformacion correspondiente al nodo actual procesado. La transformacion es relativa a la transformacion del nodo padre.
fMatrix4Data | arreglo de 16 floating-points que corresponden a una matriz de 4x4. link con explicacion del formato de la matriz http://www.sjbaker.org/steve/omniv/matrices_can_be_your_friends.html |
Implementa Model3D.
GLint OpenGLModel::generateDisplayList | ( | ) |
Devuelve el identificador de un display list de OpenGL que dibuja el modelo en el estado en que se encuentra.
void OpenGLModel::postProcess | ( | ) | [protected, virtual] |
Funcion encargada de realizar cualquier accion necesaria luego de terminado el procesamiento del modelo.
Reimplementado de Model3D.
void OpenGLModel::preProcess | ( | ) | [protected, virtual] |
Funcion encargada de realizar cualquier accion necesaria antes del comienzo del procesamiento del modelo.
Reimplementado de Model3D.
void OpenGLModel::processMesh | ( | const struct aiMaterial * | pMtl, | |
const struct aiFace * | pFaces, | |||
unsigned int | nNumFaces, | |||
aiVector3D * | aVertices, | |||
aiColor4D * | aColorsByVertexIndex, | |||
aiVector3D * | aNormalsByVertexIndex, | |||
aiVector3D * | aTextureCoordsByVertexIndex | |||
) | [protected, virtual] |
Funcion encargada de procesar las mallas de vertices de cada nodo. Es llamada una vez por cada malla de vertices de cada nodo.
pMtl | arreglo de materiales correspondientes a la malla de vertices de la funcion. | |
pFaces | arreglo de triangulos y quads que forman la malla de vertices. | |
nNumFaces | indica cuantos elementos hay en pFaces. | |
aVertices | arreglo de vertices a los que hacen referencia los elementos en pFaces. Los arreglos aColorsByVertexIndex, aNormalsByVertexIndex y aTextureCoordsByVertexIndex contienen informacion de color, normales y coordenadas de textura para cada elemento del arreglo de vertices. Nota: los struct comenzados con aiXXXX son definidos por la libreria Assimp. Para su manipulacion se recomienda ver una implementacion de Model3D de ejemplo o ver documentacion de Assimp. |
Implementa Model3D.
void OpenGLModel::unApplyLastTransformation | ( | ) | [protected, virtual] |
Desaplica la transformacion correspondiente al nodo actual.
Implementa Model3D.