Herramientas de usuario

Herramientas del sitio


fw:lib3ds

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:lib3ds [2008/07/09 09:38]
alfred
fw:lib3ds [2020/05/09 09:25] (actual)
Línea 33: Línea 33:
 </​code>​ </​code>​
 ''​lib3ds_file_free''​ libera de memoria el ''​Lib3dsFile''​ pasado por parámetro. ''​lib3ds_file_free''​ libera de memoria el ''​Lib3dsFile''​ pasado por parámetro.
 +
  
  
Línea 54: Línea 55:
 glEnd(); glEnd();
 </​code>​ </​code>​
 +
 +==== Cálculo de normales ====
 +Lib3ds dispone de una función llamada ''​lib3ds_mesh_calculate_normals''​ que calcula las normales para una mesh, se le pasa la mesh de la cual queremos calcular las normales y tantos arrays de 3 floats como normales tenga esta mesh (número de caras multiplicado por 3, que son los vértices). Para más comodidad podemos utilizar la estructura ''​Lib3dsVector''​.
 +<code c>
 +Lib3dsVector* normals = new Lib3dsVector[mesh->​faces * 3];
 +lib3ds_mesh_calculate_normals(mesh,​ normals);
 +</​code>​
 +Ahora dentro del vector de normales tendremos las normales por cada vértice.
 +
 +
 +
 +==== Cargar las coordenadas de textura ====
 +Las coordenadas de textura las tratamos desde la instancia a ''​Lib3dsMesh''​. Esta contiene dos variables: ​
 +  * //texels// que contiene el número de coordenadas almacenadas.
 +  * //texelL// que contiene las coordenadas en un array de arrays de dos números (x e y) de la coordenada. Para saber que coordenada que le toca a cada vértice iremos a la cara con la que estemos trabajando y en su variable //points// encontraremos los tres indices del array de vértices correspondientes a sus tres vértices, ese índice también coincide con el vértice para las coordenadas de textura.
 +<code c>
 +for (int i=0; i<​mesh->​faces;​ i++) {
 + Lib3dsFace face = mesh->​faceL[i];​
 + for (int i=0; i<3; i++) {
 + glTexCoord2f (mesh->​texelL[face.points[i]][0],​ mesh->​texelL[face.points[i]][1]);​
 +...
 +</​code>​
 +Para saber qué textura tiene aplicada una cara accederemos a su variable //​material//,​ esta contiene un string con el identificador.
fw/lib3ds.1215596337.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)