Obj_io. Step 4. Now _read_point works correctly for obj files saves without normals or/and tex_coords too.

This commit is contained in:
Bogdan Devichev 2015-01-29 16:17:42 +02:00
parent 5bcc44953b
commit 23c3cd9489
1 changed files with 48 additions and 13 deletions

View File

@ -188,15 +188,45 @@ _count_elements(char *map)//count elements of mesh in .obj
void void
_read_point(int *triangles, _read_point(int *triangles,
int num, int num,
OBJ_Counts counts EINA_UNUSED, OBJ_Counts counts,
int num_cur, int num_cur,
char *pointer) char *pointer)
{
if (counts.existence_of_normal)
{
if (counts.existence_of_tex_point)
{ {
sscanf(pointer, "%i/%i/%i", sscanf(pointer, "%i/%i/%i",
&ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9), &ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9),
&ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9), &ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9),
&ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9)); &ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9));
} }
else
{
sscanf(pointer, "%i//%i",
&ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9),
&ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9));
ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9) = 1;
}
}
else
{
if (counts.existence_of_tex_point)
{
sscanf(pointer, "%i/%i",
&ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9),
&ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9));
ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9) = 1;
}
else
{
sscanf(pointer, "%i",
&ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9));
ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9) = 1;
ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9) = 1;
}
}
}
void void
evas_model_load_file_obj(Evas_3D_Mesh *mesh, Eina_File *file) evas_model_load_file_obj(Evas_3D_Mesh *mesh, Eina_File *file)
@ -240,7 +270,12 @@ evas_model_load_file_obj(Evas_3D_Mesh *mesh, Eina_File *file)
current = map; current = map;
i = 0; i = 0;
ARRAY_2D(_tex_coords_obj, 0, 0, 3) = 0.0;
ARRAY_2D(_tex_coords_obj, 0, 1, 3) = 0.0;
ARRAY_2D(_tex_coords_obj, 0, 2, 3) = 0.0;
ARRAY_2D(_normales_obj, 0, 0, 3) = 1.0;
ARRAY_2D(_normales_obj, 0, 1, 3) = 0.0;
ARRAY_2D(_normales_obj, 0, 2, 3) = 0.0;
/* put data to arrays */ /* put data to arrays */
for (; *current != '\00'; i++) for (; *current != '\00'; i++)
{ {