Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

Referencia de la Clase LECTOR_QUAKE_MD2

#include <md2load.h>

Diagrama de colaboración para LECTOR_QUAKE_MD2:

Collaboration graph
[leyenda]
Lista de todos los miembros.

Métodos públicos

 LECTOR_QUAKE_MD2 ()
 La clase `LECTOR_QUAKE_MD2` implementa un esquema de importacion de datos util para construir una MESH a partir de un archivo en formato MD2, que usualmente contiene personajes 3D (avatares) del juego QUAKE2.

 ~LECTOR_QUAKE_MD2 ()
void init (BOOLEAN suavizar_normales)
 Este metodo precalcula las normales de los vertices para todos los frames y los almacena en la lista de arreglos `geometrias_preprocesadas`.

void elim (void)
DWORD num_frames (void)
DWORD num_vertices (void)
DWORD num_triangulos (void)
BOOLEAN leer (char *archivo_md2, char *archivo_piel, double factor_gamma)
 Este metodo construye el lector a partir de un modelo 3D en formato MD2 (archivo_md2) y de un archivo de imagen en formato PCX (archivo_piel).

MESHexportar_MESH (int cuadro)
 Este metodo crea una MESH standard AQUYNZA a partir de los datos de un archivo MD2.

void actualizar_vertices (VERTICE_GL *V, long int t, int cuadro)
 Debido a la diferencia de representacion de vertices entre la MESH AQUYNZA y el formato MD2, este metodo debe ser usado para calcular los VERTICE_GL's de un MESH.

void actualizar_vertices_rapido (VERTICE_GL *V, long int t, int cuadro)
 Esta es una version rapida del metodo `actualizar_vertices` que utiliza la estructura `geometrias_preprocesadas`.

void actualizar_vertices_rapido_i (VERTICE_GL *V, long int t, int cuadro, int cuadroi, int cuadrof, int frame, int tam)
 Esta es una version modificada del metodo `actualizar_vertices_rapido` que habilita la interpolacion de vertices y normales.


Atributos privados

IMAGEN_RGBPiel
TRIANGULO_QUAKEtriangulos_arr
CONFIGURACION_MESHframes_arr
DWORD _num_frames
DWORD _num_vertices
DWORD _num_triangulos
char * _nombre_piel
LISTA< VERTICE_GL * > geometrias_preprocesadas

Documentación del constructor y destructor

LECTOR_QUAKE_MD2::LECTOR_QUAKE_MD2  ) 
 

La clase `LECTOR_QUAKE_MD2` implementa un esquema de importacion de datos util para construir una MESH a partir de un archivo en formato MD2, que usualmente contiene personajes 3D (avatares) del juego QUAKE2.

Un archivo MD2 contiene internamente 198 cuadros de animacion que comprenden X(?) comportamientos predeterminados de dicho juego.

Definición en la línea 95 del archivo md2load.C.

References _nombre_piel, _num_frames, _num_triangulos, _num_vertices, frames_arr, Piel, y triangulos_arr.

LECTOR_QUAKE_MD2::~LECTOR_QUAKE_MD2  ) 
 

Definición en la línea 114 del archivo md2load.C.

References elim().

Here is the call graph for this function:


Documentación de las funciones miembro

void LECTOR_QUAKE_MD2::actualizar_vertices VERTICE_GL V,
long int  t,
int  cuadro
 

Debido a la diferencia de representacion de vertices entre la MESH AQUYNZA y el formato MD2, este metodo debe ser usado para calcular los VERTICE_GL's de un MESH.

Notese que se recibe el vector a calcular V/t, y en el se escribe la informacion geometrica del `cuadro`-esimo frame de animacion MD2.

Si se usa este metodo no es necesario el costoso paso de preprocesamiento de la estructura `geometrias_preprocesadas`, pero en caso de usar un modelo de iluminacion, el usuario del lector debera calcular las normales de la MESH resultante llamando el metodo `MESH::init()`. Se recomienda usar esta version cuando no se usan normales. En caso contrario se recomienda usar `actualizar_vertices_rapido`.

OJO: Deberia quitarse `t`?

Definición en la línea 369 del archivo md2load.C.

References TRIANGULO_QUAKE::a_s, TRIANGULO_QUAKE::a_t, CONFIGURACION_MESH::arr_vertices, TRIANGULO_QUAKE::b_s, TRIANGULO_QUAKE::b_t, TRIANGULO_QUAKE::c_s, TRIANGULO_QUAKE::c_t, frames_arr, TRIANGULO_QUAKE::p0, TRIANGULO_QUAKE::p1, TRIANGULO_QUAKE::p2, Piel, triangulos_arr, VERTICE_GL::u, VERTICE_GL::v, WORD, IMAGEN::xtam(), y IMAGEN::ytam().

Referenciado por exportar_MESH(), y init().

Here is the call graph for this function:

void LECTOR_QUAKE_MD2::actualizar_vertices_rapido VERTICE_GL V,
long int  t,
int  cuadro
 

Esta es una version rapida del metodo `actualizar_vertices` que utiliza la estructura `geometrias_preprocesadas`.

La ganancia de velocidad consiste en que los vertices contienen sus normales preprocesadas.

ATENCION: Es necesario llamar el metodo `init` antes de usar este metodo!

OJO: Deberia quitarse `t`?

Definición en la línea 412 del archivo md2load.C.

References geometrias_preprocesadas, LISTA< VERTICE_GL * >::tam(), y WORD.

Here is the call graph for this function:

void LECTOR_QUAKE_MD2::actualizar_vertices_rapido_i VERTICE_GL V,
long int  t,
int  cuadro,
int  cuadroi,
int  cuadrof,
int  frame,
int  tam
 

Esta es una version modificada del metodo `actualizar_vertices_rapido` que habilita la interpolacion de vertices y normales.

Definición en la línea 465 del archivo md2load.C.

References frame, geometrias_preprocesadas, interpolar_vertice(), LISTA< VERTICE_GL * >::tam(), y WORD.

Here is the call graph for this function:

void LECTOR_QUAKE_MD2::elim void   ) 
 

Definición en la línea 120 del archivo md2load.C.

References _nombre_piel, _num_frames, CONFIGURACION_MESH::arr_vertices, DWORD, frames_arr, y triangulos_arr.

Referenciado por ~LECTOR_QUAKE_MD2().

MESH * LECTOR_QUAKE_MD2::exportar_MESH int  cuadro  ) 
 

Este metodo crea una MESH standard AQUYNZA a partir de los datos de un archivo MD2.

Notese sin embargo que el mayor problema es que el formato de coordenadas de textura no es igual... mientras que una MESH AQUYNZA (i.e. una OpenGL) almacena las coordenadas de mapeo de texturas (u, v) en los vertices, el formato MD2 las especifica en los triangulos, usando una exotica combinacion de atributos en la estructura TRIANGULO_QUAKE (a_s, a_t, b_s, b_t, c_s, c_t)...

Asi es que este metodo es responsable de una conversion... NOTESE que un VERTICE_GL referenciado por dos TRIANGULO_QUAKEs es el mismo solo si las coordenadas *_s, *_t de los triangulos son las mismas, y si no es asi, son dos VERTICE_GL's.

Inicialmente se trato de desarrollar un metodo "elegante" que detectaba los VERTICE_GL's que eran iguales... pero no funciono porque resulto ser muy complejo. Por ahora esta el metodo inocente de replicar vertices... se recomienda revisar esta vaina y mejorarla!

OJO: La MESH a veces queda mal armada! ... y si no se asigna aqui memoria dinamica con new, falla menos! (!)... o sea que un menor numero de modelos salen "mal"... "mal" significa que falla el modelo de iluminacion al parecer por saturacion de color...

Definición en la línea 500 del archivo md2load.C.

References actualizar_vertices(), COLOR::alpha, MESH::anexar_textura(), MESH::anx_material(), MESH::anx_triangle(), MESH::anx_vertex(), COLOR::b, COLOR::g, TRIANGULO_GL::p0, TRIANGULO_GL::p1, TRIANGULO_GL::p2, Piel, COLOR::r, MESH::set_material_global(), VERTICE_GL::u, VERTICE_GL::v, WORD, VERTICE_GL::x, VERTICE_GL::y, y VERTICE_GL::z.

Referenciado por init().

Here is the call graph for this function:

void LECTOR_QUAKE_MD2::init BOOLEAN  suavizar_normales  ) 
 

Este metodo precalcula las normales de los vertices para todos los frames y los almacena en la lista de arreglos `geometrias_preprocesadas`.

Es solo necesario para poder usar `actualizar_vertices_rapido`.

Definición en la línea 272 del archivo md2load.C.

References _num_frames, _num_triangulos, actualizar_vertices(), LISTA< VERTICE_GL * >::anx(), DWORD, exportar_MESH(), geometrias_preprocesadas, MESH::get_vertices(), MESH::init(), y MESH::promediar_normales_vertice().

Here is the call graph for this function:

BOOLEAN LECTOR_QUAKE_MD2::leer char *  archivo_md2,
char *  archivo_piel,
double  factor_gamma
 

Este metodo construye el lector a partir de un modelo 3D en formato MD2 (archivo_md2) y de un archivo de imagen en formato PCX (archivo_piel).

Notese que este metodo debe ser llamado antes de cualquier otra operacion de la clase LECTOR_QUAKE_MD2.

Definición en la línea 141 del archivo md2load.C.

References _nombre_piel, _num_frames, ENCABEZADO_MD2::_num_glcmds, ENCABEZADO_MD2::_num_st, _num_triangulos, _num_vertices, TRIANGULO_QUAKE::a_s, TRIANGULO_QUAKE::a_t, IMAGEN_RGB::aplicar_correccion_gamma(), CONFIGURACION_MESH::arr_vertices, TRIANGULO_QUAKE::b_s, TRIANGULO_QUAKE::b_t, BYTE, TRIANGULO_QUAKE::c_s, TRIANGULO_QUAKE::c_t, calcular_funcion_gamma(), DWORD, frames_arr, ENCABEZADO_MD2::framesize, ENCABEZADO_MD2::id_md2, IMAGEN_RGB::importar_pcx(), POLIGONO_MD2::index_st, POLIGONO_MD2::index_xyz, leer_bytes(), ENCABEZADO_MD2::num_frames, ENCABEZADO_MD2::num_pieles, ENCABEZADO_MD2::num_triangulos, ENCABEZADO_MD2::num_vertices, ENCABEZADO_MD2::ofs_end, ENCABEZADO_MD2::ofs_frames, ENCABEZADO_MD2::ofs_glcmds, ENCABEZADO_MD2::ofs_skins, ENCABEZADO_MD2::ofs_st, ENCABEZADO_MD2::ofs_tris, TRIANGULO_QUAKE::p0, TRIANGULO_QUAKE::p1, TRIANGULO_QUAKE::p2, Piel, ENCABEZADO_MD2::piel_xtam, ENCABEZADO_MD2::piel_ytam, FRAME_ALIAS::scale, FRAME_ALIAS::translate, triangulos_arr, VERTICE_GL::u, VERTICE_GL::v, N_MD2::v, ENCABEZADO_MD2::version, FRAME_ALIAS::verts, VERTICE_GL::x, VERTICE_GL::y, y VERTICE_GL::z.

Here is the call graph for this function:

DWORD LECTOR_QUAKE_MD2::num_frames void   ) 
 

Definición en la línea 307 del archivo md2load.C.

References _num_frames, y DWORD.

DWORD LECTOR_QUAKE_MD2::num_triangulos void   ) 
 

Definición en la línea 309 del archivo md2load.C.

References _num_triangulos, y DWORD.

DWORD LECTOR_QUAKE_MD2::num_vertices void   ) 
 

Definición en la línea 308 del archivo md2load.C.

References _num_vertices, y DWORD.


Documentación de los datos miembro

char* LECTOR_QUAKE_MD2::_nombre_piel [private]
 

Definición en la línea 60 del archivo md2load.h.

Referenciado por elim(), LECTOR_QUAKE_MD2(), y leer().

DWORD LECTOR_QUAKE_MD2::_num_frames [private]
 

Definición en la línea 57 del archivo md2load.h.

Referenciado por elim(), init(), LECTOR_QUAKE_MD2(), leer(), y num_frames().

DWORD LECTOR_QUAKE_MD2::_num_triangulos [private]
 

Definición en la línea 59 del archivo md2load.h.

Referenciado por init(), LECTOR_QUAKE_MD2(), leer(), y num_triangulos().

DWORD LECTOR_QUAKE_MD2::_num_vertices [private]
 

Definición en la línea 58 del archivo md2load.h.

Referenciado por LECTOR_QUAKE_MD2(), leer(), y num_vertices().

CONFIGURACION_MESH* LECTOR_QUAKE_MD2::frames_arr [private]
 

Definición en la línea 56 del archivo md2load.h.

Referenciado por actualizar_vertices(), elim(), LECTOR_QUAKE_MD2(), y leer().

LISTA<VERTICE_GL *> LECTOR_QUAKE_MD2::geometrias_preprocesadas [private]
 

Definición en la línea 62 del archivo md2load.h.

Referenciado por actualizar_vertices_rapido(), actualizar_vertices_rapido_i(), y init().

IMAGEN_RGB* LECTOR_QUAKE_MD2::Piel [private]
 

Definición en la línea 54 del archivo md2load.h.

Referenciado por actualizar_vertices(), exportar_MESH(), LECTOR_QUAKE_MD2(), y leer().

TRIANGULO_QUAKE* LECTOR_QUAKE_MD2::triangulos_arr [private]
 

Definición en la línea 55 del archivo md2load.h.

Referenciado por actualizar_vertices(), elim(), LECTOR_QUAKE_MD2(), y leer().


La documentación para esta clase fué generada a partir de los siguientes archivos:
Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.