diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index e9785ffa4d..39a00aec37 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -295,7 +295,9 @@ lib/evas/canvas/evas_3d_light.c \ lib/evas/canvas/evas_3d_mesh.c \ lib/evas/canvas/evas_3d_texture.c \ lib/evas/canvas/evas_3d_material.c \ -lib/evas/canvas/evas_3d_mesh_loader_md2.c +lib/evas/canvas/evas_3d_mesh_loader_md2.c \ +lib/evas/canvas/evas_3d_mesh_loader_obj.c \ +lib/evas/canvas/evas_3d_mesh_saver_obj.c # Engine lib_evas_libevas_la_SOURCES += \ diff --git a/src/examples/evas/evas-3d-obj.c b/src/examples/evas/evas-3d-obj.c new file mode 100644 index 0000000000..6d5395f18c --- /dev/null +++ b/src/examples/evas/evas-3d-obj.c @@ -0,0 +1,203 @@ +/** +* Simple Evas example illustrating import/export of .obj format. +* +* Read mesh from "man_mesh.obj". +* After that cheange some properties of material. +* After that save material to "saved_man.mtl" +* and geometry to "saved_man.obj". +* +* @verbatim +* gcc -o evas-3d-obj evas-3d-obj.c `pkg-config --libs --cflags evas ecore ecore-evas` +* @endverbatim +*/ + +#define EFL_EO_API_SUPPORT +#define EFL_BETA_API_SUPPORT + +#include +#include +#include +#include + +#define WIDTH 1024 +#define HEIGHT 1024 + +Ecore_Evas *ecore_evas = NULL; +Evas *evas = NULL; +Eo *background = NULL; +Eo *image = NULL; + +Eo *scene = NULL; +Eo *root_node = NULL; +Eo *camera_node = NULL; +Eo *light_node = NULL; +Eo *camera = NULL; +Eo *mesh_node = NULL; +Eo *mesh = NULL; +Eo *material = NULL; +Eo *texture = NULL; +Eo *light = NULL; + +static float angle = 0; + +static Eina_Bool +_animate_scene(void *data) +{ + angle += 0.5; + + eo_do((Evas_3D_Node *)data, evas_3d_node_orientation_angle_axis_set(angle, 1.0, 1.0, 1.0)); + + /* Rotate */ + if (angle > 360.0) angle -= 360.0f; + + return EINA_TRUE; +} + +static void +_on_delete(Ecore_Evas *ee EINA_UNUSED) +{ + ecore_main_loop_quit(); +} + +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + int w, h; + + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + eo_do(background, evas_obj_size_set(w, h)); + eo_do(image, evas_obj_size_set(w, h)); +} + +int +main(void) +{ + //Unless Evas 3D supports Software renderer, we set gl backened forcely. + setenv("ECORE_EVAS_ENGINE", "opengl_x11", 1); + + if (!ecore_evas_init()) return 0; + + ecore_evas = ecore_evas_new(NULL, 10, 10, WIDTH, HEIGHT, NULL); + + if (!ecore_evas) return 0; + + ecore_evas_callback_delete_request_set(ecore_evas, _on_delete); + ecore_evas_callback_resize_set(ecore_evas, _on_canvas_resize); + ecore_evas_show(ecore_evas); + + evas = ecore_evas_get(ecore_evas); + + /* Add a scene object .*/ + scene = eo_add(EVAS_3D_SCENE_CLASS, evas); + + /* Add the root node for the scene. */ + root_node = eo_add_custom(EVAS_3D_NODE_CLASS, evas, + evas_3d_node_constructor(EVAS_3D_NODE_TYPE_NODE)); + + /* Add the camera. */ + camera = eo_add(EVAS_3D_CAMERA_CLASS, evas); + eo_do(camera, + evas_3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 500.0)); + + camera_node = + eo_add_custom(EVAS_3D_NODE_CLASS, evas, + evas_3d_node_constructor(EVAS_3D_NODE_TYPE_CAMERA)); + eo_do(camera_node, + evas_3d_node_camera_set(camera)); + eo_do(root_node, + evas_3d_node_member_add(camera_node)); + eo_do(camera_node, + evas_3d_node_position_set(100.0, 0.0, 20.0), + evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 20.0, + EVAS_3D_SPACE_PARENT, 0.0, 0.0, 1.0)); + /* Add the light. */ + light = eo_add(EVAS_3D_LIGHT_CLASS, evas); + eo_do(light, + evas_3d_light_ambient_set(1.0, 1.0, 1.0, 1.0), + evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0), + evas_3d_light_specular_set(1.0, 1.0, 1.0, 1.0), + evas_3d_light_directional_set(EINA_TRUE)); + + light_node = + eo_add_custom(EVAS_3D_NODE_CLASS, evas, + evas_3d_node_constructor(EVAS_3D_NODE_TYPE_LIGHT)); + eo_do(light_node, + evas_3d_node_light_set(light), + evas_3d_node_position_set(1000.0, 0.0, 1000.0), + evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0, + EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0)); + eo_do(root_node, + evas_3d_node_member_add(light_node)); + + /* Add the mesh. */ + mesh = eo_add(EVAS_3D_MESH_CLASS, evas); + material = eo_add(EVAS_3D_MATERIAL_CLASS, evas); + + eo_do(mesh, + evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_OBJ, "man_mesh.obj", NULL), + evas_3d_mesh_frame_material_set(0, material), + evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)); + + texture = eo_add(EVAS_3D_TEXTURE_CLASS, evas); + eo_do(texture, + evas_3d_texture_file_set("indian_DIFF3.png", NULL), + evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, + EVAS_3D_TEXTURE_FILTER_NEAREST), + evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, + EVAS_3D_WRAP_MODE_REPEAT)); + eo_do(material, + evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, texture), + evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE), + evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE), + evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE), + evas_3d_material_enable_set(EVAS_3D_MATERIAL_NORMAL, EINA_TRUE), + evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, + 0.01, 0.01, 0.01, 1.0), + evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, + 1.0, 1.0, 1.0, 1.0), + evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, + 1.0, 1.0, 1.0, 1.0), + evas_3d_material_shininess_set(50.0)); + + eo_do(mesh, evas_3d_mesh_save(EVAS_3D_MESH_FILE_TYPE_OBJ, "saved_man", NULL)); + + mesh_node = eo_add_custom(EVAS_3D_NODE_CLASS, evas, + evas_3d_node_constructor(EVAS_3D_NODE_TYPE_MESH)); + eo_do(root_node, + evas_3d_node_member_add(mesh_node)); + eo_do(mesh_node, + evas_3d_node_mesh_add(mesh)); + + /* Set up scene. */ + eo_do(scene, + evas_3d_scene_root_node_set(root_node), + evas_3d_scene_camera_node_set(camera_node), + evas_3d_scene_size_set(WIDTH, HEIGHT)); + + /* Add a background rectangle objects. */ + background = eo_add(EVAS_OBJ_RECTANGLE_CLASS, evas); + eo_unref(background); + eo_do(background, + evas_obj_color_set(0, 0, 0, 255), + evas_obj_size_set(WIDTH, HEIGHT), + evas_obj_visibility_set(EINA_TRUE)); + + /* Add an image object for 3D scene rendering. */ + image = evas_object_image_filled_add(evas); + eo_do(image, + evas_obj_size_set(WIDTH, HEIGHT), + evas_obj_visibility_set(EINA_TRUE)); + + /* Set the image object as render target for 3D scene. */ + eo_do(image, evas_obj_image_scene_set(scene)); + + ecore_timer_add(0.01, _animate_scene, mesh_node); + + /* Enter main loop. */ + ecore_main_loop_begin(); + + ecore_evas_free(ecore_evas); + ecore_evas_shutdown(); + + return 0; +} diff --git a/src/examples/evas/indian_DIFF3.png b/src/examples/evas/indian_DIFF3.png new file mode 100644 index 0000000000..2f0be63df4 Binary files /dev/null and b/src/examples/evas/indian_DIFF3.png differ diff --git a/src/examples/evas/man_mesh.mtl b/src/examples/evas/man_mesh.mtl new file mode 100644 index 0000000000..8ce4b82074 --- /dev/null +++ b/src/examples/evas/man_mesh.mtl @@ -0,0 +1,11 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/src/examples/evas/man_mesh.obj b/src/examples/evas/man_mesh.obj new file mode 100644 index 0000000000..3383d8ef53 --- /dev/null +++ b/src/examples/evas/man_mesh.obj @@ -0,0 +1,2493 @@ +# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware +# File Created: 28.03.2014 15:19:59 + +mtllib man_mesh.mtl + +# +# object man_zbrush002 +# + +v 0.0000 47.2875 1.0942 +v 0.0000 50.0378 -9.4137 +v 0.0000 55.9506 -7.2501 +v 0.0000 24.1321 -0.3567 +v -4.6498 14.9457 -8.7856 +v -3.2526 0.0016 -8.5910 +v -1.7126 0.0249 -9.1957 +v -2.0203 14.6106 -8.2788 +v -4.0894 2.6330 -5.0313 +v -5.3088 13.9109 -3.7387 +v -1.5536 3.0595 -4.1735 +v -3.0616 3.5378 -3.4617 +v -1.7669 13.7549 -2.9187 +v -0.6260 0.0317 -8.3362 +v -0.9714 14.6448 -6.7064 +v -5.9192 37.6191 -4.5703 +v -5.4957 46.0431 -6.7324 +v -6.0295 46.1888 -3.9560 +v -4.6857 36.6641 -1.6164 +v -4.2985 47.0011 -0.0589 +v -7.2525 54.5245 -7.6150 +v -6.7758 50.2065 -7.5345 +v 0.0000 53.7381 -8.9868 +v -8.7478 53.7702 -7.3533 +v -6.6241 53.5298 -2.6537 +v -8.1843 53.1087 -3.3204 +v -9.8277 52.9897 -7.1885 +v -9.5084 52.4031 -3.6727 +v -15.6368 49.7151 -4.0157 +v -14.9891 50.5653 -7.2972 +v -2.3212 55.4710 -5.5708 +v -3.7738 51.0936 -1.0343 +v -7.8131 49.3427 -3.8869 +v -16.1362 50.0240 -7.5462 +v -14.8850 46.9747 -7.9460 +v -13.7795 47.4172 -7.7153 +v -14.9771 45.6892 -4.8210 +v -8.9272 49.1285 -4.1282 +v -8.7565 49.3211 -7.6329 +v -17.2082 49.4777 -7.5122 +v -16.8101 49.1399 -3.9288 +v -22.3487 46.9322 -2.8224 +v -22.5852 48.3277 -7.5944 +v -21.9364 43.0552 -3.7336 +v -16.1922 44.9604 -4.8771 +v -23.3377 47.2682 -6.9450 +v -22.1051 44.1196 -7.0740 +v -21.0612 44.1836 -7.6112 +v -15.8846 46.5205 -7.8558 +v -5.5985 31.8229 -1.4054 +v -7.4539 29.9108 -4.7820 +v -7.1743 32.8153 -5.1680 +v -4.9700 33.0828 -8.8713 +v -5.5953 29.7616 -8.4911 +v -6.8277 20.8590 -3.0514 +v -6.1947 19.5763 -3.4925 +v -5.4260 21.3413 -8.1311 +v -0.8999 21.4104 -8.3427 +v -0.8356 22.8539 -8.2030 +v -5.3178 22.9368 -8.0146 +v -1.8530 19.1642 -1.3853 +v -1.9574 20.6208 -1.2177 +v -5.2596 15.4904 -9.5994 +v -0.2944 16.1695 -7.9627 +v -1.2218 14.4504 -2.0041 +v -6.4987 14.6430 -4.0006 +v -1.4357 55.0574 -2.8845 +v -0.5960 60.2687 -0.2559 +v -0.1638 60.6728 0.4053 +v -0.2263 59.6318 0.7170 +v -0.6054 59.4536 0.0068 +v -0.7935 58.6118 -0.0224 +v -1.3407 61.3435 -1.0249 +v -2.2253 60.3012 -1.3344 +v -2.2095 61.2305 -1.5150 +v -0.4741 61.2949 -0.6078 +v -0.7854 61.5398 -0.0488 +v -0.1799 61.2747 0.0585 +v -1.7921 61.5632 -0.6482 +v -1.9014 62.8989 -1.2625 +v -2.5058 61.4136 -3.3339 +v -2.0718 58.0803 -1.8376 +v -2.3616 58.6526 -3.4054 +v -2.0435 58.6944 -1.7220 +v -1.4804 57.2878 -3.1674 +v -2.4848 60.6680 -2.0783 +v -0.8603 57.3392 -0.3453 +v -1.5075 57.9788 -4.8067 +v -0.5095 56.8628 -2.0812 +v -2.1892 21.9879 -1.4818 +v -6.5423 35.4806 -4.9028 +v -5.2832 35.9529 -7.8146 +v -3.7985 31.5525 -0.3863 +v -1.5687 1.9817 -0.6271 +v -3.7356 1.8169 0.2284 +v -1.8252 -0.0241 0.6012 +v -3.7693 -0.0090 1.1329 +v -5.3903 1.5682 -1.6703 +v -5.1768 -0.0250 -0.5983 +v -6.8240 22.1939 -3.2543 +v -0.8451 29.8910 -9.4915 +v -23.2655 44.2902 -3.6142 +v -23.3230 46.2280 -3.4252 +v -23.8813 46.2678 -5.9955 +v -23.2731 44.4791 -6.1705 +v -24.4461 44.0991 -3.0395 +v -24.9354 45.7429 -3.2888 +v -25.9827 45.6412 -5.9747 +v -25.7189 44.4079 -5.9891 +v -27.0580 43.7331 -1.4711 +v -26.7755 43.0070 -1.4929 +v -27.6379 42.3212 -1.9844 +v -27.1027 45.3202 -5.7351 +v -26.2463 42.9014 -5.3836 +v -26.7539 45.3983 -2.8586 +v -28.3806 42.3305 -3.0566 +v -28.6979 44.2382 -3.4775 +v -28.1009 44.1773 -2.4700 +v -28.5438 44.1780 -4.6514 +v -25.5872 43.5577 -2.0387 +v -26.1177 44.4879 -2.1987 +v -25.4919 42.8273 -2.3701 +v -3.4637 23.8728 -0.3567 +v -0.3403 31.4007 -9.9220 +v -0.4256 30.0691 -1.5036 +v -2.1628 35.7435 -9.5999 +v 0.0000 37.0098 0.5507 +v 0.0000 50.8802 0.1100 +v 0.0000 45.2358 -8.5163 +v 0.0000 59.3759 0.2727 +v 0.0000 62.7759 -0.3557 +v 0.0000 61.9130 -0.0480 +v 0.0000 56.8628 -2.0812 +v -2.8276 38.1718 -8.0883 +v -0.0000 31.5470 -9.9391 +v -28.2928 42.5431 -4.4468 +v 0.0000 38.2216 -8.0733 +v 4.6209 14.9457 -8.5161 +v 1.4564 14.6106 -8.6951 +v 1.7126 0.0249 -9.1957 +v 3.2526 0.0016 -8.5910 +v 4.0894 2.6330 -5.0313 +v 5.3088 13.9109 -3.7387 +v 1.5536 3.0595 -4.1735 +v 1.7669 13.7549 -2.9187 +v 3.0616 3.5378 -3.4617 +v 0.6260 0.0317 -8.3362 +v 1.2398 14.6448 -6.4653 +v 5.9192 37.6191 -4.5703 +v 6.0295 46.1888 -3.9560 +v 5.4957 46.0431 -6.7324 +v 2.8276 38.1718 -8.0883 +v 4.6857 36.6641 -1.6164 +v 4.2985 47.0011 -0.0589 +v 7.2525 54.5245 -7.6150 +v 6.7758 50.2065 -7.5345 +v 8.7478 53.7702 -7.3533 +v 8.1843 53.1087 -3.3204 +v 6.6241 53.5298 -2.6537 +v 9.8277 52.9897 -7.1885 +v 14.9891 50.5653 -7.2972 +v 15.6368 49.7151 -4.0157 +v 9.5084 52.4031 -3.6727 +v 2.3212 55.4710 -5.5708 +v 7.8131 49.3427 -3.8869 +v 3.7738 51.0936 -1.0343 +v 16.1362 50.0240 -7.5462 +v 13.7795 47.4172 -7.7153 +v 14.8850 46.9747 -7.9460 +v 8.7565 49.3211 -7.6329 +v 8.9272 49.1285 -4.1282 +v 14.9771 45.6892 -4.8210 +v 17.2082 49.4777 -7.5122 +v 22.5852 48.3277 -7.5944 +v 22.3487 46.9322 -2.8224 +v 16.8101 49.1399 -3.9288 +v 21.9364 43.0552 -3.7336 +v 16.1922 44.9604 -4.8771 +v 23.3377 47.2682 -6.9450 +v 21.0612 44.1836 -7.6112 +v 22.1051 44.1196 -7.0740 +v 15.8846 46.5205 -7.8558 +v 5.5985 31.8229 -1.4043 +v 7.1743 32.8153 -5.1673 +v 7.4539 29.9108 -4.7801 +v 4.9700 33.0828 -8.8719 +v 5.5953 29.7616 -8.4925 +v 6.8277 20.8590 -3.0448 +v 5.4260 21.3413 -8.1326 +v 6.1947 19.5763 -3.4786 +v 0.8999 21.4104 -8.3494 +v 5.3178 22.9368 -8.0162 +v 0.8356 22.8539 -8.2107 +v 1.9574 20.6208 -1.2115 +v 1.8530 19.1642 -1.3716 +v 0.1341 16.1695 -9.1747 +v 5.1172 15.4904 -9.6797 +v 1.7167 14.4504 -2.4592 +v 6.0692 14.6430 -3.7623 +v 0.0000 54.5221 -2.1876 +v 1.4357 55.0574 -2.8845 +v 0.5960 60.2687 -0.2559 +v 0.6054 59.4536 0.0068 +v 0.2263 59.6318 0.7170 +v 0.1638 60.6728 0.4053 +v 0.7935 58.6118 -0.0224 +v 0.0000 58.7353 0.2373 +v 1.3407 61.3435 -1.0249 +v 2.2095 61.2305 -1.5150 +v 2.2253 60.3012 -1.3344 +v 0.4741 61.2949 -0.6078 +v 0.1799 61.2747 0.0585 +v 0.7854 61.5398 -0.0488 +v 1.9014 62.8989 -1.2625 +v 1.7921 61.5632 -0.6482 +v 2.5058 61.4136 -3.3339 +v 2.0718 58.0803 -1.8376 +v 2.0435 58.6944 -1.7220 +v 2.3616 58.6526 -3.4054 +v 1.4804 57.2878 -3.1674 +v 2.4848 60.6680 -2.0783 +v 0.8603 57.3392 -0.3453 +v 0.0000 57.3204 0.1903 +v 1.5075 57.9788 -4.8067 +v 0.5095 56.8628 -2.0812 +v 2.1892 21.9879 -1.4837 +v 6.5423 35.4806 -4.9028 +v 5.2832 35.9529 -7.8146 +v 3.7985 31.5525 -0.3889 +v 3.7356 1.8169 0.2284 +v 1.5687 1.9817 -0.6271 +v 1.8252 -0.0241 0.6012 +v 3.7693 -0.0090 1.1329 +v 5.1768 -0.0250 -0.5983 +v 5.3903 1.5682 -1.6703 +v 6.8240 22.1939 -3.2515 +v 0.8451 29.8910 -9.4989 +v 23.3230 46.2280 -3.4252 +v 23.2655 44.2902 -3.6142 +v 23.2731 44.4791 -6.1705 +v 23.8813 46.2678 -5.9955 +v 24.9354 45.7429 -3.2888 +v 24.4461 44.0991 -3.0395 +v 25.7189 44.4079 -5.9891 +v 25.9827 45.6412 -5.9747 +v 0.0000 31.5525 0.1285 +v 27.0580 43.7331 -1.4711 +v 28.1009 44.1773 -2.4700 +v 27.6379 42.3212 -1.9844 +v 26.7755 43.0070 -1.4929 +v 26.2463 42.9014 -5.3836 +v 27.1027 45.3202 -5.7351 +v 26.7539 45.3983 -2.8586 +v 28.3806 42.3305 -3.0566 +v 28.6979 44.2382 -3.4775 +v 28.2928 42.5431 -4.4468 +v 28.5438 44.1780 -4.6514 +v 26.1177 44.4879 -2.1987 +v 25.5872 43.5577 -2.0387 +v 25.4919 42.8273 -2.3701 +v 3.4637 23.8728 -0.3567 +v 0.3403 31.4007 -9.9280 +v 0.4256 30.0691 -1.5075 +v 2.1628 35.7435 -9.5999 +v -0.0000 30.2154 -1.5220 +v 0.0000 35.7952 -9.5999 +v 0.7069 62.5386 -0.2897 +v 1.8382 62.2558 -0.8026 +v 1.9014 63.5323 -1.2476 +v 0.6723 63.4859 -0.4218 +v 3.1942 60.5972 -3.4604 +v 2.7587 63.5323 -3.3488 +v 3.0106 63.5323 -5.8687 +v 2.1305 53.6286 -1.3592 +v 4.0888 54.8798 -3.4604 +v 4.3407 55.2343 -6.2104 +v 2.3368 60.5972 -1.0725 +v 3.4460 60.5972 -5.9803 +v 1.9321 63.5323 -7.3112 +v 2.9903 54.4963 -8.2460 +v 2.5172 60.5972 -7.8792 +v 1.1714 65.0579 -2.2055 +v 1.7956 65.0579 -4.8061 +v 0.0000 63.5323 -8.1745 +v 0.0000 62.5386 -0.1403 +v 1.1873 53.6286 -3.1647 +v 1.3937 60.5972 -3.1647 +v -0.7069 62.5386 -0.2897 +v -1.8382 62.2558 -0.8026 +v -1.9014 63.5323 -1.2476 +v -0.6723 63.4859 -0.4218 +v -3.1942 60.5972 -3.4604 +v -2.7587 63.5323 -3.3488 +v -3.4460 60.5972 -5.9803 +v -3.0106 63.5323 -5.8687 +v -2.3368 60.5972 -1.0725 +v -2.1305 53.6286 -1.3592 +v -4.0888 54.8798 -3.4604 +v -4.3407 55.2343 -6.2104 +v -2.5172 60.5972 -7.8792 +v -1.9321 63.5323 -7.3112 +v -2.9903 54.4963 -8.2460 +v 0.0000 60.5972 -8.8128 +v 0.0000 54.0508 -8.7827 +v -1.1714 65.0579 -2.2055 +v -1.7956 65.0579 -4.8061 +v 0.0000 65.0579 -6.4214 +v 0.0000 65.5609 -4.0584 +v -1.3937 60.5972 -3.1647 +v -1.1873 53.6286 -3.1647 +v 5.7780 35.9947 -1.7731 +v 5.1150 35.7826 -2.0517 +v 5.7434 36.0196 -3.9959 +v 6.4636 36.2234 -3.7049 +v 8.5039 27.4359 -5.6703 +v 7.4519 27.2103 -3.5044 +v 6.5979 27.3323 -3.6902 +v 7.6499 27.5580 -5.8561 +v 8.7043 24.9057 -6.0365 +v 7.9848 25.1277 -6.1774 +v 2.7647 62.4556 -4.1284 +v 2.9040 62.4556 -5.7005 +v 4.8719 55.7996 -6.7654 +v 4.7366 55.7996 -5.1539 +v 4.0724 55.7996 -5.0402 +v 4.2078 55.7996 -6.6517 +v 4.5130 55.0077 -5.9098 +v 4.2911 55.0989 -5.8718 +# 328 vertices + +vn -0.0217 0.0232 -0.9995 +vn -0.0217 0.0232 -0.9995 +vn -0.0217 0.0232 -0.9995 +vn -0.0217 0.0232 -0.9995 +vn -0.9838 -0.0917 -0.1540 +vn -0.9838 -0.0917 -0.1540 +vn -0.9838 -0.0917 -0.1540 +vn -0.9838 -0.0917 -0.1540 +vn 0.3989 -0.0990 0.9116 +vn 0.3989 -0.0990 0.9116 +vn 0.3989 -0.0990 0.9116 +vn 0.9772 -0.0026 0.2125 +vn 0.9772 -0.0026 0.2125 +vn 0.9772 -0.0026 0.2125 +vn 0.9772 -0.0026 0.2125 +vn -0.8610 -0.0854 -0.5014 +vn -0.8610 -0.0854 -0.5014 +vn -0.8610 -0.0854 -0.5014 +vn -0.8610 -0.0854 -0.5014 +vn -0.9175 -0.0321 0.3964 +vn -0.9175 -0.0321 0.3964 +vn -0.9175 -0.0321 0.3964 +vn -0.9175 -0.0321 0.3964 +vn -0.2238 0.0288 -0.9742 +vn -0.2238 0.0288 -0.9742 +vn -0.2238 0.0288 -0.9742 +vn -0.2238 0.0288 -0.9742 +vn -0.3754 0.9014 0.2157 +vn -0.3754 0.9014 0.2157 +vn -0.3754 0.9014 0.2157 +vn -0.3754 0.9014 0.2157 +vn -0.4122 0.8952 0.1693 +vn -0.4122 0.8952 0.1693 +vn -0.4122 0.8952 0.1693 +vn -0.4122 0.8952 0.1693 +vn -0.3397 -0.0890 0.9363 +vn -0.3397 -0.0890 0.9363 +vn -0.3397 -0.0890 0.9363 +vn -0.3397 -0.0890 0.9363 +vn -0.1393 0.8417 -0.5216 +vn -0.1393 0.8417 -0.5216 +vn -0.1393 0.8417 -0.5216 +vn -0.1393 0.8417 -0.5216 +vn -0.5100 -0.1901 0.8389 +vn -0.5100 -0.1901 0.8389 +vn -0.5100 -0.1901 0.8389 +vn -0.5100 -0.1901 0.8389 +vn -0.9099 0.2029 0.3618 +vn -0.9099 0.2029 0.3618 +vn -0.9099 0.2029 0.3618 +vn -0.2668 0.2552 0.9293 +vn -0.2668 0.2552 0.9293 +vn -0.2668 0.2552 0.9293 +vn -0.2668 0.2552 0.9293 +vn 0.1291 0.1799 -0.9752 +vn 0.1291 0.1799 -0.9752 +vn 0.1291 0.1799 -0.9752 +vn 0.1291 0.1799 -0.9752 +vn 0.4379 -0.8826 -0.1713 +vn 0.4379 -0.8826 -0.1713 +vn 0.4379 -0.8826 -0.1713 +vn 0.4379 -0.8826 -0.1713 +vn -0.2686 0.9389 0.2152 +vn -0.2686 0.9389 0.2152 +vn -0.2686 0.9389 0.2152 +vn -0.2686 0.9389 0.2152 +vn 0.2569 -0.1860 0.9484 +vn 0.2569 -0.1860 0.9484 +vn 0.2569 -0.1860 0.9484 +vn 0.2569 -0.1860 0.9484 +vn -0.4719 -0.1610 -0.8668 +vn -0.4719 -0.1610 -0.8668 +vn -0.4719 -0.1610 -0.8668 +vn -0.4719 -0.1610 -0.8668 +vn 0.3121 -0.9015 -0.2997 +vn 0.3121 -0.9015 -0.2997 +vn 0.3121 -0.9015 -0.2997 +vn 0.3121 -0.9015 -0.2997 +vn -0.8992 0.1416 0.4139 +vn -0.8992 0.1416 0.4139 +vn -0.8992 0.1416 0.4139 +vn -0.8753 0.0683 -0.4787 +vn -0.8753 0.0683 -0.4787 +vn -0.8753 0.0683 -0.4787 +vn -0.8753 0.0683 -0.4787 +vn -0.8956 -0.3457 -0.2800 +vn -0.8956 -0.3457 -0.2800 +vn -0.8956 -0.3457 -0.2800 +vn -0.0441 0.0864 -0.9953 +vn -0.0441 0.0864 -0.9953 +vn -0.0441 0.0864 -0.9953 +vn -0.0441 0.0864 -0.9953 +vn 0.9869 0.0532 0.1524 +vn 0.9869 0.0532 0.1524 +vn 0.9869 0.0532 0.1524 +vn -0.3931 -0.2991 0.8695 +vn -0.3931 -0.2991 0.8695 +vn -0.3931 -0.2991 0.8695 +vn -0.3931 -0.2991 0.8695 +vn 0.1394 0.1063 -0.9845 +vn 0.1394 0.1063 -0.9845 +vn 0.1394 0.1063 -0.9845 +vn 0.1394 0.1063 -0.9845 +vn 0.9770 0.1171 0.1782 +vn 0.9770 0.1171 0.1782 +vn 0.9770 0.1171 0.1782 +vn 0.9770 0.1171 0.1782 +vn -0.3960 -0.1198 0.9104 +vn -0.3960 -0.1198 0.9104 +vn -0.3960 -0.1198 0.9104 +vn -0.3960 -0.1198 0.9104 +vn -0.9824 0.0457 -0.1810 +vn -0.9824 0.0457 -0.1810 +vn -0.9824 0.0457 -0.1810 +vn -0.9824 0.0457 -0.1810 +vn -0.8812 -0.3950 -0.2597 +vn -0.8812 -0.3950 -0.2597 +vn -0.8812 -0.3950 -0.2597 +vn -0.8812 -0.3950 -0.2597 +vn 0.3416 -0.9364 -0.0806 +vn 0.3416 -0.9364 -0.0806 +vn 0.3416 -0.9364 -0.0806 +vn 0.3416 -0.9364 -0.0806 +vn -0.2950 -0.2184 -0.9302 +vn -0.2950 -0.2184 -0.9302 +vn -0.2950 -0.2184 -0.9302 +vn -0.2950 -0.2184 -0.9302 +vn -0.2179 0.5180 0.8271 +vn -0.2179 0.5180 0.8271 +vn -0.2179 0.5180 0.8271 +vn -0.2179 0.5180 0.8271 +vn -0.8781 0.1721 0.4464 +vn -0.8781 0.1721 0.4464 +vn -0.8781 0.1721 0.4464 +vn -0.8781 0.1721 0.4464 +vn -0.3519 0.0039 0.9360 +vn -0.3519 0.0039 0.9360 +vn -0.3519 0.0039 0.9360 +vn -0.3519 0.0039 0.9360 +vn -0.5009 0.1733 0.8480 +vn -0.5009 0.1733 0.8480 +vn -0.5009 0.1733 0.8480 +vn -0.4195 -0.8939 0.1582 +vn -0.4195 -0.8939 0.1582 +vn -0.4195 -0.8939 0.1582 +vn -0.8797 0.2347 0.4135 +vn -0.8797 0.2347 0.4135 +vn -0.8797 0.2347 0.4135 +vn -0.8797 0.2347 0.4135 +vn -0.4054 0.4008 0.8216 +vn -0.4054 0.4008 0.8216 +vn -0.4054 0.4008 0.8216 +vn -0.4054 0.4008 0.8216 +vn -0.9589 0.1397 0.2470 +vn -0.9589 0.1397 0.2470 +vn -0.9589 0.1397 0.2470 +vn -0.9589 0.1397 0.2470 +vn -0.9826 0.0104 0.1854 +vn -0.9826 0.0104 0.1854 +vn -0.9826 0.0104 0.1854 +vn -0.8356 -0.5474 -0.0454 +vn -0.8356 -0.5474 -0.0454 +vn -0.8356 -0.5474 -0.0454 +vn -0.9624 -0.1782 0.2052 +vn -0.9624 -0.1782 0.2052 +vn -0.9624 -0.1782 0.2052 +vn -0.9624 -0.1782 0.2052 +vn -0.5693 0.1809 0.8020 +vn -0.5693 0.1809 0.8020 +vn -0.5693 0.1809 0.8020 +vn -0.5693 0.1809 0.8020 +vn -0.4248 -0.1131 0.8982 +vn -0.4248 -0.1131 0.8982 +vn -0.4248 -0.1131 0.8982 +vn -0.4248 -0.1131 0.8982 +vn -0.8013 -0.5559 -0.2211 +vn -0.8013 -0.5559 -0.2211 +vn -0.8013 -0.5559 -0.2211 +vn -0.6057 -0.0427 0.7945 +vn -0.6057 -0.0427 0.7945 +vn -0.6057 -0.0427 0.7945 +vn -0.6057 -0.0427 0.7945 +vn -0.9625 0.1322 0.2368 +vn -0.9625 0.1322 0.2368 +vn -0.9625 0.1322 0.2368 +vn -0.9625 0.1322 0.2368 +vn 0.3299 -0.1772 -0.9272 +vn 0.3299 -0.1772 -0.9272 +vn 0.3299 -0.1772 -0.9272 +vn 0.9234 -0.3825 0.0334 +vn 0.9234 -0.3825 0.0334 +vn 0.9234 -0.3825 0.0334 +vn -0.2812 -0.5012 0.8184 +vn -0.2812 -0.5012 0.8184 +vn -0.2812 -0.5012 0.8184 +vn -0.2812 -0.5012 0.8184 +vn -0.4657 -0.8535 -0.2339 +vn -0.4657 -0.8535 -0.2339 +vn -0.4657 -0.8535 -0.2339 +vn -0.4657 -0.8535 -0.2339 +vn 0.9816 0.0664 0.1789 +vn 0.9816 0.0664 0.1789 +vn 0.9816 0.0664 0.1789 +vn 0.9816 0.0664 0.1789 +vn -0.8820 0.1569 -0.4443 +vn -0.8820 0.1569 -0.4443 +vn -0.8820 0.1569 -0.4443 +vn -0.8820 0.1569 -0.4443 +vn -0.8922 0.1699 0.4185 +vn -0.8922 0.1699 0.4185 +vn -0.8922 0.1699 0.4185 +vn -0.4741 0.1274 0.8712 +vn -0.4741 0.1274 0.8712 +vn -0.4741 0.1274 0.8712 +vn -0.9265 0.0869 0.3661 +vn -0.9265 0.0869 0.3661 +vn -0.9265 0.0869 0.3661 +vn -0.1743 -0.1645 0.9709 +vn -0.1743 -0.1645 0.9709 +vn -0.1743 -0.1645 0.9709 +vn -0.1743 -0.1645 0.9709 +vn -0.5265 0.8267 0.1983 +vn -0.5265 0.8267 0.1983 +vn -0.5265 0.8267 0.1983 +vn -0.5265 0.8267 0.1983 +vn -0.1549 -0.0355 -0.9873 +vn -0.1549 -0.0355 -0.9873 +vn -0.1549 -0.0355 -0.9873 +vn 0.0017 -0.1699 0.9855 +vn 0.0017 -0.1699 0.9855 +vn 0.0017 -0.1699 0.9855 +vn 0.0017 -0.1699 0.9855 +vn -0.2158 0.8144 0.5387 +vn -0.2158 0.8144 0.5387 +vn -0.2158 0.8144 0.5387 +vn -0.2158 0.8144 0.5387 +vn -0.2761 0.9321 0.2345 +vn -0.2761 0.9321 0.2345 +vn -0.2761 0.9321 0.2345 +vn -0.9428 0.2795 0.1817 +vn -0.9428 0.2795 0.1817 +vn -0.9428 0.2795 0.1817 +vn -0.9986 -0.0518 -0.0141 +vn -0.9986 -0.0518 -0.0141 +vn -0.9986 -0.0518 -0.0141 +vn -0.1080 -0.9096 0.4012 +vn -0.1080 -0.9096 0.4012 +vn -0.1080 -0.9096 0.4012 +vn 0.2345 0.8990 0.3700 +vn 0.2345 0.8990 0.3700 +vn 0.2345 0.8990 0.3700 +vn 0.2345 0.8990 0.3700 +vn 0.9921 0.0722 0.1030 +vn 0.9921 0.0722 0.1030 +vn 0.9921 0.0722 0.1030 +vn 0.9921 0.0722 0.1030 +vn -0.0022 -1.0000 -0.0050 +vn -0.0022 -1.0000 -0.0050 +vn -0.0022 -1.0000 -0.0050 +vn -0.0022 -1.0000 -0.0050 +vn 0.7487 0.0742 -0.6587 +vn 0.7487 0.0742 -0.6587 +vn 0.7487 0.0742 -0.6587 +vn 0.7487 0.0742 -0.6587 +vn 0.2703 0.4526 0.8498 +vn 0.2703 0.4526 0.8498 +vn 0.2703 0.4526 0.8498 +vn 0.2703 0.4526 0.8498 +vn -0.9574 -0.0737 -0.2791 +vn -0.9574 -0.0737 -0.2791 +vn -0.9574 -0.0737 -0.2791 +vn -0.9574 -0.0737 -0.2791 +vn -0.7381 0.3081 0.6002 +vn -0.7381 0.3081 0.6002 +vn -0.7381 0.3081 0.6002 +vn -0.7381 0.3081 0.6002 +vn -0.5607 0.8117 0.1637 +vn -0.5607 0.8117 0.1637 +vn -0.5607 0.8117 0.1637 +vn -0.5607 0.8117 0.1637 +vn -0.4525 -0.0743 0.8887 +vn -0.4525 -0.0743 0.8887 +vn -0.4525 -0.0743 0.8887 +vn -0.4525 -0.0743 0.8887 +vn 0.0015 -0.8305 -0.5570 +vn 0.0015 -0.8305 -0.5570 +vn 0.0015 -0.8305 -0.5570 +vn 0.6496 -0.6341 -0.4195 +vn 0.6496 -0.6341 -0.4195 +vn 0.6496 -0.6341 -0.4195 +vn -0.9596 0.0284 -0.2800 +vn -0.9596 0.0284 -0.2800 +vn -0.9596 0.0284 -0.2800 +vn -0.9596 0.0284 -0.2800 +vn -0.1260 -0.1279 -0.9838 +vn -0.1260 -0.1279 -0.9838 +vn -0.1260 -0.1279 -0.9838 +vn -0.1260 -0.1279 -0.9838 +vn -0.3463 0.1313 0.9289 +vn -0.3463 0.1313 0.9289 +vn -0.3463 0.1313 0.9289 +vn -0.3463 0.1313 0.9289 +vn -0.2764 -0.8870 0.3700 +vn -0.2764 -0.8870 0.3700 +vn -0.2764 -0.8870 0.3700 +vn -0.2451 -0.1993 0.9488 +vn -0.2451 -0.1993 0.9488 +vn -0.2451 -0.1993 0.9488 +vn -0.2451 -0.1993 0.9488 +vn -0.6807 -0.2106 -0.7016 +vn -0.6807 -0.2106 -0.7016 +vn -0.6807 -0.2106 -0.7016 +vn -0.6807 -0.2106 -0.7016 +vn -0.7106 0.6739 0.2021 +vn -0.7106 0.6739 0.2021 +vn -0.7106 0.6739 0.2021 +vn -0.7106 0.6739 0.2021 +vn -0.5757 -0.8031 -0.1535 +vn -0.5757 -0.8031 -0.1535 +vn -0.5757 -0.8031 -0.1535 +vn -0.5757 -0.8031 -0.1535 +vn 0.2345 0.0522 0.9707 +vn 0.2345 0.0522 0.9707 +vn 0.2345 0.0522 0.9707 +vn 0.2345 0.0522 0.9707 +vn -0.0517 0.0476 -0.9975 +vn -0.0517 0.0476 -0.9975 +vn -0.0517 0.0476 -0.9975 +vn -0.0517 0.0476 -0.9975 +vn -0.2831 0.9562 0.0752 +vn -0.2831 0.9562 0.0752 +vn -0.2831 0.9562 0.0752 +vn -0.2831 0.9562 0.0752 +vn 0.0507 -0.9935 -0.1016 +vn 0.0507 -0.9935 -0.1016 +vn 0.0507 -0.9935 -0.1016 +vn 0.0507 -0.9935 -0.1016 +vn -0.3028 0.0473 0.9519 +vn -0.3028 0.0473 0.9519 +vn -0.3028 0.0473 0.9519 +vn -0.3028 0.0473 0.9519 +vn -0.6130 -0.0352 0.7893 +vn -0.6130 -0.0352 0.7893 +vn -0.6130 -0.0352 0.7893 +vn -0.6130 -0.0352 0.7893 +vn -0.2884 -0.1753 -0.9413 +vn -0.2884 -0.1753 -0.9413 +vn -0.2884 -0.1753 -0.9413 +vn -0.2884 -0.1753 -0.9413 +vn -0.2159 0.9761 0.0226 +vn -0.2159 0.9761 0.0226 +vn -0.2159 0.9761 0.0226 +vn -0.2159 0.9761 0.0226 +vn 0.8065 -0.4408 -0.3941 +vn 0.8065 -0.4408 -0.3941 +vn 0.8065 -0.4408 -0.3941 +vn -0.8405 -0.0442 0.5400 +vn -0.8405 -0.0442 0.5400 +vn -0.8405 -0.0442 0.5400 +vn -0.8405 -0.0442 0.5400 +vn -0.9791 -0.1752 -0.1028 +vn -0.9791 -0.1752 -0.1028 +vn -0.9791 -0.1752 -0.1028 +vn -0.9791 -0.1752 -0.1028 +vn -0.5602 0.7378 0.3766 +vn -0.5602 0.7378 0.3766 +vn -0.5602 0.7378 0.3766 +vn 0.4841 0.3212 0.8139 +vn 0.4841 0.3212 0.8139 +vn 0.4841 0.3212 0.8139 +vn 0.4841 0.3212 0.8139 +vn 0.7657 -0.6427 -0.0248 +vn 0.7657 -0.6427 -0.0248 +vn 0.7657 -0.6427 -0.0248 +vn 0.7657 -0.6427 -0.0248 +vn 0.0687 0.6166 0.7843 +vn 0.0687 0.6166 0.7843 +vn 0.0687 0.6166 0.7843 +vn -0.0696 -0.0316 0.9971 +vn -0.0696 -0.0316 0.9971 +vn -0.0696 -0.0316 0.9971 +vn -0.0696 -0.0316 0.9971 +vn -0.7898 -0.2268 0.5698 +vn -0.7898 -0.2268 0.5698 +vn -0.7898 -0.2268 0.5698 +vn -0.8001 -0.0972 0.5919 +vn -0.8001 -0.0972 0.5919 +vn -0.8001 -0.0972 0.5919 +vn -0.8001 -0.0972 0.5919 +vn -0.5940 -0.7913 0.1450 +vn -0.5940 -0.7913 0.1450 +vn -0.5940 -0.7913 0.1450 +vn -0.5940 -0.7913 0.1450 +vn -0.0906 0.1887 0.9778 +vn -0.0906 0.1887 0.9778 +vn -0.0906 0.1887 0.9778 +vn -0.0984 0.0806 -0.9919 +vn -0.0984 0.0806 -0.9919 +vn -0.0984 0.0806 -0.9919 +vn -0.0984 0.0806 -0.9919 +vn -0.4368 0.8892 0.1359 +vn -0.4368 0.8892 0.1359 +vn -0.4368 0.8892 0.1359 +vn -0.4368 0.8892 0.1359 +vn 0.4359 -0.8263 -0.3567 +vn 0.4359 -0.8263 -0.3567 +vn 0.4359 -0.8263 -0.3567 +vn 0.4359 -0.8263 -0.3567 +vn 0.1164 -0.1902 0.9748 +vn 0.1164 -0.1902 0.9748 +vn 0.1164 -0.1902 0.9748 +vn 0.1164 -0.1902 0.9748 +vn -0.0304 0.1155 -0.9928 +vn -0.0304 0.1155 -0.9928 +vn -0.0304 0.1155 -0.9928 +vn -0.0304 0.1155 -0.9928 +vn -0.4473 0.8833 0.1406 +vn -0.4473 0.8833 0.1406 +vn -0.4473 0.8833 0.1406 +vn 0.4096 -0.8479 -0.3367 +vn 0.4096 -0.8479 -0.3367 +vn 0.4096 -0.8479 -0.3367 +vn 0.7771 -0.6292 0.0154 +vn 0.7771 -0.6292 0.0154 +vn 0.7771 -0.6292 0.0154 +vn 0.3745 0.2581 0.8906 +vn 0.3745 0.2581 0.8906 +vn 0.3745 0.2581 0.8906 +vn 0.3745 0.2581 0.8906 +vn 0.3866 -0.6109 0.6909 +vn 0.3866 -0.6109 0.6909 +vn 0.3866 -0.6109 0.6909 +vn 0.3866 -0.6109 0.6909 +vn -0.2026 0.7986 0.5667 +vn -0.2026 0.7986 0.5667 +vn -0.2026 0.7986 0.5667 +vn -0.3472 -0.1729 0.9217 +vn -0.3472 -0.1729 0.9217 +vn -0.3472 -0.1729 0.9217 +vn -0.0557 0.0627 -0.9965 +vn -0.0557 0.0627 -0.9965 +vn -0.0557 0.0627 -0.9965 +vn -0.0557 0.0627 -0.9965 +vn -0.5625 0.8268 -0.0012 +vn -0.5625 0.8268 -0.0012 +vn -0.5625 0.8268 -0.0012 +vn -0.5625 0.8268 -0.0012 +vn 0.1065 -0.9839 -0.1437 +vn 0.1065 -0.9839 -0.1437 +vn 0.1065 -0.9839 -0.1437 +vn -0.1926 0.4841 0.8535 +vn -0.1926 0.4841 0.8535 +vn -0.1926 0.4841 0.8535 +vn 0.0135 -0.9999 -0.0004 +vn 0.0135 -0.9999 -0.0004 +vn 0.0135 -0.9999 -0.0004 +vn 0.0135 -0.9999 -0.0004 +vn -0.1584 0.3315 0.9300 +vn -0.1584 0.3315 0.9300 +vn -0.1584 0.3315 0.9300 +vn 0.9439 -0.3276 -0.0423 +vn 0.9439 -0.3276 -0.0423 +vn 0.9439 -0.3276 -0.0423 +vn 0.0000 -0.0454 0.9990 +vn 0.0000 -0.0454 0.9990 +vn 0.0000 -0.0454 0.9990 +vn -0.0985 -0.9710 0.2177 +vn -0.0985 -0.9710 0.2177 +vn -0.0985 -0.9710 0.2177 +vn -0.0985 -0.9710 0.2177 +vn -0.8813 0.0215 0.4721 +vn -0.8813 0.0215 0.4721 +vn -0.8813 0.0215 0.4721 +vn -0.9212 -0.1090 -0.3736 +vn -0.9212 -0.1090 -0.3736 +vn -0.9212 -0.1090 -0.3736 +vn -0.9212 -0.1090 -0.3736 +vn -0.4028 -0.1467 0.9035 +vn -0.4028 -0.1467 0.9035 +vn -0.4028 -0.1467 0.9035 +vn -0.4028 -0.1467 0.9035 +vn -0.2295 -0.1086 -0.9672 +vn -0.2295 -0.1086 -0.9672 +vn -0.2295 -0.1086 -0.9672 +vn -0.2295 -0.1086 -0.9672 +vn 0.9922 -0.1101 0.0579 +vn 0.9922 -0.1101 0.0579 +vn 0.9922 -0.1101 0.0579 +vn 0.9922 -0.1101 0.0579 +vn -0.3243 0.0841 -0.9422 +vn -0.3243 0.0841 -0.9422 +vn -0.3243 0.0841 -0.9422 +vn -0.3243 0.0841 -0.9422 +vn -0.8896 0.3112 -0.3342 +vn -0.8896 0.3112 -0.3342 +vn -0.8896 0.3112 -0.3342 +vn -0.8826 0.1867 0.4314 +vn -0.8826 0.1867 0.4314 +vn -0.8826 0.1867 0.4314 +vn -0.8826 0.1867 0.4314 +vn -0.4908 0.2558 0.8329 +vn -0.4908 0.2558 0.8329 +vn -0.4908 0.2558 0.8329 +vn -0.4908 0.2558 0.8329 +vn -0.1991 -0.9326 0.3009 +vn -0.1991 -0.9326 0.3009 +vn -0.1991 -0.9326 0.3009 +vn -0.1991 -0.9326 0.3009 +vn -0.2058 0.0231 -0.9783 +vn -0.2058 0.0231 -0.9783 +vn -0.2058 0.0231 -0.9783 +vn -0.2058 0.0231 -0.9783 +vn 0.2897 -0.0607 0.9552 +vn 0.2897 -0.0607 0.9552 +vn 0.2897 -0.0607 0.9552 +vn 0.3472 -0.9265 -0.1448 +vn 0.3472 -0.9265 -0.1448 +vn 0.3472 -0.9265 -0.1448 +vn 0.3472 -0.9265 -0.1448 +vn -0.0284 0.0393 -0.9988 +vn -0.0284 0.0393 -0.9988 +vn -0.0284 0.0393 -0.9988 +vn -0.0284 0.0393 -0.9988 +vn -0.7231 0.6525 0.2267 +vn -0.7231 0.6525 0.2267 +vn -0.7231 0.6525 0.2267 +vn -0.0951 -0.9499 -0.2979 +vn -0.0951 -0.9499 -0.2979 +vn -0.0951 -0.9499 -0.2979 +vn 0.0000 -0.8666 0.4991 +vn 0.0000 -0.8666 0.4991 +vn 0.0000 -0.8666 0.4991 +vn 0.0000 0.2868 0.9580 +vn 0.0000 0.2868 0.9580 +vn 0.0000 0.2868 0.9580 +vn 0.0000 0.2868 0.9580 +vn -0.0127 0.0741 -0.9972 +vn -0.0127 0.0741 -0.9972 +vn -0.0127 0.0741 -0.9972 +vn -0.0127 0.0741 -0.9972 +vn -0.5617 0.5448 -0.6226 +vn -0.5617 0.5448 -0.6226 +vn -0.5617 0.5448 -0.6226 +vn -0.5617 0.5448 -0.6226 +vn -0.4104 -0.2331 -0.8816 +vn -0.4104 -0.2331 -0.8816 +vn -0.4104 -0.2331 -0.8816 +vn -0.4104 -0.2331 -0.8816 +vn 0.2017 -0.9682 -0.1481 +vn 0.2017 -0.9682 -0.1481 +vn 0.2017 -0.9682 -0.1481 +vn 0.1853 -0.9802 -0.0705 +vn 0.1853 -0.9802 -0.0705 +vn 0.1853 -0.9802 -0.0705 +vn 0.0000 0.4993 0.8664 +vn 0.0000 0.4993 0.8664 +vn 0.0000 0.4993 0.8664 +vn 0.0000 0.4993 0.8664 +vn 0.0000 0.1646 0.9864 +vn 0.0000 0.1646 0.9864 +vn 0.0000 0.1646 0.9864 +vn -0.0082 0.5297 -0.8482 +vn -0.0082 0.5297 -0.8482 +vn -0.0082 0.5297 -0.8482 +vn -0.0082 0.5297 -0.8482 +vn 0.1634 0.0131 -0.9865 +vn 0.1634 0.0131 -0.9865 +vn 0.1634 0.0131 -0.9865 +vn 0.1634 0.0131 -0.9865 +vn 0.9827 -0.0885 -0.1628 +vn 0.9827 -0.0885 -0.1628 +vn 0.9827 -0.0885 -0.1628 +vn 0.9827 -0.0885 -0.1628 +vn -0.3989 -0.0990 0.9116 +vn -0.3989 -0.0990 0.9116 +vn -0.3989 -0.0990 0.9116 +vn -0.9831 0.0095 0.1829 +vn -0.9831 0.0095 0.1829 +vn -0.9831 0.0095 0.1829 +vn -0.9831 0.0095 0.1829 +vn 0.8610 -0.0854 -0.5014 +vn 0.8610 -0.0854 -0.5014 +vn 0.8610 -0.0854 -0.5014 +vn 0.8610 -0.0854 -0.5014 +vn 0.9175 -0.0321 0.3964 +vn 0.9175 -0.0321 0.3964 +vn 0.9175 -0.0321 0.3964 +vn 0.9175 -0.0321 0.3964 +vn 0.2238 0.0288 -0.9742 +vn 0.2238 0.0288 -0.9742 +vn 0.2238 0.0288 -0.9742 +vn 0.2238 0.0288 -0.9742 +vn 0.3754 0.9014 0.2157 +vn 0.3754 0.9014 0.2157 +vn 0.3754 0.9014 0.2157 +vn 0.3754 0.9014 0.2157 +vn 0.4122 0.8952 0.1693 +vn 0.4122 0.8952 0.1693 +vn 0.4122 0.8952 0.1693 +vn 0.4122 0.8952 0.1693 +vn 0.3397 -0.0890 0.9363 +vn 0.3397 -0.0890 0.9363 +vn 0.3397 -0.0890 0.9363 +vn 0.3397 -0.0890 0.9363 +vn 0.1393 0.8417 -0.5216 +vn 0.1393 0.8417 -0.5216 +vn 0.1393 0.8417 -0.5216 +vn 0.1393 0.8417 -0.5216 +vn 0.7724 -0.0229 0.6347 +vn 0.7724 -0.0229 0.6347 +vn 0.7724 -0.0229 0.6347 +vn 0.7724 -0.0229 0.6347 +vn 0.3000 -0.1901 0.9348 +vn 0.3000 -0.1901 0.9348 +vn 0.3000 -0.1901 0.9348 +vn 0.2668 0.2552 0.9293 +vn 0.2668 0.2552 0.9293 +vn 0.2668 0.2552 0.9293 +vn 0.2668 0.2552 0.9293 +vn -0.1291 0.1799 -0.9752 +vn -0.1291 0.1799 -0.9752 +vn -0.1291 0.1799 -0.9752 +vn -0.1291 0.1799 -0.9752 +vn -0.4379 -0.8826 -0.1713 +vn -0.4379 -0.8826 -0.1713 +vn -0.4379 -0.8826 -0.1713 +vn -0.4379 -0.8826 -0.1713 +vn 0.2686 0.9389 0.2152 +vn 0.2686 0.9389 0.2152 +vn 0.2686 0.9389 0.2152 +vn 0.2686 0.9389 0.2152 +vn -0.2569 -0.1860 0.9484 +vn -0.2569 -0.1860 0.9484 +vn -0.2569 -0.1860 0.9484 +vn -0.2569 -0.1860 0.9484 +vn 0.4719 -0.1610 -0.8668 +vn 0.4719 -0.1610 -0.8668 +vn 0.4719 -0.1610 -0.8668 +vn 0.4719 -0.1610 -0.8668 +vn -0.3121 -0.9015 -0.2997 +vn -0.3121 -0.9015 -0.2997 +vn -0.3121 -0.9015 -0.2997 +vn -0.3121 -0.9015 -0.2997 +vn 0.8992 0.1417 0.4139 +vn 0.8992 0.1417 0.4139 +vn 0.8992 0.1417 0.4139 +vn 0.8754 0.0683 -0.4785 +vn 0.8754 0.0683 -0.4785 +vn 0.8754 0.0683 -0.4785 +vn 0.8754 0.0683 -0.4785 +vn 0.8951 -0.3473 -0.2795 +vn 0.8951 -0.3473 -0.2795 +vn 0.8951 -0.3473 -0.2795 +vn 0.0453 0.0861 -0.9953 +vn 0.0453 0.0861 -0.9953 +vn 0.0453 0.0861 -0.9953 +vn 0.0453 0.0861 -0.9953 +vn -0.9869 0.0540 0.1522 +vn -0.9869 0.0540 0.1522 +vn -0.9869 0.0540 0.1522 +vn 0.3933 -0.2947 0.8709 +vn 0.3933 -0.2947 0.8709 +vn 0.3933 -0.2947 0.8709 +vn 0.3933 -0.2947 0.8709 +vn -0.0131 0.2104 -0.9775 +vn -0.0131 0.2104 -0.9775 +vn -0.0131 0.2104 -0.9775 +vn -0.0131 0.2104 -0.9775 +vn -0.9792 0.0511 0.1961 +vn -0.9792 0.0511 0.1961 +vn -0.9792 0.0511 0.1961 +vn -0.9792 0.0511 0.1961 +vn 0.3700 -0.1406 0.9183 +vn 0.3700 -0.1406 0.9183 +vn 0.3700 -0.1406 0.9183 +vn 0.3700 -0.1406 0.9183 +vn 0.9865 -0.0120 -0.1635 +vn 0.9865 -0.0120 -0.1635 +vn 0.9865 -0.0120 -0.1635 +vn 0.9865 -0.0120 -0.1635 +vn 0.8812 -0.3950 -0.2597 +vn 0.8812 -0.3950 -0.2597 +vn 0.8812 -0.3950 -0.2597 +vn 0.8812 -0.3950 -0.2597 +vn -0.3416 -0.9364 -0.0806 +vn -0.3416 -0.9364 -0.0806 +vn -0.3416 -0.9364 -0.0806 +vn -0.3416 -0.9364 -0.0806 +vn 0.2950 -0.2184 -0.9302 +vn 0.2950 -0.2184 -0.9302 +vn 0.2950 -0.2184 -0.9302 +vn 0.2950 -0.2184 -0.9302 +vn 0.2179 0.5180 0.8271 +vn 0.2179 0.5180 0.8271 +vn 0.2179 0.5180 0.8271 +vn 0.2179 0.5180 0.8271 +vn 0.8781 0.1721 0.4464 +vn 0.8781 0.1721 0.4464 +vn 0.8781 0.1721 0.4464 +vn 0.8781 0.1721 0.4464 +vn 0.3519 0.0039 0.9360 +vn 0.3519 0.0039 0.9360 +vn 0.3519 0.0039 0.9360 +vn 0.3519 0.0039 0.9360 +vn 0.5009 0.1733 0.8480 +vn 0.5009 0.1733 0.8480 +vn 0.5009 0.1733 0.8480 +vn 0.4195 -0.8939 0.1582 +vn 0.4195 -0.8939 0.1582 +vn 0.4195 -0.8939 0.1582 +vn 0.8797 0.2347 0.4135 +vn 0.8797 0.2347 0.4135 +vn 0.8797 0.2347 0.4135 +vn 0.8797 0.2347 0.4135 +vn 0.4054 0.4008 0.8216 +vn 0.4054 0.4008 0.8216 +vn 0.4054 0.4008 0.8216 +vn 0.4054 0.4008 0.8216 +vn 0.9589 0.1397 0.2470 +vn 0.9589 0.1397 0.2470 +vn 0.9589 0.1397 0.2470 +vn 0.9589 0.1397 0.2470 +vn 0.9826 0.0104 0.1854 +vn 0.9826 0.0104 0.1854 +vn 0.9826 0.0104 0.1854 +vn 0.8356 -0.5474 -0.0454 +vn 0.8356 -0.5474 -0.0454 +vn 0.8356 -0.5474 -0.0454 +vn 0.9624 -0.1782 0.2052 +vn 0.9624 -0.1782 0.2052 +vn 0.9624 -0.1782 0.2052 +vn 0.9624 -0.1782 0.2052 +vn 0.5693 0.1809 0.8020 +vn 0.5693 0.1809 0.8020 +vn 0.5693 0.1809 0.8020 +vn 0.5693 0.1809 0.8020 +vn 0.4248 -0.1131 0.8982 +vn 0.4248 -0.1131 0.8982 +vn 0.4248 -0.1131 0.8982 +vn 0.4248 -0.1131 0.8982 +vn 0.8013 -0.5559 -0.2211 +vn 0.8013 -0.5559 -0.2211 +vn 0.8013 -0.5559 -0.2211 +vn 0.6057 -0.0427 0.7945 +vn 0.6057 -0.0427 0.7945 +vn 0.6057 -0.0427 0.7945 +vn 0.6057 -0.0427 0.7945 +vn 0.9625 0.1322 0.2368 +vn 0.9625 0.1322 0.2368 +vn 0.9625 0.1322 0.2368 +vn 0.9625 0.1322 0.2368 +vn -0.1464 -0.4023 -0.9037 +vn -0.1464 -0.4023 -0.9037 +vn -0.1464 -0.4023 -0.9037 +vn -0.8689 -0.4884 0.0797 +vn -0.8689 -0.4884 0.0797 +vn -0.8689 -0.4884 0.0797 +vn 0.2547 -0.3961 0.8821 +vn 0.2547 -0.3961 0.8821 +vn 0.2547 -0.3961 0.8821 +vn 0.2547 -0.3961 0.8821 +vn 0.5805 -0.7821 -0.2267 +vn 0.5805 -0.7821 -0.2267 +vn 0.5805 -0.7821 -0.2267 +vn 0.5805 -0.7821 -0.2267 +vn -0.9816 0.0670 0.1787 +vn -0.9816 0.0670 0.1787 +vn -0.9816 0.0670 0.1787 +vn -0.9816 0.0670 0.1787 +vn 0.8821 0.1569 -0.4442 +vn 0.8821 0.1569 -0.4442 +vn 0.8821 0.1569 -0.4442 +vn 0.8821 0.1569 -0.4442 +vn 0.8922 0.1700 0.4184 +vn 0.8922 0.1700 0.4184 +vn 0.8922 0.1700 0.4184 +vn 0.4727 0.1273 0.8720 +vn 0.4727 0.1273 0.8720 +vn 0.4727 0.1273 0.8720 +vn 0.9265 0.0869 0.3661 +vn 0.9265 0.0869 0.3661 +vn 0.9265 0.0869 0.3661 +vn 0.1743 -0.1645 0.9709 +vn 0.1743 -0.1645 0.9709 +vn 0.1743 -0.1645 0.9709 +vn 0.1743 -0.1645 0.9709 +vn 0.5265 0.8267 0.1983 +vn 0.5265 0.8267 0.1983 +vn 0.5265 0.8267 0.1983 +vn 0.5265 0.8267 0.1983 +vn 0.1549 -0.0355 -0.9873 +vn 0.1549 -0.0355 -0.9873 +vn 0.1549 -0.0355 -0.9873 +vn -0.0017 -0.1699 0.9855 +vn -0.0017 -0.1699 0.9855 +vn -0.0017 -0.1699 0.9855 +vn -0.0017 -0.1699 0.9855 +vn 0.2158 0.8144 0.5387 +vn 0.2158 0.8144 0.5387 +vn 0.2158 0.8144 0.5387 +vn 0.2158 0.8144 0.5387 +vn 0.2761 0.9321 0.2345 +vn 0.2761 0.9321 0.2345 +vn 0.2761 0.9321 0.2345 +vn 0.9428 0.2795 0.1817 +vn 0.9428 0.2795 0.1817 +vn 0.9428 0.2795 0.1817 +vn 0.9986 -0.0518 -0.0141 +vn 0.9986 -0.0518 -0.0141 +vn 0.9986 -0.0518 -0.0141 +vn 0.1080 -0.9096 0.4012 +vn 0.1080 -0.9096 0.4012 +vn 0.1080 -0.9096 0.4012 +vn -0.2345 0.8990 0.3700 +vn -0.2345 0.8990 0.3700 +vn -0.2345 0.8990 0.3700 +vn -0.2345 0.8990 0.3700 +vn -0.9921 0.0722 0.1030 +vn -0.9921 0.0722 0.1030 +vn -0.9921 0.0722 0.1030 +vn -0.9921 0.0722 0.1030 +vn 0.0022 -1.0000 -0.0050 +vn 0.0022 -1.0000 -0.0050 +vn 0.0022 -1.0000 -0.0050 +vn 0.0022 -1.0000 -0.0050 +vn -0.9203 0.0429 -0.3888 +vn -0.9203 0.0429 -0.3888 +vn -0.9203 0.0429 -0.3888 +vn -0.9203 0.0429 -0.3888 +vn -0.2703 0.4526 0.8498 +vn -0.2703 0.4526 0.8498 +vn -0.2703 0.4526 0.8498 +vn -0.2703 0.4526 0.8498 +vn 0.9574 -0.0737 -0.2791 +vn 0.9574 -0.0737 -0.2791 +vn 0.9574 -0.0737 -0.2791 +vn 0.9574 -0.0737 -0.2791 +vn 0.7381 0.3081 0.6002 +vn 0.7381 0.3081 0.6002 +vn 0.7381 0.3081 0.6002 +vn 0.7381 0.3081 0.6002 +vn 0.5607 0.8117 0.1637 +vn 0.5607 0.8117 0.1637 +vn 0.5607 0.8117 0.1637 +vn 0.5607 0.8117 0.1637 +vn 0.4525 -0.0743 0.8887 +vn 0.4525 -0.0743 0.8887 +vn 0.4525 -0.0743 0.8887 +vn 0.4525 -0.0743 0.8887 +vn 0.1186 -0.9178 -0.3790 +vn 0.1186 -0.9178 -0.3790 +vn 0.1186 -0.9178 -0.3790 +vn -0.7515 -0.6568 -0.0629 +vn -0.7515 -0.6568 -0.0629 +vn -0.7515 -0.6568 -0.0629 +vn 0.9597 0.0281 -0.2798 +vn 0.9597 0.0281 -0.2798 +vn 0.9597 0.0281 -0.2798 +vn 0.9597 0.0281 -0.2798 +vn 0.1273 -0.1278 -0.9836 +vn 0.1273 -0.1278 -0.9836 +vn 0.1273 -0.1278 -0.9836 +vn 0.1273 -0.1278 -0.9836 +vn 0.3455 0.1354 0.9286 +vn 0.3455 0.1354 0.9286 +vn 0.3455 0.1354 0.9286 +vn 0.3455 0.1354 0.9286 +vn 0.2764 -0.8870 0.3700 +vn 0.2764 -0.8870 0.3700 +vn 0.2764 -0.8870 0.3700 +vn 0.2451 -0.1993 0.9488 +vn 0.2451 -0.1993 0.9488 +vn 0.2451 -0.1993 0.9488 +vn 0.2451 -0.1993 0.9488 +vn 0.6807 -0.2106 -0.7016 +vn 0.6807 -0.2106 -0.7016 +vn 0.6807 -0.2106 -0.7016 +vn 0.6807 -0.2106 -0.7016 +vn 0.7106 0.6739 0.2021 +vn 0.7106 0.6739 0.2021 +vn 0.7106 0.6739 0.2021 +vn 0.7106 0.6739 0.2021 +vn 0.5757 -0.8031 -0.1535 +vn 0.5757 -0.8031 -0.1535 +vn 0.5757 -0.8031 -0.1535 +vn 0.5757 -0.8031 -0.1535 +vn -0.2345 0.0522 0.9707 +vn -0.2345 0.0522 0.9707 +vn -0.2345 0.0522 0.9707 +vn -0.2345 0.0522 0.9707 +vn 0.0517 0.0476 -0.9975 +vn 0.0517 0.0476 -0.9975 +vn 0.0517 0.0476 -0.9975 +vn 0.0517 0.0476 -0.9975 +vn 0.2831 0.9562 0.0752 +vn 0.2831 0.9562 0.0752 +vn 0.2831 0.9562 0.0752 +vn 0.2831 0.9562 0.0752 +vn -0.0507 -0.9935 -0.1016 +vn -0.0507 -0.9935 -0.1016 +vn -0.0507 -0.9935 -0.1016 +vn -0.0507 -0.9935 -0.1016 +vn 0.3031 0.0471 0.9518 +vn 0.3031 0.0471 0.9518 +vn 0.3031 0.0471 0.9518 +vn 0.3031 0.0471 0.9518 +vn 0.6130 -0.0352 0.7893 +vn 0.6130 -0.0352 0.7893 +vn 0.6130 -0.0352 0.7893 +vn 0.6130 -0.0352 0.7893 +vn 0.2884 -0.1753 -0.9413 +vn 0.2884 -0.1753 -0.9413 +vn 0.2884 -0.1753 -0.9413 +vn 0.2884 -0.1753 -0.9413 +vn 0.2159 0.9761 0.0226 +vn 0.2159 0.9761 0.0226 +vn 0.2159 0.9761 0.0226 +vn 0.2159 0.9761 0.0226 +vn -0.8065 -0.4408 -0.3941 +vn -0.8065 -0.4408 -0.3941 +vn -0.8065 -0.4408 -0.3941 +vn 0.8405 -0.0442 0.5400 +vn 0.8405 -0.0442 0.5400 +vn 0.8405 -0.0442 0.5400 +vn 0.8405 -0.0442 0.5400 +vn 0.9791 -0.1752 -0.1028 +vn 0.9791 -0.1752 -0.1028 +vn 0.9791 -0.1752 -0.1028 +vn 0.9791 -0.1752 -0.1028 +vn 0.5602 0.7378 0.3766 +vn 0.5602 0.7378 0.3766 +vn 0.5602 0.7378 0.3766 +vn -0.4841 0.3212 0.8139 +vn -0.4841 0.3212 0.8139 +vn -0.4841 0.3212 0.8139 +vn -0.4841 0.3212 0.8139 +vn -0.7657 -0.6427 -0.0248 +vn -0.7657 -0.6427 -0.0248 +vn -0.7657 -0.6427 -0.0248 +vn -0.7657 -0.6427 -0.0248 +vn -0.0687 0.6166 0.7843 +vn -0.0687 0.6166 0.7843 +vn -0.0687 0.6166 0.7843 +vn 0.0699 -0.0315 0.9971 +vn 0.0699 -0.0315 0.9971 +vn 0.0699 -0.0315 0.9971 +vn 0.0699 -0.0315 0.9971 +vn 0.7898 -0.2268 0.5698 +vn 0.7898 -0.2268 0.5698 +vn 0.7898 -0.2268 0.5698 +vn 0.8001 -0.0972 0.5919 +vn 0.8001 -0.0972 0.5919 +vn 0.8001 -0.0972 0.5919 +vn 0.8001 -0.0972 0.5919 +vn 0.5940 -0.7913 0.1450 +vn 0.5940 -0.7913 0.1450 +vn 0.5940 -0.7913 0.1450 +vn 0.5940 -0.7913 0.1450 +vn 0.0906 0.1887 0.9778 +vn 0.0906 0.1887 0.9778 +vn 0.0906 0.1887 0.9778 +vn 0.0984 0.0806 -0.9919 +vn 0.0984 0.0806 -0.9919 +vn 0.0984 0.0806 -0.9919 +vn 0.0984 0.0806 -0.9919 +vn 0.4368 0.8892 0.1359 +vn 0.4368 0.8892 0.1359 +vn 0.4368 0.8892 0.1359 +vn 0.4368 0.8892 0.1359 +vn -0.4359 -0.8263 -0.3567 +vn -0.4359 -0.8263 -0.3567 +vn -0.4359 -0.8263 -0.3567 +vn -0.4359 -0.8263 -0.3567 +vn -0.1164 -0.1902 0.9748 +vn -0.1164 -0.1902 0.9748 +vn -0.1164 -0.1902 0.9748 +vn -0.1164 -0.1902 0.9748 +vn 0.0304 0.1155 -0.9928 +vn 0.0304 0.1155 -0.9928 +vn 0.0304 0.1155 -0.9928 +vn 0.0304 0.1155 -0.9928 +vn 0.4473 0.8833 0.1406 +vn 0.4473 0.8833 0.1406 +vn 0.4473 0.8833 0.1406 +vn -0.4096 -0.8479 -0.3367 +vn -0.4096 -0.8479 -0.3367 +vn -0.4096 -0.8479 -0.3367 +vn -0.9835 -0.1436 0.1101 +vn -0.9835 -0.1436 0.1101 +vn -0.9835 -0.1436 0.1101 +vn -0.3745 0.2581 0.8906 +vn -0.3745 0.2581 0.8906 +vn -0.3745 0.2581 0.8906 +vn -0.3745 0.2581 0.8906 +vn -0.3866 -0.6109 0.6909 +vn -0.3866 -0.6109 0.6909 +vn -0.3866 -0.6109 0.6909 +vn -0.3866 -0.6109 0.6909 +vn 0.2026 0.7986 0.5667 +vn 0.2026 0.7986 0.5667 +vn 0.2026 0.7986 0.5667 +vn 0.3472 -0.1729 0.9217 +vn 0.3472 -0.1729 0.9217 +vn 0.3472 -0.1729 0.9217 +vn 0.0557 0.0627 -0.9965 +vn 0.0557 0.0627 -0.9965 +vn 0.0557 0.0627 -0.9965 +vn 0.0557 0.0627 -0.9965 +vn 0.5625 0.8268 -0.0012 +vn 0.5625 0.8268 -0.0012 +vn 0.5625 0.8268 -0.0012 +vn 0.5625 0.8268 -0.0012 +vn -0.1065 -0.9839 -0.1437 +vn -0.1065 -0.9839 -0.1437 +vn -0.1065 -0.9839 -0.1437 +vn 0.1926 0.4841 0.8535 +vn 0.1926 0.4841 0.8535 +vn 0.1926 0.4841 0.8535 +vn -0.0135 -0.9999 -0.0004 +vn -0.0135 -0.9999 -0.0004 +vn -0.0135 -0.9999 -0.0004 +vn -0.0135 -0.9999 -0.0004 +vn 0.1584 0.3315 0.9300 +vn 0.1584 0.3315 0.9300 +vn 0.1584 0.3315 0.9300 +vn -0.9439 -0.3276 -0.0423 +vn -0.9439 -0.3276 -0.0423 +vn -0.9439 -0.3276 -0.0423 +vn 0.0000 -0.0454 0.9990 +vn 0.0000 -0.0454 0.9990 +vn 0.0000 -0.0454 0.9990 +vn 0.0985 -0.9710 0.2177 +vn 0.0985 -0.9710 0.2177 +vn 0.0985 -0.9710 0.2177 +vn 0.0985 -0.9710 0.2177 +vn 0.8813 0.0216 0.4721 +vn 0.8813 0.0216 0.4721 +vn 0.8813 0.0216 0.4721 +vn 0.9213 -0.1090 -0.3733 +vn 0.9213 -0.1090 -0.3733 +vn 0.9213 -0.1090 -0.3733 +vn 0.9213 -0.1090 -0.3733 +vn 0.4018 -0.1466 0.9039 +vn 0.4018 -0.1466 0.9039 +vn 0.4018 -0.1466 0.9039 +vn 0.4018 -0.1466 0.9039 +vn 0.2305 -0.1079 -0.9671 +vn 0.2305 -0.1079 -0.9671 +vn 0.2305 -0.1079 -0.9671 +vn 0.2305 -0.1079 -0.9671 +vn -0.9922 -0.1101 0.0578 +vn -0.9922 -0.1101 0.0578 +vn -0.9922 -0.1101 0.0578 +vn -0.9922 -0.1101 0.0578 +vn 0.3247 0.0848 -0.9420 +vn 0.3247 0.0848 -0.9420 +vn 0.3247 0.0848 -0.9420 +vn 0.3247 0.0848 -0.9420 +vn 0.8896 0.3112 -0.3342 +vn 0.8896 0.3112 -0.3342 +vn 0.8896 0.3112 -0.3342 +vn 0.8826 0.1868 0.4314 +vn 0.8826 0.1868 0.4314 +vn 0.8826 0.1868 0.4314 +vn 0.8826 0.1868 0.4314 +vn 0.4908 0.2558 0.8329 +vn 0.4908 0.2558 0.8329 +vn 0.4908 0.2558 0.8329 +vn 0.4908 0.2558 0.8329 +vn 0.1991 -0.9326 0.3009 +vn 0.1991 -0.9326 0.3009 +vn 0.1991 -0.9326 0.3009 +vn 0.1991 -0.9326 0.3009 +vn 0.2058 0.0231 -0.9783 +vn 0.2058 0.0231 -0.9783 +vn 0.2058 0.0231 -0.9783 +vn 0.2058 0.0231 -0.9783 +vn -0.2901 -0.0605 0.9551 +vn -0.2901 -0.0605 0.9551 +vn -0.2901 -0.0605 0.9551 +vn -0.3489 -0.9259 -0.1447 +vn -0.3489 -0.9259 -0.1447 +vn -0.3489 -0.9259 -0.1447 +vn -0.3489 -0.9259 -0.1447 +vn 0.0284 0.0393 -0.9988 +vn 0.0284 0.0393 -0.9988 +vn 0.0284 0.0393 -0.9988 +vn 0.0284 0.0393 -0.9988 +vn 0.7231 0.6525 0.2267 +vn 0.7231 0.6525 0.2267 +vn 0.7231 0.6525 0.2267 +vn 0.0951 -0.9499 -0.2979 +vn 0.0951 -0.9499 -0.2979 +vn 0.0951 -0.9499 -0.2979 +vn 0.0104 0.0752 -0.9971 +vn 0.0104 0.0752 -0.9971 +vn 0.0104 0.0752 -0.9971 +vn 0.0104 0.0752 -0.9971 +vn 0.5617 0.5448 -0.6226 +vn 0.5617 0.5448 -0.6226 +vn 0.5617 0.5448 -0.6226 +vn 0.5617 0.5448 -0.6226 +vn 0.4104 -0.2331 -0.8816 +vn 0.4104 -0.2331 -0.8816 +vn 0.4104 -0.2331 -0.8816 +vn 0.4104 -0.2331 -0.8816 +vn -0.2017 -0.9682 -0.1481 +vn -0.2017 -0.9682 -0.1481 +vn -0.2017 -0.9682 -0.1481 +vn -0.1853 -0.9802 -0.0705 +vn -0.1853 -0.9802 -0.0705 +vn -0.1853 -0.9802 -0.0705 +vn 0.0082 0.5297 -0.8482 +vn 0.0082 0.5297 -0.8482 +vn 0.0082 0.5297 -0.8482 +vn 0.0082 0.5297 -0.8482 +vn 0.4981 0.2118 0.8409 +vn 0.4981 0.2118 0.8409 +vn 0.4981 0.2118 0.8409 +vn 0.4981 0.2118 0.8409 +vn 0.9154 0.1115 0.3868 +vn 0.9154 0.1115 0.3868 +vn 0.9154 0.1115 0.3868 +vn 0.9154 0.1115 0.3868 +vn 0.9849 0.1424 0.0984 +vn 0.9849 0.1424 0.0984 +vn 0.9849 0.1424 0.0984 +vn 0.9849 0.1424 0.0984 +vn 0.9176 0.2222 0.3295 +vn 0.9176 0.2222 0.3295 +vn 0.9176 0.2222 0.3295 +vn 0.8424 0.0336 0.5378 +vn 0.8424 0.0336 0.5378 +vn 0.8424 0.0336 0.5378 +vn 0.8424 0.0336 0.5378 +vn 0.9822 0.1564 0.1044 +vn 0.9822 0.1564 0.1044 +vn 0.9822 0.1564 0.1044 +vn 0.9822 0.1564 0.1044 +vn 0.8392 0.2042 -0.5041 +vn 0.8392 0.2042 -0.5041 +vn 0.8392 0.2042 -0.5041 +vn 0.8392 0.2042 -0.5041 +vn 0.8476 0.1279 -0.5150 +vn 0.8476 0.1279 -0.5150 +vn 0.8476 0.1279 -0.5150 +vn 0.8476 0.1279 -0.5150 +vn 0.3651 0.2222 -0.9041 +vn 0.3651 0.2222 -0.9041 +vn 0.3651 0.2222 -0.9041 +vn 0.3651 0.2222 -0.9041 +vn 0.2551 0.0353 -0.9663 +vn 0.2551 0.0353 -0.9663 +vn 0.2551 0.0353 -0.9663 +vn 0.2551 0.0353 -0.9663 +vn 0.4221 0.6183 0.6630 +vn 0.4221 0.6183 0.6630 +vn 0.4221 0.6183 0.6630 +vn 0.7567 0.6087 0.2385 +vn 0.7567 0.6087 0.2385 +vn 0.7567 0.6087 0.2385 +vn 0.7567 0.6087 0.2385 +vn 0.8063 0.5860 0.0806 +vn 0.8063 0.5860 0.0806 +vn 0.8063 0.5860 0.0806 +vn 0.4688 0.7655 -0.4407 +vn 0.4688 0.7655 -0.4407 +vn 0.4688 0.7655 -0.4407 +vn 0.4688 0.7655 -0.4407 +vn 0.2815 0.7238 -0.6299 +vn 0.2815 0.7238 -0.6299 +vn 0.2815 0.7238 -0.6299 +vn 0.2964 0.9524 0.0712 +vn 0.2964 0.9524 0.0712 +vn 0.2964 0.9524 0.0712 +vn 0.1841 0.9614 -0.2047 +vn 0.1841 0.9614 -0.2047 +vn 0.1841 0.9614 -0.2047 +vn 0.0000 0.7502 0.6612 +vn 0.0000 0.7502 0.6612 +vn 0.0000 0.7502 0.6612 +vn 0.0000 0.7502 0.6612 +vn 0.2047 0.1425 0.9684 +vn 0.2047 0.1425 0.9684 +vn 0.2047 0.1425 0.9684 +vn 0.0000 0.2848 0.9586 +vn 0.0000 0.2848 0.9586 +vn 0.0000 0.2848 0.9586 +vn -0.9000 0.0177 0.4355 +vn -0.9000 0.0177 0.4355 +vn -0.9000 0.0177 0.4355 +vn -0.9000 0.0177 0.4355 +vn -0.4981 0.2118 0.8409 +vn -0.4981 0.2118 0.8409 +vn -0.4981 0.2118 0.8409 +vn -0.4981 0.2118 0.8409 +vn -0.9154 0.1115 0.3868 +vn -0.9154 0.1115 0.3868 +vn -0.9154 0.1115 0.3868 +vn -0.9154 0.1115 0.3868 +vn -0.9849 0.1424 0.0984 +vn -0.9849 0.1424 0.0984 +vn -0.9849 0.1424 0.0984 +vn -0.9849 0.1424 0.0984 +vn -0.9176 0.2222 0.3295 +vn -0.9176 0.2222 0.3295 +vn -0.9176 0.2222 0.3295 +vn -0.8424 0.0336 0.5378 +vn -0.8424 0.0336 0.5378 +vn -0.8424 0.0336 0.5378 +vn -0.8424 0.0336 0.5378 +vn -0.9822 0.1564 0.1044 +vn -0.9822 0.1564 0.1044 +vn -0.9822 0.1564 0.1044 +vn -0.9822 0.1564 0.1044 +vn -0.8392 0.2042 -0.5041 +vn -0.8392 0.2042 -0.5041 +vn -0.8392 0.2042 -0.5041 +vn -0.8392 0.2042 -0.5041 +vn -0.8476 0.1279 -0.5150 +vn -0.8476 0.1279 -0.5150 +vn -0.8476 0.1279 -0.5150 +vn -0.8476 0.1279 -0.5150 +vn -0.3651 0.2222 -0.9041 +vn -0.3651 0.2222 -0.9041 +vn -0.3651 0.2222 -0.9041 +vn -0.3651 0.2222 -0.9041 +vn -0.2551 0.0353 -0.9663 +vn -0.2551 0.0353 -0.9663 +vn -0.2551 0.0353 -0.9663 +vn -0.2551 0.0353 -0.9663 +vn -0.4221 0.6183 0.6630 +vn -0.4221 0.6183 0.6630 +vn -0.4221 0.6183 0.6630 +vn -0.7568 0.6087 0.2385 +vn -0.7568 0.6087 0.2385 +vn -0.7568 0.6087 0.2385 +vn -0.7568 0.6087 0.2385 +vn -0.8063 0.5860 0.0806 +vn -0.8063 0.5860 0.0806 +vn -0.8063 0.5860 0.0806 +vn -0.4688 0.7655 -0.4407 +vn -0.4688 0.7655 -0.4407 +vn -0.4688 0.7655 -0.4407 +vn -0.4688 0.7655 -0.4407 +vn -0.2815 0.7238 -0.6299 +vn -0.2815 0.7238 -0.6299 +vn -0.2815 0.7238 -0.6299 +vn -0.2964 0.9524 0.0712 +vn -0.2964 0.9524 0.0712 +vn -0.2964 0.9524 0.0712 +vn -0.1841 0.9614 -0.2047 +vn -0.1841 0.9614 -0.2047 +vn -0.1841 0.9614 -0.2047 +vn 0.0000 0.9651 0.2620 +vn 0.0000 0.9651 0.2620 +vn 0.0000 0.9651 0.2620 +vn -0.2047 0.1425 0.9684 +vn -0.2047 0.1425 0.9684 +vn -0.2047 0.1425 0.9684 +vn 0.9000 0.0177 0.4355 +vn 0.9000 0.0177 0.4355 +vn 0.9000 0.0177 0.4355 +vn 0.9000 0.0177 0.4355 +vn 0.2337 0.1582 -0.9593 +vn 0.2337 0.1582 -0.9593 +vn 0.2337 0.1582 -0.9593 +vn 0.2337 0.1582 -0.9593 +vn 0.9108 0.1087 0.3983 +vn 0.9108 0.1087 0.3983 +vn 0.9108 0.1087 0.3983 +vn 0.9108 0.1087 0.3983 +vn -0.2721 -0.2324 0.9338 +vn -0.2721 -0.2324 0.9338 +vn -0.2721 -0.2324 0.9338 +vn -0.2721 -0.2324 0.9338 +vn 0.2667 0.2664 -0.9262 +vn 0.2667 0.2664 -0.9262 +vn 0.2667 0.2664 -0.9262 +vn 0.2667 0.2664 -0.9262 +vn -0.2859 -0.7827 0.5528 +vn -0.2859 -0.7827 0.5528 +vn -0.2859 -0.7827 0.5528 +vn -0.2859 -0.7827 0.5528 +vn 0.8992 0.0079 0.4376 +vn 0.8992 0.0079 0.4376 +vn 0.8992 0.0079 0.4376 +vn -0.2937 0.9558 0.0153 +vn -0.2937 0.9558 0.0153 +vn -0.2937 0.9558 0.0153 +vn -0.2937 0.9558 0.0153 +vn -0.1893 -0.7092 -0.6791 +vn -0.1893 -0.7092 -0.6791 +vn -0.1893 -0.7092 -0.6791 +vn -0.1893 -0.7092 -0.6791 +vn 0.9591 0.2709 0.0827 +vn 0.9591 0.2709 0.0827 +vn 0.9591 0.2709 0.0827 +vn 0.9591 0.2709 0.0827 +vn 0.1679 -0.1013 0.9806 +vn 0.1679 -0.1013 0.9806 +vn 0.1679 -0.1013 0.9806 +vn -0.1678 0.1072 -0.9800 +vn -0.1678 0.1072 -0.9800 +vn -0.1678 0.1072 -0.9800 +vn 0.0422 -0.7280 0.6843 +vn 0.0422 -0.7280 0.6843 +vn 0.0422 -0.7280 0.6843 +vn 0.0422 -0.7280 0.6843 +vn 0.9372 -0.3398 0.0787 +vn 0.9372 -0.3398 0.0787 +vn 0.9372 -0.3398 0.0787 +# 1312 vertex normals + +vt 0.3107 0.8057 0.0000 +vt 0.0418 0.8273 0.0000 +vt 0.0224 0.9163 0.0000 +vt 0.3107 0.4728 0.0000 +vt 0.1035 0.2227 0.0000 +vt 0.1074 0.0253 0.0000 +vt 0.0899 0.0232 0.0000 +vt 0.0636 0.2210 0.0000 +vt 0.1450 0.0577 0.0000 +vt 0.1687 0.2207 0.0000 +vt 0.1815 0.0586 0.0000 +vt 0.1640 0.0674 0.0000 +vt 0.2169 0.2236 0.0000 +vt 0.2201 0.0170 0.0000 +vt 0.2532 0.2123 0.0000 +vt 0.1832 0.6616 0.0000 +vt 0.1399 0.7884 0.0000 +vt 0.1833 0.7921 0.0000 +vt 0.2391 0.6616 0.0000 +vt 0.2493 0.8024 0.0000 +vt 0.1804 0.9648 0.0000 +vt 0.1341 0.8526 0.0000 +vt 0.0281 0.8778 0.0000 +vt 0.8077 0.9449 0.0000 +vt 0.7460 0.9866 0.0000 +vt 0.7460 0.9449 0.0000 +vt 0.8055 0.9227 0.0000 +vt 0.7460 0.9227 0.0000 +vt 0.7460 0.8094 0.0000 +vt 0.8053 0.8344 0.0000 +vt 0.2595 0.9680 0.0000 +vt 0.2566 0.8644 0.0000 +vt 0.1810 0.8442 0.0000 +vt 0.8086 0.8094 0.0000 +vt 0.8795 0.8094 0.0000 +vt 0.8795 0.8344 0.0000 +vt 0.6800 0.8094 0.0000 +vt 0.6889 0.9227 0.0000 +vt 0.6269 0.9227 0.0000 +vt 0.8108 0.7884 0.0000 +vt 0.7460 0.7884 0.0000 +vt 0.7460 0.6802 0.0000 +vt 0.8127 0.7051 0.0000 +vt 0.6918 0.6802 0.0000 +vt 0.6777 0.7884 0.0000 +vt 0.8099 0.6802 0.0000 +vt 0.8622 0.6802 0.0000 +vt 0.8795 0.7051 0.0000 +vt 0.8795 0.7884 0.0000 +vt 0.1854 0.4365 0.0000 +vt 0.1439 0.4087 0.0000 +vt 0.1364 0.4405 0.0000 +vt 0.0869 0.4366 0.0000 +vt 0.0973 0.3997 0.0000 +vt 0.1665 0.2975 0.0000 +vt 0.1634 0.2856 0.0000 +vt 0.1066 0.2975 0.0000 +vt 0.0549 0.2975 0.0000 +vt 0.0533 0.3137 0.0000 +vt 0.1055 0.3137 0.0000 +vt 0.2216 0.2810 0.0000 +vt 0.2243 0.2975 0.0000 +vt 0.0907 0.2286 0.0000 +vt 0.2823 0.2237 0.0000 +vt 0.2203 0.2369 0.0000 +vt 0.1517 0.2329 0.0000 +vt 0.2858 0.9314 0.0000 +vt 0.5026 0.1853 0.0000 +vt 0.5291 0.2009 0.0000 +vt 0.5298 0.1673 0.0000 +vt 0.5088 0.1569 0.0000 +vt 0.5062 0.1298 0.0000 +vt 0.4678 0.2318 0.0000 +vt 0.4344 0.1874 0.0000 +vt 0.4309 0.2270 0.0000 +vt 0.4999 0.2272 0.0000 +vt 0.5055 0.2476 0.0000 +vt 0.5256 0.2239 0.0000 +vt 0.4643 0.2508 0.0000 +vt 0.4516 0.2875 0.0000 +vt 0.3672 0.2403 0.0000 +vt 0.4357 0.0900 0.0000 +vt 0.3761 0.1116 0.0000 +vt 0.4347 0.1190 0.0000 +vt 0.3880 0.0541 0.0000 +vt 0.4096 0.1930 0.0000 +vt 0.5070 0.0878 0.0000 +vt 0.2699 0.9825 0.0000 +vt 0.3078 0.9535 0.0000 +vt 0.2255 0.3137 0.0000 +vt 0.1336 0.4715 0.0000 +vt 0.0941 0.4709 0.0000 +vt 0.2576 0.5822 0.0000 +vt 0.3084 0.0404 0.0000 +vt 0.2902 0.0307 0.0000 +vt 0.3135 0.0238 0.0000 +vt 0.7658 0.0409 0.0000 +vt 0.2740 0.0396 0.0000 +vt 0.2662 0.0236 0.0000 +vt 0.1657 0.3137 0.0000 +vt 0.0417 0.3958 0.0000 +vt 0.7109 0.6619 0.0000 +vt 0.7460 0.6619 0.0000 +vt 0.8009 0.6619 0.0000 +vt 0.8356 0.6619 0.0000 +vt 0.7232 0.6305 0.0000 +vt 0.7460 0.6305 0.0000 +vt 0.7962 0.6305 0.0000 +vt 0.8121 0.6305 0.0000 +vt 0.7839 0.5279 0.0000 +vt 0.7997 0.5230 0.0000 +vt 0.7802 0.5027 0.0000 +vt 0.7063 0.5876 0.0000 +vt 0.6631 0.5538 0.0000 +vt 0.7660 0.5742 0.0000 +vt 0.7416 0.4982 0.0000 +vt 0.7379 0.5389 0.0000 +vt 0.7561 0.5372 0.0000 +vt 0.7186 0.5457 0.0000 +vt 0.8063 0.5569 0.0000 +vt 0.7882 0.5651 0.0000 +vt 0.8133 0.5545 0.0000 +vt 0.2610 0.4728 0.0000 +vt 0.3489 0.3960 0.0000 +vt 0.2513 0.4119 0.0000 +vt 0.0526 0.4653 0.0000 +vt 0.3107 0.6616 0.0000 +vt 0.3107 0.8605 0.0000 +vt 0.0614 0.7628 0.0000 +vt 0.5338 0.1538 0.0000 +vt 0.5339 0.2868 0.0000 +vt 0.5338 0.2544 0.0000 +vt 0.3105 0.9531 0.0000 +vt 0.1145 0.6616 0.0000 +vt 0.3499 0.4002 0.0000 +vt 0.7042 0.5143 0.0000 +vt 0.0732 0.6616 0.0000 +vt 0.9122 0.1756 0.0000 +vt 0.9434 0.1756 0.0000 +vt 0.9254 0.0319 0.0000 +vt 0.9094 0.0329 0.0000 +vt 0.8739 0.0600 0.0000 +vt 0.8590 0.1756 0.0000 +vt 0.8411 0.0589 0.0000 +vt 0.8242 0.1756 0.0000 +vt 0.8563 0.0678 0.0000 +vt 0.8086 0.0196 0.0000 +vt 0.7953 0.1756 0.0000 +vt 0.1834 0.6616 0.0000 +vt 0.1835 0.7921 0.0000 +vt 0.1401 0.7884 0.0000 +vt 0.1147 0.6616 0.0000 +vt 0.2393 0.6616 0.0000 +vt 0.2495 0.8024 0.0000 +vt 0.1806 0.9648 0.0000 +vt 0.1343 0.8526 0.0000 +vt 0.5286 0.9420 0.0000 +vt 0.4699 0.9420 0.0000 +vt 0.4699 0.9778 0.0000 +vt 0.5264 0.9164 0.0000 +vt 0.5262 0.8281 0.0000 +vt 0.4699 0.8031 0.0000 +vt 0.4699 0.9164 0.0000 +vt 0.2597 0.9680 0.0000 +vt 0.1812 0.8442 0.0000 +vt 0.2568 0.8644 0.0000 +vt 0.5295 0.8031 0.0000 +vt 0.5908 0.8281 0.0000 +vt 0.5908 0.8031 0.0000 +vt 0.3478 0.9164 0.0000 +vt 0.4098 0.9164 0.0000 +vt 0.4009 0.8031 0.0000 +vt 0.5317 0.7821 0.0000 +vt 0.5336 0.6988 0.0000 +vt 0.4699 0.6747 0.0000 +vt 0.4699 0.7821 0.0000 +vt 0.4127 0.6747 0.0000 +vt 0.3986 0.7821 0.0000 +vt 0.5308 0.6747 0.0000 +vt 0.5908 0.6988 0.0000 +vt 0.5831 0.6747 0.0000 +vt 0.5908 0.7821 0.0000 +vt 0.8479 0.4132 0.0000 +vt 0.8933 0.4142 0.0000 +vt 0.8848 0.3854 0.0000 +vt 0.9389 0.4095 0.0000 +vt 0.9275 0.3759 0.0000 +vt 0.8589 0.2861 0.0000 +vt 0.9142 0.2821 0.0000 +vt 0.8602 0.2774 0.0000 +vt 0.9628 0.2861 0.0000 +vt 0.9164 0.3016 0.0000 +vt 0.9643 0.3016 0.0000 +vt 0.8047 0.2861 0.0000 +vt 0.8051 0.2742 0.0000 +vt 0.7326 0.2071 0.0000 +vt 0.9173 0.2208 0.0000 +vt 0.8086 0.2361 0.0000 +vt 0.8594 0.2278 0.0000 +vt 0.3107 0.9196 0.0000 +vt 0.2860 0.9314 0.0000 +vt 0.5651 0.1853 0.0000 +vt 0.5589 0.1569 0.0000 +vt 0.5378 0.1673 0.0000 +vt 0.5385 0.2009 0.0000 +vt 0.5615 0.1298 0.0000 +vt 0.5338 0.1344 0.0000 +vt 0.5999 0.2317 0.0000 +vt 0.6368 0.2281 0.0000 +vt 0.6332 0.1874 0.0000 +vt 0.5678 0.2272 0.0000 +vt 0.5421 0.2239 0.0000 +vt 0.5622 0.2476 0.0000 +vt 0.6161 0.2875 0.0000 +vt 0.6034 0.2508 0.0000 +vt 0.7005 0.2402 0.0000 +vt 0.6320 0.0899 0.0000 +vt 0.6330 0.1190 0.0000 +vt 0.6916 0.1116 0.0000 +vt 0.6796 0.0540 0.0000 +vt 0.6581 0.1930 0.0000 +vt 0.5606 0.0878 0.0000 +vt 0.5338 0.0953 0.0000 +vt 0.2701 0.9825 0.0000 +vt 0.3080 0.9535 0.0000 +vt 0.8045 0.3016 0.0000 +vt 0.8972 0.4428 0.0000 +vt 0.9339 0.4413 0.0000 +vt 0.2578 0.5822 0.0000 +vt 0.2902 0.0307 0.0000 +vt 0.2740 0.0396 0.0000 +vt 0.2662 0.0236 0.0000 +vt 0.7658 0.0409 0.0000 +vt 0.3135 0.0238 0.0000 +vt 0.3084 0.0404 0.0000 +vt 0.8604 0.3016 0.0000 +vt 0.9785 0.3695 0.0000 +vt 0.4699 0.6556 0.0000 +vt 0.4318 0.6556 0.0000 +vt 0.5566 0.6556 0.0000 +vt 0.5218 0.6556 0.0000 +vt 0.4699 0.6242 0.0000 +vt 0.4441 0.6242 0.0000 +vt 0.5330 0.6242 0.0000 +vt 0.5171 0.6242 0.0000 +vt 0.3107 0.5822 0.0000 +vt 0.7839 0.5279 0.0000 +vt 0.7561 0.5372 0.0000 +vt 0.7802 0.5027 0.0000 +vt 0.7997 0.5230 0.0000 +vt 0.6631 0.5538 0.0000 +vt 0.7063 0.5876 0.0000 +vt 0.7660 0.5742 0.0000 +vt 0.7416 0.4982 0.0000 +vt 0.7379 0.5389 0.0000 +vt 0.7042 0.5143 0.0000 +vt 0.7186 0.5457 0.0000 +vt 0.7882 0.5651 0.0000 +vt 0.8063 0.5569 0.0000 +vt 0.8133 0.5545 0.0000 +vt 0.2612 0.4728 0.0000 +vt 0.6949 0.3842 0.0000 +vt 0.7856 0.3933 0.0000 +vt 0.9724 0.4336 0.0000 +vt 0.2524 0.4170 0.0000 +vt 0.0275 0.4648 0.0000 +vt 0.4091 0.5386 0.0000 +vt 0.4300 0.5070 0.0000 +vt 0.4515 0.5314 0.0000 +vt 0.4263 0.5527 0.0000 +vt 0.4920 0.4514 0.0000 +vt 0.4997 0.5187 0.0000 +vt 0.5542 0.5118 0.0000 +vt 0.4167 0.2972 0.0000 +vt 0.4868 0.3160 0.0000 +vt 0.5424 0.3315 0.0000 +vt 0.4341 0.4607 0.0000 +vt 0.5521 0.4459 0.0000 +vt 0.5911 0.5193 0.0000 +vt 0.6084 0.2977 0.0000 +vt 0.6010 0.4502 0.0000 +vt 0.4820 0.5643 0.0000 +vt 0.5386 0.5567 0.0000 +vt 0.6348 0.5377 0.0000 +vt 0.3982 0.5591 0.0000 +vt 0.3690 0.3002 0.0000 +vt 0.3803 0.4634 0.0000 +vt 0.4091 0.5386 0.0000 +vt 0.4300 0.5071 0.0000 +vt 0.4515 0.5315 0.0000 +vt 0.4161 0.5817 0.0000 +vt 0.4920 0.4515 0.0000 +vt 0.4997 0.5188 0.0000 +vt 0.5521 0.4459 0.0000 +vt 0.5542 0.5119 0.0000 +vt 0.4340 0.4608 0.0000 +vt 0.4166 0.2973 0.0000 +vt 0.4867 0.3161 0.0000 +vt 0.5424 0.3315 0.0000 +vt 0.6010 0.4503 0.0000 +vt 0.5911 0.5193 0.0000 +vt 0.6083 0.2977 0.0000 +vt 0.6618 0.4642 0.0000 +vt 0.6823 0.3086 0.0000 +vt 0.4667 0.6076 0.0000 +vt 0.5386 0.5567 0.0000 +vt 0.5889 0.5821 0.0000 +vt 0.5237 0.6033 0.0000 +vt 0.3802 0.4635 0.0000 +vt 0.3690 0.3003 0.0000 +vt 0.0756 0.0215 0.0000 +vt 0.0284 0.2165 0.0000 +vt 0.2315 0.5822 0.0000 +vt 0.3072 0.2975 0.0000 +vt 0.3066 0.3137 0.0000 +vt 0.0396 0.2418 0.0000 +vt 0.1823 0.6318 0.0000 +vt 0.1420 0.6318 0.0000 +vt 0.2109 0.4334 0.0000 +vt 0.3394 0.3798 0.0000 +vt 0.0336 0.4139 0.0000 +vt 0.0965 0.6318 0.0000 +vt 0.0296 0.4154 0.0000 +vt 0.9386 0.0312 0.0000 +vt 0.9744 0.1756 0.0000 +vt 0.2317 0.5822 0.0000 +vt 0.7265 0.2821 0.0000 +vt 0.7289 0.3016 0.0000 +vt 0.9699 0.2253 0.0000 +vt 0.1825 0.6318 0.0000 +vt 0.1422 0.6318 0.0000 +vt 0.8240 0.4114 0.0000 +vt 0.7027 0.3682 0.0000 +vt 0.9868 0.3852 0.0000 +vt 0.0967 0.6318 0.0000 +vt 0.0681 0.6318 0.0000 +vt 0.9955 0.4316 0.0000 +vt 0.9906 0.3863 0.0000 +vt 0.6942 0.3882 0.0000 +vt 0.7850 0.3981 0.0000 +vt 0.0420 0.8273 0.0000 +vt 0.0226 0.9163 0.0000 +vt 0.0283 0.8778 0.0000 +vt 0.0616 0.7629 0.0000 +vt 0.0734 0.6616 0.0000 +vt 0.0683 0.6318 0.0000 +vt 0.5332 0.9778 0.0000 +vt 0.3478 0.9420 0.0000 +vt 0.2104 0.9004 0.0000 +vt 0.4077 0.9420 0.0000 +vt 0.8123 0.9817 0.0000 +vt 0.6269 0.9449 0.0000 +vt 0.2102 0.9004 0.0000 +vt 0.6868 0.9449 0.0000 +vt 0.6269 0.8094 0.0000 +vt 0.6269 0.8294 0.0000 +vt 0.8795 0.9227 0.0000 +vt 0.6417 0.6802 0.0000 +vt 0.6269 0.6997 0.0000 +vt 0.6269 0.7884 0.0000 +vt 0.6659 0.6619 0.0000 +vt 0.6771 0.6305 0.0000 +vt 0.8801 0.5699 0.0000 +vt 0.3478 0.8231 0.0000 +vt 0.3478 0.8031 0.0000 +vt 0.5908 0.9164 0.0000 +vt 0.3478 0.6934 0.0000 +vt 0.3626 0.6747 0.0000 +vt 0.3478 0.7821 0.0000 +vt 0.3868 0.6556 0.0000 +vt 0.3980 0.6242 0.0000 +vt 0.8801 0.5699 0.0000 +vt 0.5908 0.9420 0.0000 +vt 0.8795 0.9449 0.0000 +vt 0.4971 0.0267 0.0000 +vt 0.5338 0.0190 0.0000 +vt 0.5705 0.0266 0.0000 +vt 0.2936 0.9628 0.0000 +vt 0.2938 0.9628 0.0000 +vt 0.1264 0.9132 0.0000 +vt 0.0539 0.9410 0.0000 +vt 0.1261 0.9132 0.0000 +vt 0.0537 0.9410 0.0000 +vt 0.3272 0.0717 0.0000 +vt 0.7404 0.0716 0.0000 +vt 0.9766 0.5071 0.0000 +vt 0.9671 0.4662 0.0000 +vt 0.9664 0.4646 0.0000 +vt 0.9935 0.5066 0.0000 +vt 0.9620 0.7107 0.0000 +vt 0.9222 0.7170 0.0000 +vt 0.9300 0.5164 0.0000 +vt 0.9160 0.7257 0.0000 +vt 0.9130 0.5155 0.0000 +vt 0.9711 0.7189 0.0000 +vt 0.9572 0.7753 0.0000 +vt 0.9353 0.7593 0.0000 +vt 0.9323 0.7553 0.0000 +vt 0.9675 0.7689 0.0000 +vt 0.9543 0.9680 0.0000 +vt 0.9099 0.9758 0.0000 +vt 0.9197 0.7813 0.0000 +vt 0.9041 0.7777 0.0000 +vt 0.7839 0.0501 0.0000 +vt 0.2897 0.0124 0.0000 +vt 0.7483 0.0551 0.0000 +vt 0.2897 0.0124 0.0000 +vt 0.8150 0.5993 0.0000 +vt 0.7740 0.6165 0.0000 +vt 0.7014 0.6099 0.0000 +vt 0.6747 0.5920 0.0000 +vt 0.8859 0.6072 0.0000 +vt 0.8162 0.5073 0.0000 +vt 0.8535 0.5070 0.0000 +vt 0.8162 0.5073 0.0000 +vt 0.8535 0.5070 0.0000 +vt 0.7740 0.6165 0.0000 +vt 0.8150 0.5993 0.0000 +vt 0.8794 0.5231 0.0000 +vt 0.6747 0.5920 0.0000 +vt 0.7014 0.6099 0.0000 +vt 0.8859 0.6072 0.0000 +vt 0.8794 0.5231 0.0000 +vt 0.7483 0.0551 0.0000 +vt 0.7651 0.1471 0.0000 +vt 0.7510 0.1380 0.0000 +vt 0.7779 0.1398 0.0000 +vt 0.9144 0.2153 0.0000 +vt 0.9497 0.2075 0.0000 +vt 0.7466 0.1838 0.0000 +vt 0.8550 0.2181 0.0000 +vt 0.8099 0.2158 0.0000 +vt 0.7741 0.2049 0.0000 +vt 0.3453 0.0972 0.0000 +vt 0.2385 0.1030 0.0000 +vt 0.3104 0.0739 0.0000 +vt 0.2755 0.0719 0.0000 +vt 0.2902 0.0717 0.0000 +vt 0.0944 0.1858 0.0000 +vt 0.0600 0.1858 0.0000 +vt 0.1541 0.1858 0.0000 +vt 0.1933 0.1858 0.0000 +vt 0.2252 0.1858 0.0000 +vt 0.0259 0.1858 0.0000 +vt 0.7779 0.1398 0.0000 +vt 0.7651 0.1471 0.0000 +vt 0.7839 0.0501 0.0000 +vt 0.7510 0.1380 0.0000 +vt 0.2385 0.1030 0.0000 +vt 0.2755 0.0719 0.0000 +vt 0.3104 0.0739 0.0000 +vt 0.2902 0.0717 0.0000 +vt 0.3453 0.0972 0.0000 +vt 0.3627 0.2127 0.0000 +vt 0.7049 0.2127 0.0000 +vt 0.4357 0.0229 0.0000 +vt 0.6319 0.0228 0.0000 +vt 0.6348 0.5377 0.0000 +vt 0.6618 0.4642 0.0000 +vt 0.6823 0.3086 0.0000 +vt 0.5890 0.5821 0.0000 +vt 0.3982 0.5592 0.0000 +vt 0.4263 0.5528 0.0000 +vt 0.4820 0.5644 0.0000 +vt 0.5237 0.6034 0.0000 +vt 0.4678 0.2318 0.0000 +vt 0.4309 0.2270 0.0000 +vt 0.4999 0.2272 0.0000 +vt 0.5055 0.2476 0.0000 +vt 0.5256 0.2239 0.0000 +vt 0.4643 0.2508 0.0000 +vt 0.5338 0.2544 0.0000 +vt 0.5999 0.2317 0.0000 +vt 0.6368 0.2281 0.0000 +vt 0.5678 0.2272 0.0000 +vt 0.5421 0.2239 0.0000 +vt 0.5622 0.2476 0.0000 +vt 0.6034 0.2508 0.0000 +# 478 texture coords + +g man_zbrush002 +usemtl Material__44 +f 5/439/1 8/440/2 7/7/3 6/6/4 +f 9/9/5 10/441/6 5/439/7 6/6/8 +f 11/11/9 13/442/10 12/12/11 +f 11/11/12 14/14/13 15/443/14 13/442/15 +f 17/17/16 134/134/17 16/16/18 18/18/19 +f 19/19/20 20/20/21 18/18/22 16/16/23 +f 22/22/24 21/382/25 23/23/26 2/2/27 +f 21/351/28 24/24/29 26/26/30 25/25/31 +f 27/27/32 30/30/33 29/29/34 28/28/35 +f 127/127/36 1/1/37 20/20/38 19/19/39 +f 23/23/40 21/382/41 31/383/42 3/3/43 +f 25/353/44 33/33/45 18/18/46 32/32/47 +f 18/18/48 20/20/49 32/32/50 +f 128/128/51 32/32/52 20/20/53 1/1/54 +f 34/34/55 30/30/56 36/36/57 35/35/58 +f 36/356/59 39/39/60 38/38/61 37/37/62 +f 40/40/63 43/43/64 42/42/65 41/41/66 +f 44/44/67 45/45/68 41/41/69 42/42/70 +f 47/47/71 46/46/72 43/43/73 48/48/74 +f 49/360/75 45/45/76 44/44/77 48/359/78 +f 50/50/79 52/52/80 51/51/81 +f 53/53/82 54/54/83 51/51/84 52/52/85 +f 55/55/86 57/57/87 56/56/88 +f 59/59/89 58/58/90 57/57/91 60/60/92 +f 58/314/93 62/62/94 61/61/95 +f 56/56/96 61/61/97 62/62/98 55/55/99 +f 63/63/100 57/57/101 58/58/102 64/316/103 +f 64/64/104 58/314/105 61/61/106 65/65/107 +f 61/61/108 56/56/109 66/66/110 65/65/111 +f 66/66/112 56/56/113 57/57/114 63/63/115 +f 33/33/116 22/22/117 17/17/118 18/18/119 +f 39/39/120 22/352/121 33/354/122 38/38/123 +f 17/17/124 22/22/125 2/2/126 129/129/127 +f 32/32/128 128/128/129 200/200/130 67/67/131 +f 69/69/132 68/68/133 71/71/134 70/70/135 +f 130/130/136 71/71/137 72/72/138 207/207/139 +f 73/466/140 75/467/141 74/74/142 +f 76/76/143 78/78/144 77/77/145 +f 69/69/146 78/470/147 76/468/148 68/68/149 +f 77/469/150 131/131/151 80/80/152 79/471/153 +f 80/80/154 81/81/155 75/467/156 79/471/157 +f 82/82/158 84/84/159 83/83/160 +f 83/83/161 85/85/162 82/82/163 +f 83/83/164 84/84/165 74/74/166 86/86/167 +f 68/68/168 74/74/169 72/72/170 71/71/171 +f 72/72/172 87/87/173 223/223/174 207/207/175 +f 83/83/176 88/384/177 85/85/178 +f 85/378/179 67/67/180 200/200/181 89/89/182 +f 67/67/183 85/378/184 88/88/185 31/31/186 +f 63/63/187 64/316/188 8/8/189 +f 64/64/190 65/65/191 15/15/192 +f 10/10/193 13/13/194 65/65/195 66/66/196 +f 5/5/197 10/10/198 66/66/199 63/63/200 +f 62/62/201 58/314/202 59/315/203 90/90/204 +f 52/52/205 91/91/206 92/92/207 53/53/208 +f 50/50/209 91/91/210 52/52/211 +f 19/19/212 50/313/213 93/93/214 +f 74/74/215 75/467/216 86/86/217 +f 38/38/218 33/354/219 26/26/220 28/28/221 +f 26/26/222 24/24/223 27/27/224 28/28/225 +f 24/24/226 21/351/227 22/374/228 +f 38/38/229 28/28/230 29/29/231 37/37/232 +f 25/353/233 32/32/234 67/67/235 21/21/236 +f 31/31/237 21/21/238 67/67/239 +f 75/467/240 81/454/241 86/86/242 +f 86/86/243 81/454/244 83/83/245 +f 75/75/246 73/73/247 79/79/248 +f 12/452/249 95/95/250 94/94/251 11/451/252 +f 14/453/253 11/451/254 94/94/255 96/96/256 +f 96/406/257 97/97/258 7/446/259 14/448/260 +f 7/7/261 8/440/262 15/444/263 14/311/264 +f 94/94/265 95/95/266 97/407/267 96/96/268 +f 9/450/269 6/449/270 99/99/271 98/98/272 +f 97/407/273 95/95/274 98/98/275 99/99/276 +f 98/98/277 95/95/278 12/452/279 9/450/280 +f 12/12/281 13/442/282 10/441/283 9/9/284 +f 63/63/285 8/8/286 5/5/287 +f 8/8/288 64/316/289 15/312/290 +f 57/57/291 55/55/292 100/100/293 60/60/294 +f 101/101/295 59/59/296 60/60/297 54/54/298 +f 62/62/299 90/90/300 100/100/301 55/55/302 +f 71/71/303 130/130/304 70/70/305 +f 44/44/306 42/42/307 103/103/308 102/102/309 +f 47/47/310 105/105/311 104/104/312 46/46/313 +f 42/42/314 46/46/315 104/104/316 103/103/317 +f 44/44/318 102/102/319 105/361/320 47/358/321 +f 103/103/322 107/107/323 106/106/324 102/102/325 +f 105/105/326 109/109/327 108/108/328 104/104/329 +f 104/104/330 108/108/331 107/107/332 103/103/333 +f 102/102/334 106/106/335 109/362/336 105/361/337 +f 93/93/338 246/246/339 127/127/340 19/19/341 +f 110/110/342 118/118/343 112/112/344 111/111/345 +f 113/113/346 108/410/347 109/411/348 114/114/349 +f 107/409/350 108/410/351 113/113/352 115/115/353 +f 106/408/354 114/363/355 109/412/356 +f 116/116/357 112/112/358 118/118/359 117/117/360 +f 116/116/361 117/117/362 119/119/363 136/136/364 +f 115/115/365 117/117/366 118/118/367 +f 107/409/368 121/121/369 120/120/370 106/408/371 +f 106/408/372 120/120/373 122/122/374 114/363/375 +f 115/115/376 121/121/377 107/409/378 +f 246/246/379 93/93/380 123/123/381 4/4/382 +f 74/74/383 84/84/384 72/72/385 +f 72/72/386 84/84/387 82/82/388 87/87/389 +f 82/82/390 85/456/391 89/375/392 87/87/393 +f 78/78/394 132/132/395 77/77/396 +f 49/49/397 40/40/398 34/34/399 35/35/400 +f 29/29/401 34/34/402 40/40/403 41/41/404 +f 45/45/405 49/360/406 35/355/407 37/37/408 +f 41/41/409 45/45/410 37/37/411 29/29/412 +f 36/36/413 30/30/414 27/27/415 39/357/416 +f 29/29/417 30/30/418 34/34/419 +f 36/356/420 37/37/421 35/355/422 +f 15/15/423 65/65/424 13/13/425 +f 121/121/426 110/110/427 111/111/428 120/120/429 +f 120/120/430 111/111/431 112/415/432 122/122/433 +f 121/121/434 118/118/435 110/110/436 +f 26/26/437 33/354/438 25/25/439 +f 24/24/440 22/374/441 39/357/442 27/27/443 +f 119/119/444 117/117/445 115/115/446 113/113/447 +f 114/363/448 116/416/449 136/419/450 +f 118/118/451 121/121/452 115/115/453 +f 7/446/454 97/97/455 99/447/456 6/445/457 +f 132/472/458 131/131/459 77/469/460 +f 124/124/461 125/125/462 101/320/463 +f 200/200/464 133/133/465 89/89/466 +f 89/375/467 133/376/468 223/223/469 87/87/470 +f 50/50/471 51/51/472 100/100/473 +f 100/100/474 51/51/475 54/54/476 60/60/477 +f 93/319/478 50/50/479 100/100/480 90/90/481 +f 124/321/482 101/101/483 54/54/484 53/53/485 +f 59/315/486 101/320/487 125/125/488 90/90/489 +f 126/126/490 124/321/491 53/53/492 92/92/493 +f 92/318/494 91/317/495 16/16/496 +f 16/16/497 91/317/498 50/313/499 19/19/500 +f 76/468/501 73/466/502 74/74/503 68/68/504 +f 73/73/505 76/76/506 77/77/507 79/79/508 +f 129/129/509 137/137/510 134/134/511 17/17/512 +f 125/125/513 93/319/514 90/90/515 +f 135/135/516 265/265/517 125/125/518 124/124/519 +f 48/48/520 43/43/521 40/40/522 49/49/523 +f 42/42/524 43/43/525 46/46/526 +f 48/359/527 44/44/528 47/358/529 +f 130/130/530 204/204/531 70/70/532 +f 69/69/533 70/70/534 204/204/535 205/205/536 +f 124/321/537 126/126/538 266/266/539 135/323/540 +f 16/16/541 134/134/542 126/322/543 92/318/544 +f 119/119/545 113/113/546 114/114/547 136/136/548 +f 122/122/549 112/415/550 116/416/551 +f 114/363/552 122/122/553 116/416/554 +f 78/470/555 69/69/556 205/205/557 212/476/558 +f 132/132/559 78/78/560 212/212/561 +f 126/322/562 134/134/563 137/137/564 266/336/565 +f 138/138/566 141/141/567 140/140/568 139/139/569 +f 142/142/570 141/141/571 138/138/572 143/143/573 +f 144/144/574 146/146/575 145/145/576 +f 144/144/577 145/145/578 148/148/579 147/147/580 +f 151/151/581 150/150/582 149/149/583 152/152/584 +f 153/153/585 149/149/586 150/150/587 154/154/588 +f 156/156/589 2/341/590 23/343/591 155/380/592 +f 155/347/593 159/159/594 158/158/595 157/157/596 +f 160/160/597 163/163/598 162/162/599 161/161/600 +f 127/127/601 153/153/602 154/154/603 1/1/604 +f 23/343/605 3/342/606 164/381/607 155/380/608 +f 166/166/609 154/154/610 150/150/611 159/349/612 +f 159/349/613 150/150/614 165/165/615 +f 128/128/616 1/1/617 154/154/618 166/166/619 +f 167/167/620 169/169/621 168/168/622 161/161/623 +f 168/364/624 172/172/625 171/171/626 170/170/627 +f 173/173/628 176/176/629 175/175/630 174/174/631 +f 177/177/632 175/175/633 176/176/634 178/178/635 +f 181/181/636 180/180/637 174/174/638 179/179/639 +f 182/369/640 180/367/641 177/177/642 178/178/643 +f 183/183/644 185/185/645 184/184/646 +f 186/186/647 184/184/648 185/185/649 187/187/650 +f 188/188/651 190/190/652 189/189/653 +f 193/193/654 192/192/655 189/189/656 191/191/657 +f 191/327/658 195/195/659 194/194/660 +f 190/190/661 188/188/662 194/194/663 195/195/664 +f 197/197/665 196/329/666 191/191/667 189/189/668 +f 196/196/669 198/198/670 195/195/671 191/327/672 +f 195/195/673 198/198/674 199/199/675 190/190/676 +f 199/199/677 197/197/678 189/189/679 190/190/680 +f 165/165/681 150/150/682 151/151/683 156/156/684 +f 170/170/685 171/171/686 165/350/687 156/348/688 +f 151/151/689 129/344/690 2/341/691 156/156/692 +f 166/166/693 201/201/694 200/200/695 128/128/696 +f 205/205/697 204/204/698 203/203/699 202/202/700 +f 130/130/701 207/207/702 206/206/703 203/203/704 +f 208/473/705 210/210/706 209/474/707 +f 211/211/708 213/213/709 212/212/710 +f 205/205/711 202/202/712 211/475/713 212/476/714 +f 213/477/715 215/478/716 214/214/717 131/131/718 +f 214/214/719 215/478/720 209/474/721 216/216/722 +f 217/217/723 219/219/724 218/218/725 +f 219/219/726 217/217/727 220/220/728 +f 219/219/729 221/221/730 210/210/731 218/218/732 +f 202/202/733 203/203/734 206/206/735 210/210/736 +f 206/206/737 207/207/738 223/223/739 222/222/740 +f 219/219/741 220/220/742 224/385/743 +f 220/379/744 225/225/745 200/200/746 201/201/747 +f 201/201/748 164/164/749 224/224/750 220/379/751 +f 197/197/752 139/429/753 196/329/754 +f 196/196/755 148/433/756 198/198/757 +f 143/431/758 199/199/759 198/198/760 145/432/761 +f 138/428/762 197/197/763 199/199/764 143/431/765 +f 194/194/766 226/226/767 193/328/768 191/327/769 +f 184/184/770 186/186/771 228/228/772 227/227/773 +f 183/183/774 184/184/775 227/227/776 +f 153/153/777 229/229/778 183/326/779 +f 210/210/780 221/221/781 209/474/782 +f 171/171/783 163/163/784 158/158/785 165/350/786 +f 158/158/787 163/163/788 160/160/789 157/157/790 +f 157/157/791 156/373/792 155/347/793 +f 171/171/794 172/172/795 162/162/796 163/163/797 +f 201/201/798 166/166/799 159/349/800 155/155/801 +f 164/164/802 201/201/803 155/155/804 +f 209/474/805 221/221/806 216/455/807 +f 221/221/808 219/219/809 216/455/810 +f 209/209/811 215/215/812 208/208/813 +f 146/438/814 144/437/815 231/231/816 230/230/817 +f 147/435/818 232/232/819 231/231/820 144/437/821 +f 232/404/822 147/427/823 140/425/824 233/233/825 +f 140/140/826 147/324/827 148/325/828 139/139/829 +f 231/231/830 232/232/831 233/405/832 230/230/833 +f 142/436/834 235/235/835 234/234/836 141/434/837 +f 233/405/838 234/234/839 235/235/840 230/230/841 +f 235/235/842 142/436/843 146/438/844 230/230/845 +f 146/146/846 142/142/847 143/143/848 145/145/849 +f 197/197/850 138/428/851 139/429/852 +f 139/430/853 148/433/854 196/196/855 +f 189/189/856 192/192/857 236/236/858 188/188/859 +f 237/237/860 187/187/861 192/192/862 193/193/863 +f 194/194/864 188/188/865 236/236/866 226/226/867 +f 203/203/868 204/204/869 130/130/870 +f 177/177/871 239/239/872 238/238/873 175/175/874 +f 181/181/875 179/179/876 241/241/877 240/240/878 +f 175/175/879 238/238/880 241/241/881 179/179/882 +f 177/177/883 181/368/884 240/370/885 239/239/886 +f 238/238/887 239/239/888 243/243/889 242/242/890 +f 240/240/891 241/241/892 245/245/893 244/244/894 +f 241/241/895 238/238/896 242/242/897 245/245/898 +f 239/239/899 240/370/900 244/371/901 243/243/902 +f 229/229/903 153/153/904 127/127/905 246/246/906 +f 247/247/907 250/250/908 249/249/909 248/248/910 +f 252/252/911 251/251/912 244/420/913 245/421/914 +f 242/417/915 253/253/916 252/252/917 245/421/918 +f 243/418/919 244/422/920 251/372/921 +f 254/254/922 255/255/923 248/248/924 249/249/925 +f 254/254/926 256/256/927 257/257/928 255/255/929 +f 253/253/930 248/248/931 255/255/932 +f 242/417/933 243/418/934 259/259/935 258/258/936 +f 243/418/937 251/372/938 260/260/939 259/259/940 +f 253/253/941 242/417/942 258/258/943 +f 246/246/944 4/4/945 261/261/946 229/229/947 +f 210/210/948 206/206/949 218/218/950 +f 206/206/951 222/222/952 217/217/953 218/218/954 +f 217/217/955 222/222/956 225/377/957 220/457/958 +f 212/212/959 213/213/960 132/132/961 +f 182/182/962 169/169/963 167/167/964 173/173/965 +f 162/162/966 176/176/967 173/173/968 167/167/969 +f 178/178/970 172/172/971 169/365/972 182/369/973 +f 176/176/974 162/162/975 172/172/976 178/178/977 +f 168/168/978 170/366/979 160/160/980 161/161/981 +f 162/162/982 167/167/983 161/161/984 +f 168/364/985 169/365/986 172/172/987 +f 148/433/988 145/432/989 198/198/990 +f 258/258/991 259/259/992 250/250/993 247/247/994 +f 259/259/995 260/260/996 249/413/997 250/250/998 +f 258/258/999 247/247/1000 248/248/1001 +f 158/158/1002 159/159/1003 165/350/1004 +f 157/157/1005 160/160/1006 170/366/1007 156/373/1008 +f 257/257/1009 252/252/1010 253/253/1011 255/255/1012 +f 251/372/1013 256/423/1014 254/414/1015 +f 248/248/1016 253/253/1017 258/258/1018 +f 140/425/1019 141/426/1020 234/424/1021 233/233/1022 +f 132/472/1023 213/477/1024 131/131/1025 +f 262/262/1026 237/333/1027 263/263/1028 +f 200/200/1029 225/225/1030 133/133/1031 +f 225/377/1032 222/222/1033 223/223/1034 133/376/1035 +f 183/183/1036 236/236/1037 185/185/1038 +f 236/236/1039 192/192/1040 187/187/1041 185/185/1042 +f 229/332/1043 226/226/1044 236/236/1045 183/183/1046 +f 262/334/1047 186/186/1048 187/187/1049 237/237/1050 +f 193/328/1051 226/226/1052 263/263/1053 237/333/1054 +f 264/264/1055 228/228/1056 186/186/1057 262/334/1058 +f 228/331/1059 149/149/1060 227/330/1061 +f 149/149/1062 153/153/1063 183/326/1064 227/330/1065 +f 211/475/1066 202/202/1067 210/210/1068 208/473/1069 +f 208/208/1070 215/215/1071 213/213/1072 211/211/1073 +f 129/344/1074 151/151/1075 152/152/1076 137/345/1077 +f 263/263/1078 226/226/1079 229/332/1080 +f 135/339/1081 262/262/1082 263/263/1083 265/340/1084 +f 180/180/1085 182/182/1086 173/173/1087 174/174/1088 +f 175/175/1089 179/179/1090 174/174/1091 +f 180/367/1092 181/368/1093 177/177/1094 +f 262/334/1095 135/338/1096 266/337/1097 264/264/1098 +f 149/149/1099 228/331/1100 264/335/1101 152/152/1102 +f 257/257/1103 256/256/1104 251/251/1105 252/252/1106 +f 260/260/1107 254/414/1108 249/413/1109 +f 251/372/1110 254/414/1111 260/260/1112 +f 264/335/1113 266/346/1114 137/345/1115 152/152/1116 +f 267/267/1117 268/268/1118 269/269/1119 270/270/1120 +f 269/269/1121 268/268/1122 271/271/1123 272/272/1124 +f 272/272/1125 271/271/1126 278/278/1127 273/273/1128 +f 271/271/1129 268/268/1130 277/277/1131 +f 274/274/1132 275/275/1133 271/271/1134 277/277/1135 +f 275/275/1136 276/276/1137 278/278/1138 271/271/1139 +f 273/273/1140 278/278/1141 281/281/1142 279/279/1143 +f 278/278/1144 276/276/1145 280/280/1146 281/281/1147 +f 279/279/1148 281/281/1149 303/303/1150 284/284/1151 +f 280/280/1152 304/304/1153 303/303/1154 281/281/1155 +f 270/270/1156 269/269/1157 282/282/1158 +f 269/269/1159 272/272/1160 283/283/1161 282/282/1162 +f 272/272/1163 273/273/1164 283/283/1165 +f 273/273/1166 279/279/1167 307/307/1168 283/283/1169 +f 279/279/1170 284/284/1171 307/307/1172 +f 282/282/1173 283/283/1174 308/308/1175 +f 283/283/1176 307/307/1177 308/308/1178 +f 270/270/1179 282/282/1180 305/305/1181 291/291/1182 +f 267/267/1183 270/270/1184 285/285/1185 +f 270/270/1186 291/291/1187 285/285/1188 +f 274/274/1189 277/277/1190 287/287/1191 286/286/1192 +f 288/288/1193 291/463/1194 290/290/1195 289/289/1196 +f 290/290/1197 293/293/1198 292/292/1199 289/289/1200 +f 293/293/1201 295/295/1202 294/294/1203 292/292/1204 +f 292/292/1205 296/296/1206 289/289/1207 +f 297/297/1208 296/296/1209 292/292/1210 298/298/1211 +f 298/298/1212 292/292/1213 294/294/1214 299/299/1215 +f 295/295/1216 301/301/1217 300/300/1218 294/294/1219 +f 294/294/1220 300/300/1221 302/302/1222 299/299/1223 +f 301/301/1224 284/458/1225 303/459/1226 300/300/1227 +f 302/302/1228 300/300/1229 303/459/1230 304/460/1231 +f 291/463/1232 305/464/1233 290/290/1234 +f 290/290/1235 305/464/1236 306/306/1237 293/293/1238 +f 293/293/1239 306/306/1240 295/295/1241 +f 295/295/1242 306/306/1243 307/461/1244 301/301/1245 +f 301/301/1246 307/461/1247 284/458/1248 +f 305/464/1249 308/465/1250 306/306/1251 +f 306/306/1252 308/465/1253 307/461/1254 +f 305/305/1255 282/282/1256 308/308/1257 +f 288/288/1258 285/462/1259 291/463/1260 +f 297/297/1261 310/310/1262 309/309/1263 296/296/1264 +f 319/387/1265 320/388/1266 318/389/1267 315/386/1268 +f 314/390/1269 311/391/1270 316/392/1271 315/386/1272 +f 312/393/1273 317/394/1274 316/392/1275 311/391/1276 +f 313/395/1277 314/390/1278 315/386/1279 318/389/1280 +f 316/392/1281 317/394/1282 320/388/1283 319/387/1284 +f 316/392/1285 319/387/1286 315/386/1287 +f 314/390/1288 313/395/1289 312/393/1290 311/391/1291 +f 327/397/1292 328/398/1293 326/399/1294 323/396/1295 +f 322/400/1296 321/401/1297 324/402/1298 323/396/1299 +f 321/401/1300 325/403/1301 324/402/1302 +f 322/400/1303 323/396/1304 326/399/1305 +f 324/402/1306 325/403/1307 328/398/1308 327/397/1309 +f 324/402/1310 327/397/1311 323/396/1312 +# 244 polygons - 112 triangles + diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h index 00c8289618..d431060664 100644 --- a/src/lib/evas/Evas_Eo.h +++ b/src/lib/evas/Evas_Eo.h @@ -744,6 +744,7 @@ typedef enum _Evas_3D_Material_Attrib typedef enum _Evas_3D_Mesh_File_Type { EVAS_3D_MESH_FILE_TYPE_MD2 = 0, /**< Quake's MD2 mesh file format */ + EVAS_3D_MESH_FILE_TYPE_OBJ, } Evas_3D_Mesh_File_Type; #include "canvas/evas_image.eo.h" diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c index c09f490341..25e9ddeef2 100644 --- a/src/lib/evas/canvas/evas_3d_mesh.c +++ b/src/lib/evas/canvas/evas_3d_mesh.c @@ -748,17 +748,46 @@ _evas_3d_mesh_file_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type ty _mesh_fini(pd); _mesh_init(pd); - if (file == NULL) - return; + if (file == NULL) return; switch (type) { case EVAS_3D_MESH_FILE_TYPE_MD2: - evas_3d_mesh_file_md2_set(obj, file); - break; + evas_3d_mesh_file_md2_set(obj, file); + break; + case EVAS_3D_MESH_FILE_TYPE_OBJ: + evas_3d_mesh_file_obj_set(obj, file); + break; default: - ERR("Invalid mesh file type."); - break; + ERR("Invalid mesh file type."); + break; + } +} + +EOLIAN static void +_evas_3d_mesh_save(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Mesh_File_Type type, + const char *file, const char *key EINA_UNUSED) +{ + if ((file == NULL) || (obj == NULL) || (pd == NULL)) return; + + switch (type) + { + case EVAS_3D_MESH_FILE_TYPE_OBJ: + { + Evas_3D_Mesh_Frame *f = evas_3d_mesh_frame_find(pd, 0); + + if (f == NULL) + { + ERR("Not existing mesh frame."); + return; + } + + evas_3d_mesh_save_obj(obj, file, f);//file without extension! + break; + } + default: + ERR("Invalid mesh file type."); + break; } } diff --git a/src/lib/evas/canvas/evas_3d_mesh.eo b/src/lib/evas/canvas/evas_3d_mesh.eo index a817bfec62..342ce3da96 100644 --- a/src/lib/evas/canvas/evas_3d_mesh.eo +++ b/src/lib/evas/canvas/evas_3d_mesh.eo @@ -8,7 +8,23 @@ class Evas_3D_Mesh (Evas_3D_Object, Evas_Common_Interface) /** * Load mesh data from file. * - * Loading a mesh from existing file is supported. Currently, only MD2 file + * Loading a mesh from existing file is supported. Currently, only MD2 and OBJ file + * formats are supported. + * + * @ingroup Evas_3D_Mesh + */ + params { + @in Evas_3D_Mesh_File_Type type; /*@ The type of the mesh file. */ + @in const char *file; /*@ Path to the mesh file. */ + @in const char *key; /*@ Key in the mesh file. */ + } + } + + save { + /** + * Save mesh data to file. + * + * Saving a mesh to file is supported. Currently, only OBJ file * format is supported. * * @ingroup Evas_3D_Mesh diff --git a/src/lib/evas/canvas/evas_3d_mesh_loader_obj.c b/src/lib/evas/canvas/evas_3d_mesh_loader_obj.c new file mode 100644 index 0000000000..22161541a9 --- /dev/null +++ b/src/lib/evas/canvas/evas_3d_mesh_loader_obj.c @@ -0,0 +1,397 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include "stdio.h" +#include "evas_common_private.h" +#include "evas_private.h" + +/* set value to position [x][y] to array name which have. */ +#define ARRAY_2D(name, x, y, count_y) (*(name + x * count_y + y)) + +/* read 3 float values in string and put it in array */ +#define PUT_DATA_TO_ARRAY(array_name, name) \ + sscanf (current,"%f %f %f", \ + &ARRAY_2D(_##array_name##_obj, counts.current_##name##_counter, 0, 3), \ + &ARRAY_2D(_##array_name##_obj, counts.current_##name##_counter, 1, 3), \ + &ARRAY_2D(_##array_name##_obj, counts.current_##name##_counter, 2, 3)); \ + counts.current_##name##_counter++; + +/* Structures for reading data from file. */ +typedef struct _OBJ_Counts OBJ_Counts; + +struct _OBJ_Counts +{ + int _vertex_counter; + int _normal_counter; + int _texture_point_counter; + int _triangles_counter; + + int current_vertex_counter; + int current_normal_counter; + int current_texture_point_counter; + int current_triangles_counter; + + Eina_Bool existence_of_normal; + Eina_Bool existence_of_tex_point; +}; + +static inline char* +_file_to_buf(const char *file, long *length)//prepare text file for reading +{ + FILE *file_for_print; + char *buf; + int unused __attribute__((unused));//this variable fixes warning "ignoring return value of fread" + + *length = 0; + file_for_print = fopen(file, "rb"); + if (!file_for_print) return NULL; + fseek(file_for_print, 0, SEEK_END);//set file_for_print to the end of file + *length = ftell(file_for_print);//set current position of file_for_print + buf = malloc(*length + 1); + fseek(file_for_print, 0, SEEK_SET);//set file_for_print to the begining of file + unused = fread(buf, *length, 1, file_for_print); + fclose(file_for_print); + buf[*length] = '\0'; + return buf; +} + +/* create new counter */ +static inline OBJ_Counts +_new_count_elements() +{ + OBJ_Counts counts; + + counts._vertex_counter = 0; + counts._normal_counter = 0; + counts._texture_point_counter = 0; + counts._triangles_counter = 0; + + counts.current_vertex_counter = 0; + counts.current_normal_counter = 0; + counts.current_texture_point_counter = 0; + counts.current_triangles_counter = 0; + + counts.existence_of_normal = EINA_FALSE; + counts.existence_of_tex_point = EINA_FALSE; + return counts; +} + +/* count triangles in face */ +static void +_analyze_face_line(char * face_analyzer, + int * count_of_triangles_in_line) +{ + int polygon_checker = -2; + Eina_Bool previous_is_space = EINA_TRUE; + while ((*face_analyzer != '\n') && (*face_analyzer != '#')) + { + if (*face_analyzer == ' ') + { + previous_is_space = EINA_TRUE; + } + else if ((previous_is_space) && (*face_analyzer >= '0') && (*face_analyzer <= '9')) + { + polygon_checker++; + previous_is_space = EINA_FALSE; + } + face_analyzer++; + } + *count_of_triangles_in_line = polygon_checker; +} + +static inline OBJ_Counts +_count_elements(char *start, long length)//count elements of mesh in .obj +{ + OBJ_Counts counts = _new_count_elements(); + + char * current = start; + int polygon_checker = -2;//polygons with n vertices can be represented as n-2 triangles + Eina_Bool will_check_next_char = EINA_FALSE; + Eina_Bool first_char_is_v = EINA_FALSE; + Eina_Bool first_char_is_f = EINA_FALSE; + Eina_Bool previous_is_space = EINA_FALSE; + + long i = 0; + /* count elements of mesh in .obj */ + for (; length > i; i++) + { + if (will_check_next_char) + { + if (first_char_is_v) + { + switch (*current) + { + case ' ': + counts._vertex_counter++; + break; + case 't': + counts._texture_point_counter++; + counts.existence_of_tex_point = EINA_TRUE; + break; + case 'n': + counts._normal_counter++; + counts.existence_of_normal = EINA_TRUE; + break; + default: + break; + } + first_char_is_v = EINA_FALSE; + will_check_next_char = EINA_FALSE; + } + else if (first_char_is_f) + { + switch (*current) + { + case '\n': + first_char_is_f = EINA_FALSE; + counts._triangles_counter += polygon_checker; + polygon_checker = -2; + previous_is_space = EINA_FALSE; + break; + case '#': + first_char_is_f = EINA_FALSE; + counts._triangles_counter += polygon_checker; + polygon_checker = -2; + previous_is_space = EINA_FALSE; + break; + case ' ': + previous_is_space = EINA_TRUE; + break; + default: + if ((previous_is_space) && (*current >= '0') && (*current <= '9')) + { + polygon_checker++; + previous_is_space = EINA_FALSE; + } + break; + } + } + else + { + switch (*current) + { + case 'v': + first_char_is_v = EINA_TRUE; + break; + case 'f': + first_char_is_f = EINA_TRUE; + break; + case 'm': + will_check_next_char = EINA_FALSE; + break; + default: + will_check_next_char = EINA_FALSE; + break; + } + } + } + else if (*current == '\n') + { + will_check_next_char = EINA_TRUE; + } + current++; + } + return counts; +} + +void +evas_3d_mesh_file_obj_set(Evas_3D_Mesh *mesh, const char *file) +{ + long length, i; + char * start = _file_to_buf(file, &length); + OBJ_Counts counts = _count_elements(start, length);//count elements of mesh in .obj + Eina_Bool will_check_next_char = EINA_FALSE; + Eina_Bool first_char_is_v = EINA_FALSE; + Eina_Bool first_char_is_f = EINA_FALSE; + float *pos, *nor, *tex; + int stride_pos, stride_nor, stride_tex; + int j, k; + char * current; + + float *_vertices_obj = malloc(counts._vertex_counter * 3 * sizeof(float)); + float *_normales_obj = malloc(counts._normal_counter * 3 * sizeof(float)); + float *_tex_coords_obj = malloc(counts._texture_point_counter * 3 * sizeof(float)); + /* triangle has 3 points, every point has 3(vertix, texture and normal) coord */ + int *_triangles = malloc(counts._triangles_counter * 9 * sizeof(int)); + + if ((start == NULL) || (_vertices_obj == NULL) || + (_normales_obj == NULL) || (_tex_coords_obj == NULL) || (_triangles == NULL)) + { + ERR("Allocate memory is failed."); + free(start); + free(_vertices_obj); + free(_normales_obj); + free(_tex_coords_obj); + free(_triangles); + return; + } + + current = start; + i = 0; + + /* put data to arrays */ + for (; length > i; i++) + { + if (will_check_next_char) + { + if (first_char_is_v) + { + switch (*current) + { + case ' ': + PUT_DATA_TO_ARRAY(vertices, vertex) + i--; + break; + case 't': + current++; + PUT_DATA_TO_ARRAY(tex_coords, texture_point) + break; + case 'n': + current++; + PUT_DATA_TO_ARRAY(normales, normal) + break; + default: + break; + } + first_char_is_v = EINA_FALSE; + will_check_next_char = EINA_FALSE; + } + else if (first_char_is_f) + { + char * auxiliary_pointer = current; + int count_of_triangles_in_line; + + _analyze_face_line(auxiliary_pointer, + &count_of_triangles_in_line); + int j; + current++; + i++; + int first_pos, first_tex, first_norm; + sscanf (current,"%i/%i/%i", + &first_pos, + &first_tex, + &first_norm); + + do + { + current++; + i++; + } + while (*current != ' '); + + current++; + i++; + + for (j = 0; j < count_of_triangles_in_line; j++) + { + auxiliary_pointer = current; + ARRAY_2D(_triangles, counts.current_triangles_counter, 0, 9) = first_pos; + ARRAY_2D(_triangles, counts.current_triangles_counter, 1, 9) = first_tex; + ARRAY_2D(_triangles, counts.current_triangles_counter, 2, 9) = first_norm; + sscanf (auxiliary_pointer,"%i/%i/%i %i/%i/%i", + &ARRAY_2D(_triangles, counts.current_triangles_counter, 3, 9), + &ARRAY_2D(_triangles, counts.current_triangles_counter, 4, 9), + &ARRAY_2D(_triangles, counts.current_triangles_counter, 5, 9), + &ARRAY_2D(_triangles, counts.current_triangles_counter, 6, 9), + &ARRAY_2D(_triangles, counts.current_triangles_counter, 7, 9), + &ARRAY_2D(_triangles, counts.current_triangles_counter, 8, 9)); + + while (*current != ' ') + { + current++; + i++; + } + + counts.current_triangles_counter++; + } + first_char_is_f = EINA_FALSE; + } + else + { + switch (*current) + { + case 'v': + first_char_is_v = EINA_TRUE; + break; + case 'f': + first_char_is_f = EINA_TRUE; + break; + case 'm': + will_check_next_char = EINA_FALSE; + break; + default: + will_check_next_char = EINA_FALSE; + break; + } + } + } + else if (*current == '\n') + { + will_check_next_char = EINA_TRUE; + } + current++; + } + free(start); + + /* prepare of mesh and take pointers to data which must be read */ + eo_do(mesh, + evas_3d_mesh_vertex_count_set(counts._triangles_counter * 3), + evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES), + evas_3d_mesh_frame_add(0), + evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_POSITION, 0, NULL), + evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_NORMAL, 0, NULL), + evas_3d_mesh_frame_vertex_data_copy_set(0, EVAS_3D_VERTEX_TEXCOORD, 0, NULL), + + pos = (float *)evas_3d_mesh_frame_vertex_data_map(0, EVAS_3D_VERTEX_POSITION), + nor = (float *)evas_3d_mesh_frame_vertex_data_map(0, EVAS_3D_VERTEX_NORMAL), + tex = (float *)evas_3d_mesh_frame_vertex_data_map(0, EVAS_3D_VERTEX_TEXCOORD), + + stride_pos = evas_3d_mesh_frame_vertex_stride_get(0, EVAS_3D_VERTEX_POSITION), + stride_nor = evas_3d_mesh_frame_vertex_stride_get(0, EVAS_3D_VERTEX_NORMAL), + stride_tex = evas_3d_mesh_frame_vertex_stride_get(0, EVAS_3D_VERTEX_TEXCOORD)); + + if (stride_pos == 0) stride_pos = sizeof(float) * 3; + if (stride_nor == 0) stride_nor = sizeof(float) * 3; + if (stride_tex == 0) stride_tex = sizeof(float) * 2; + + for (j = 0; j < counts._triangles_counter; j++) + { + for (k = 0; k < 3; k++) + { + float *p, *n, *t; + + p = (float *)((char *)pos + stride_pos * (j * 3 + k)); + n = (float *)((char *)nor + stride_nor * (j * 3 + k)); + t = (float *)((char *)tex + stride_tex * (j * 3 + k)); + + p[0] = ARRAY_2D(_vertices_obj, (ARRAY_2D(_triangles, j, (3 * k), 9) - 1), 0, 3); + p[1] = ARRAY_2D(_vertices_obj, (ARRAY_2D(_triangles, j, (3 * k), 9) - 1), 1, 3); + p[2] = ARRAY_2D(_vertices_obj, (ARRAY_2D(_triangles, j, (3 * k), 9) - 1), 2, 3); + + n[0] = ARRAY_2D(_normales_obj, (ARRAY_2D(_triangles, j, (3 * k + 2), 9) - 1), 0, 3); + n[1] = ARRAY_2D(_normales_obj, (ARRAY_2D(_triangles, j, (3 * k + 2), 9) - 1), 1, 3); + n[2] = ARRAY_2D(_normales_obj, (ARRAY_2D(_triangles, j, (3 * k + 2), 9) - 1), 2, 3); + + t[0] = ARRAY_2D(_tex_coords_obj, (ARRAY_2D(_triangles, j, (3 * k + 1), 9) - 1), 0, 3); + t[1] = ARRAY_2D(_tex_coords_obj, (ARRAY_2D(_triangles, j, (3 * k + 1), 9) - 1), 1, 3); + } + } + free(_vertices_obj); + free(_normales_obj); + free(_tex_coords_obj); + free(_triangles); + /* Unmap vertex buffer. */ + eo_do(mesh, + evas_3d_mesh_frame_vertex_data_unmap(0, EVAS_3D_VERTEX_POSITION), + evas_3d_mesh_frame_vertex_data_unmap(0, EVAS_3D_VERTEX_NORMAL), + evas_3d_mesh_frame_vertex_data_unmap(0, EVAS_3D_VERTEX_TEXCOORD)); + + Evas_3D_Mesh_Data *pd = eo_data_scope_get(mesh, EVAS_3D_MESH_CLASS); + + if (!evas_3d_mesh_aabb_add_to_frame(pd, 0, stride_pos)) + { + ERR("Axis-Aligned Bounding Box wan't added in frame %d ", 0); + } +} diff --git a/src/lib/evas/canvas/evas_3d_mesh_saver_obj.c b/src/lib/evas/canvas/evas_3d_mesh_saver_obj.c new file mode 100644 index 0000000000..c7bf5c8644 --- /dev/null +++ b/src/lib/evas/canvas/evas_3d_mesh_saver_obj.c @@ -0,0 +1,128 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include "stdio.h" +#include "evas_common_private.h" +#include "evas_private.h" + +#define OPEN_FILE(extension)\ + int length=strlen(file);\ + char * extension = "."#extension;\ + char * _##extension##_file_name = (char *)malloc(length+4);\ + strcpy(_##extension##_file_name,file);\ + strcpy(_##extension##_file_name+length,extension);\ + FILE * _##extension##_file = fopen(_##extension##_file_name, "w+");\ + free(_##extension##_file_name); + +#define SAVE_GEOMETRICS(a, format)\ + vb = &f->vertices[a];\ + fprintf(_obj_file, "o %s\n",file);\ + if (vb->data == NULL)\ + {\ + ERR("Reading of geometrics is failed.");\ + fclose(_obj_file);\ + return;\ + }\ + src = (float *)vb->data;\ + for (i = 0; i < pd->vertex_count; i++)\ + {\ + fprintf(_obj_file, format, src[0], src[1], src[2]);\ + src += f->vertices[a].element_count;\ + } + +static void +_save_mesh(Evas_3D_Mesh_Data *pd, const char *file, Evas_3D_Mesh_Frame *f) +{ + Evas_3D_Vertex_Buffer *vb; + time_t current_time; + char* c_time_string; + int i; + float *src; + + OPEN_FILE(obj) + fprintf(_obj_file, "# Evas_3D saver OBJ v0.03 \n");//_obj_file created in macro + /* Adding time comment to .obj file. */ + current_time = time(NULL); + + if (current_time == ((time_t)-1)) + { + ERR("Failure to compute the current time."); + fclose(_obj_file); + return; + } + + c_time_string = ctime(¤t_time); + + if (c_time_string == NULL) + { + ERR("Failure to convert the current time."); + fclose(_obj_file); + return; + } + + fprintf(_obj_file,"# Current time is %s \n", c_time_string); + fprintf(_obj_file,"mtllib %s.mtl \n\n", file); + + /* Adding geometrics to file. */ + if (f == NULL) + { + ERR("Not existing mesh frame."); + fclose(_obj_file); + return; + } + + SAVE_GEOMETRICS(EVAS_3D_VERTEX_POSITION, "v %.4f %.4f %.4f \n") + SAVE_GEOMETRICS(EVAS_3D_VERTEX_NORMAL, "vn %.4f %.4f %.4f \n") + SAVE_GEOMETRICS(EVAS_3D_VERTEX_TEXCOORD, "vt %.4f %.4f %.4f \n") + fprintf(_obj_file,"usemtl Material\n s off\n"); + for (i = 1; i <= pd->vertex_count; i++)//numeration of faces in .obj started from 1 + { + fprintf(_obj_file,"f %i/%i/%i ", i, i, i); + i++; + fprintf(_obj_file,"%i/%i/%i ", i, i, i); + i++; + fprintf(_obj_file,"%i/%i/%i \n", i, i, i); + } + fclose(_obj_file); +} + +static void +_save_material(Evas_3D_Mesh_Data *pd EINA_UNUSED, const char *file, Evas_3D_Mesh_Frame *f) +{ + Evas_3D_Material_Data *mat = eo_data_scope_get(f->material, EVAS_3D_MATERIAL_CLASS); + + OPEN_FILE(mtl) + + fprintf(_mtl_file, "# Evas_3D saver OBJ v0.03 \n");//_mtl_file created in macro + fprintf(_mtl_file, "# Material Count: 1 \n\n"); + fprintf(_mtl_file, "newmtl Material \n"); + fprintf(_mtl_file, "Ns 1.000000 \n");//exp factor for specular highlight + fprintf(_mtl_file, "Ka %.6f %.6f %.6f \n", + (float)mat->attribs[EVAS_3D_MATERIAL_AMBIENT].color.r, + (float)mat->attribs[EVAS_3D_MATERIAL_AMBIENT].color.g, + (float)mat->attribs[EVAS_3D_MATERIAL_AMBIENT].color.b); + fprintf(_mtl_file, "Kd %.6f %.6f %.6f \n", + (float)mat->attribs[EVAS_3D_MATERIAL_DIFFUSE].color.r, + (float)mat->attribs[EVAS_3D_MATERIAL_DIFFUSE].color.g, + (float)mat->attribs[EVAS_3D_MATERIAL_DIFFUSE].color.b); + fprintf(_mtl_file, "Ks %.6f %.6f %.6f \n", + (float)mat->attribs[EVAS_3D_MATERIAL_SPECULAR].color.r, + (float)mat->attribs[EVAS_3D_MATERIAL_SPECULAR].color.g, + (float)mat->attribs[EVAS_3D_MATERIAL_SPECULAR].color.b); + fprintf(_mtl_file, "Ni 1.000000 \n");//optical density + fprintf(_mtl_file, "d 1.000000 \n");//a factor d of 1.0 is fully opaque material + fprintf(_mtl_file, "illum 2 \n");//illumination properties + + fclose(_mtl_file); +} + +void +evas_3d_mesh_save_obj(Evas_3D_Mesh *mesh, const char *file, Evas_3D_Mesh_Frame *f) +{ + Evas_3D_Mesh_Data *pd = eo_data_scope_get(mesh, EVAS_3D_MESH_CLASS); + _save_mesh(pd, file, f); + _save_material(pd, file, f); +} diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 9fff9c0055..0ef8f081e0 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1504,6 +1504,8 @@ void evas_3d_mesh_node_add(Evas_3D_Mesh *mesh, Evas_3D_Node *node); void evas_3d_mesh_node_del(Evas_3D_Mesh *mesh, Evas_3D_Node *node); void evas_3d_mesh_interpolate_vertex_buffer_get(Evas_3D_Mesh *mesh, int frame, Evas_3D_Vertex_Attrib attrib, Evas_3D_Vertex_Buffer *buffer0, Evas_3D_Vertex_Buffer *buffer1, Evas_Real *weight); void evas_3d_mesh_file_md2_set(Evas_3D_Mesh *mesh, const char *file); +void evas_3d_mesh_save_obj(Evas_3D_Mesh *mesh, const char *file, Evas_3D_Mesh_Frame *f); +void evas_3d_mesh_file_obj_set(Evas_3D_Mesh *mesh, const char *file); Eina_Bool evas_3d_mesh_aabb_add_to_frame(Evas_3D_Mesh_Data *pd, int frame, int stride); /* Texture functions. */