#include <md2load.h>
Diagrama de colaboración para LECTOR_QUAKE_MD2:
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). | |
MESH * | exportar_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_RGB * | Piel |
TRIANGULO_QUAKE * | triangulos_arr |
CONFIGURACION_MESH * | frames_arr |
DWORD | _num_frames |
DWORD | _num_vertices |
DWORD | _num_triangulos |
char * | _nombre_piel |
LISTA< VERTICE_GL * > | geometrias_preprocesadas |
|
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. |
|
Definición en la línea 114 del archivo md2load.C. References elim(). |
Here is the call graph for this function:
|
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:
|
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:
|
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:
|
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(). |
|
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:
|
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:
|
Here is the call graph for this function:
|
Definición en la línea 307 del archivo md2load.C. References _num_frames, y DWORD. |
|
Definición en la línea 309 del archivo md2load.C. References _num_triangulos, y DWORD. |
|
Definición en la línea 308 del archivo md2load.C. References _num_vertices, y DWORD. |
|
Definición en la línea 60 del archivo md2load.h. Referenciado por elim(), LECTOR_QUAKE_MD2(), y leer(). |
|
Definición en la línea 57 del archivo md2load.h. Referenciado por elim(), init(), LECTOR_QUAKE_MD2(), leer(), y num_frames(). |
|
Definición en la línea 59 del archivo md2load.h. Referenciado por init(), LECTOR_QUAKE_MD2(), leer(), y num_triangulos(). |
|
Definición en la línea 58 del archivo md2load.h. Referenciado por LECTOR_QUAKE_MD2(), leer(), y num_vertices(). |
|
Definición en la línea 56 del archivo md2load.h. Referenciado por actualizar_vertices(), elim(), LECTOR_QUAKE_MD2(), y leer(). |
|
Definición en la línea 62 del archivo md2load.h. Referenciado por actualizar_vertices_rapido(), actualizar_vertices_rapido_i(), y init(). |
|
Definición en la línea 54 del archivo md2load.h. Referenciado por actualizar_vertices(), exportar_MESH(), LECTOR_QUAKE_MD2(), y leer(). |
|
Definición en la línea 55 del archivo md2load.h. Referenciado por actualizar_vertices(), elim(), LECTOR_QUAKE_MD2(), y leer(). |