evas: Evas_3D - iport/export of Obj format can be read even if obj-file does not...
authorBogdan Devichev <b.devichev@samsung.com>
Wed, 11 Feb 2015 17:13:58 +0000 (18:13 +0100)
committerCedric BAIL <cedric@osg.samsung.com>
Wed, 11 Feb 2015 17:31:53 +0000 (18:31 +0100)
commit150613086643af46b02acc958252aa553ac89903
treea7ea8cf91ffc10998bf700bce41f21d9700bb882
parentc6c6233b50e0328d461158247a4e7db3b5890362
evas: Evas_3D - iport/export of Obj format can be read even if obj-file does not have normals or tex-coords.

Summary:
This commit fixed several bugs, and show what was be fixed.

Bugs:
- When designer save obj file in Blender, he/she can set flags (fig 1). Normals and UV coords flags was necessary  for obj loader. Loader crushed when they are not set as true. It fixed by this commit.
- Another loaders set default values to data which aren't in loading file, so mesh need more memory for unused data. It fixed by this commit for obj and will be fixed for another formats in future.
- Saver saved incorrect data if normals or tex_coords was not set in mesh in evas. Now it fixed.
- Saver failed if it save mesh without material. It fixed and in this case material file is not created now.
- Also fixed some leaks and undefined behavior which valgrind shows.

Example:
- Example shows cases described above. Example use files saved with different flags for it.

Resources:
- man_mesh is replaced by several smaller file, to use them for showing new features and fixes. For example, similar to that models can be added when implement work with material for obj, work with different flags for obj loader/saver etc. (big count of man_meshes is to much memory).
- texture for home is flipped, because of bug with texture in efl to see if tex_coords is incorrect.

Test:
- test should be rewritten in future, because another formats still use default values for normals and tex_coords. And test can not pass for all types of obj file because of standardization for any format in him.

Test Plan: Test suit will be rewritten after correcting of other formats (they will set NULL to file when save an empty data (like mesh without normals))

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1957

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
15 files changed:
src/examples/evas/evas-3d-obj.c
src/examples/evas/indian_DIFF3.png [deleted file]
src/examples/evas/man_mesh.obj [deleted file]
src/examples/evas/obj_files/sweet_home.mtl [new file with mode: 0644]
src/examples/evas/obj_files/sweet_home.obj [new file with mode: 0644]
src/examples/evas/obj_files/sweet_home_only_vertex_coords.mtl [moved from src/examples/evas/man_mesh.mtl with 68% similarity]
src/examples/evas/obj_files/sweet_home_only_vertex_coords.obj [new file with mode: 0644]
src/examples/evas/obj_files/sweet_home_without_normals.mtl [new file with mode: 0644]
src/examples/evas/obj_files/sweet_home_without_normals.obj [new file with mode: 0644]
src/examples/evas/obj_files/sweet_home_without_tex_coords.mtl [new file with mode: 0644]
src/examples/evas/obj_files/sweet_home_without_tex_coords.obj [new file with mode: 0644]
src/examples/evas/sweet_home_reversed.png [new file with mode: 0644]
src/modules/evas/model_loaders/obj/evas_model_load_obj.c
src/modules/evas/model_savers/obj/evas_model_save_obj.c
src/tests/evas/meshes/obj/sweet_home.obj [new file with mode: 0644]