• Viernes 8 de Noviembre de 2024, 20:38

Autor Tema:  Duda Al Pasar Un Archivo .3ds A .c  (Leído 1707 veces)

falconer007

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Duda Al Pasar Un Archivo .3ds A .c
« en: Jueves 18 de Mayo de 2006, 01:27 »
0
Hola nuevamente. Tengo una gran duda, pase un archivo .3ds a .c y me generó un montón de estructuras y arreglos con puntos, algo como:

static float EGRET_coords[] = {
    580.237, -1022.49, 85.6775,
    580.009, -1055.35, 62.2661,
    570.966, -940.461, 46.4418,
...
}

static float EGRET_normals[] = {
    -0.925668, -0.167011, 0.339479,
    -0.963051, -0.239254, 0.12365,
    -0.999435, 0.0336162, -7.90564e-006,
    -0.963051, -0.239254, 0.12365,
  ...
}

static int EGRET_indices[] = {
    0, 2, 1,
    3, 5, 4,
    6, 8, 7,
    9, 11, 10,
...
}


y cosas asi... pero no se como unir esto. No entiendo para que me da tanta información, no basta con tener los puntos con sus coordenadas.

Por favcor alguien que me pueda orientar como se hace esto en la práctca.

killito

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Duda Al Pasar Un Archivo .3ds A .c
« Respuesta #1 en: Sábado 19 de Mayo de 2007, 17:59 »
0
Nunca he abierto un archivo de esos pero la estructura que das es muy facilmente reconocible (muy similar a los vertex arrays). Tienes los puntos con sus coordenadas de texturas, y los indices se refieren a los poligonos. Cada poligono tiene 3 vertices, y estos los encuentras usando los indices sobre los arrays de los puntos.

De esta forma para un modelo que tenga unos 700 poligonos tendras solo unos 350 vertices, en vez de 2100.

Puedes hacer algo asi:

typedef struct{
   T_vertice v1,v2,v3;
}T_poligono;

for(indice=0;indice<numpoligonos;indice++){
     poligonos[indice].v1=vertices[poligono[indice*3]];
     poligonos[indice].v2=vertices[poligono[indice*3+1]];
     poligonos[indice].v3=vertices[poligono[indice*3+2]];
//y ahora las coordenadas de las texturas
}

Claro q ese codigo no te funcionara pero asi ira la cosa mas o menos.