evas.canvas3d: example using static LOD

Summary:
Example using static LOD in evas.canvas3d
It should be applied after D3731

Reviewers: Hermet, raster, cedric

Subscribers: jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
Oleksandr Shcherbina 2016-03-17 11:14:08 -07:00 committed by Cedric BAIL
parent 37408aef95
commit dcd5fb7835
5 changed files with 5910 additions and 0 deletions

View File

@ -294,6 +294,11 @@ evas_canvas3d_parallax_occlusion_SOURCES = evas-3d-parallax-occlusion.c
evas_canvas3d_parallax_occlusion_LDADD = $(ECORE_EVAS_COMMON_LDADD) @EFL_PTHREAD_LIBS@
evas_canvas3d_parallax_occlusion_CPPFLAGS = $(ECORE_EVAS_COMMON_CPPFLAGS)
EXTRA_PROGRAMS += evas_canvas3d_static_lod
evas_canvas3d_static_lod_SOURCES = evas-3d-static-lod.c
evas_canvas3d_static_lod_LDADD = $(ECORE_EVAS_COMMON_LDADD) @EFL_PTHREAD_LIBS@
evas_canvas3d_static_lod_CPPFLAGS = $(ECORE_EVAS_COMMON_CPPFLAGS)
EXTRA_PROGRAMS += evas_gl
evas_gl_SOURCES = evas-gl.c
evas_gl_LDADD = $(ECORE_EVAS_COMMON_LDADD) @EFL_PTHREAD_LIBS@
@ -388,6 +393,9 @@ resources/models/sweet_home.obj \
resources/models/sweet_home_only_vertex_coords.obj \
resources/models/sweet_home_without_normals.obj \
resources/models/sweet_home_without_tex_coords.obj \
resources/models/lod/iso_sphere0.obj \
resources/models/lod/iso_sphere1.obj \
resources/models/lod/iso_sphere2.obj \
resources/models/convex_hull/column_blender_ch.ply \
resources/models/convex_hull/column.ply \
resources/models/convex_hull/cube_blender_ch.ply \

View File

@ -0,0 +1,278 @@
/**
* This example illustrating using static LOD technic.
* Main idea using several meshes with different quantity of polygons,
* render mesh depend on distance to the camera node.
* Use key up/down to change animtion style:
* Up (default) object motion
* Down camera motion
* @verbatim
* gcc -o evas-3d-static-lod evas-3d-static-lod.c `pkg-config --libs --cflags efl evas ecore ecore-evas eina eo` -lm
* @endverbatim
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#else
#define PACKAGE_EXAMPLES_DIR "."
#define EFL_EO_API_SUPPORT
#define EFL_BETA_API_SUPPORT
#endif
#include <Eo.h>
#include <Evas.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include "evas-common.h"
#define WIDTH 600
#define HEIGHT 600
#define NUMBER_MESHS 2
#define NEAR 90.0
#define FAR 1000.0
static const char *model_path = PACKAGE_EXAMPLES_DIR EVAS_MODEL_FOLDER "/lod/iso_sphere";
typedef struct _Scene_Data
{
Eo *scene;
Eo *root_node;
Eo *complex_node;
Eo *camera_node;
Eo *light_node;
Eo *lod_mesh_node1;
Eo *lod_mesh_node2;
Eo *camera;
Eo *light;
Eo *material;
} Scene_Data;
static Ecore_Evas *ecore_evas = NULL;
static Evas *evas = NULL;
static Eo *background = NULL;
static Eo *image = NULL;
Eina_Bool animation_type = EINA_FALSE;
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);
efl_gfx_size_set(background, w, h);
efl_gfx_size_set(image, w, h);
}
static Eina_Bool
_animate_scene(void *data)
{
static float angle = 0.0f;
Evas_Real x, y, z;
Scene_Data *scene = (Scene_Data *)data;
static Eina_Bool pass = EINA_TRUE;
if (animation_type) //Camera motion
{
evas_canvas3d_node_position_set(scene->complex_node, -20.0, 0.0, 50.0);
evas_canvas3d_node_position_get(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
if (pass)
z -= 4.0;
else
z += 4.0;
if (z == NEAR * 2.0) pass = EINA_FALSE;
if (z == FAR / 2.0) pass = EINA_TRUE;
evas_canvas3d_node_position_set(scene->camera_node, x , y , z);
evas_canvas3d_node_look_at_set(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
}
else //Object motion
{
evas_canvas3d_node_position_set(scene->camera_node, 0.0, 0.0, 300.0);
evas_canvas3d_node_look_at_set(scene->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_position_get(scene->complex_node, EVAS_CANVAS3D_SPACE_PARENT, &x, &y, &z);
evas_canvas3d_node_position_set( scene->complex_node, sin(angle) * 100 - 20 , y , cos(angle) * 200);
angle += 0.02f;
if (angle > 360.0) angle -= 360.0f;
}
return EINA_TRUE;
}
static void
_camera_setup(Scene_Data *data)
{
data->camera = eo_add(EVAS_CANVAS3D_CAMERA_CLASS, evas);
evas_canvas3d_camera_projection_perspective_set(data->camera, NEAR, 1.0, 2.0, FAR);
data->camera_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(eo_self, EVAS_CANVAS3D_NODE_TYPE_CAMERA));
evas_canvas3d_node_camera_set(data->camera_node, data->camera);
evas_canvas3d_node_position_set(data->camera_node, 0.0, 0.0, 300.0);
evas_canvas3d_node_look_at_set(data->camera_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_member_add(data->root_node, data->camera_node);
}
static void
_light_setup(Scene_Data *data)
{
data->light = eo_add(EVAS_CANVAS3D_LIGHT_CLASS, evas);
evas_canvas3d_light_ambient_set(data->light, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_light_diffuse_set(data->light, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_light_specular_set(data->light, 1.0, 1.0, 1.0, 1.0);
data->light_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(eo_self, EVAS_CANVAS3D_NODE_TYPE_LIGHT));
evas_canvas3d_node_light_set(data->light_node, data->light);
evas_canvas3d_node_position_set(data->light_node, 0.0, 0.0, 300.0);
evas_canvas3d_node_look_at_set(data->light_node, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 0.0, 0.0,
EVAS_CANVAS3D_SPACE_PARENT, 0.0, 1.0, 0.0);
evas_canvas3d_node_member_add(data->root_node, data->light_node);
}
static void
_mesh_setup(Scene_Data *data)
{
int i = 0;
Evas_Real distances[NUMBER_MESHS + 2] = {NEAR, 150.0, 300.0, 500.0};
Evas_Real m_distances[NUMBER_MESHS + 2] = {NEAR, 200.0, 500.0, 500.0};
/* Setup material. */
data->material = eo_add(EVAS_CANVAS3D_MATERIAL_CLASS, evas);
evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, EINA_TRUE);
evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE);
evas_canvas3d_material_enable_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, EINA_TRUE);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0.2, 0.2, 0.2, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0.8, 0.8, 0.8, 1.0);
evas_canvas3d_material_color_set(data->material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1.0, 1.0, 1.0, 1.0);
evas_canvas3d_material_shininess_set(data->material, 100.0);
data->lod_mesh_node1 =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(eo_self, EVAS_CANVAS3D_NODE_TYPE_MESH));
evas_canvas3d_node_position_set(data->lod_mesh_node1, 2.0, 0.0, 0.0);
data->lod_mesh_node2 =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(eo_self, EVAS_CANVAS3D_NODE_TYPE_MESH));
data->complex_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(eo_self, EVAS_CANVAS3D_NODE_TYPE_NODE));
evas_canvas3d_node_scale_set(data->complex_node, 30.0, 30.0, 30.0);
/* Setup mesh. One model, two meshes object with dufferent lod distances.*/
for (i = 0; i <= NUMBER_MESHS; i++)
{
Eo *mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
Eina_Stringshare *str = eina_stringshare_printf("%s%d%s", model_path,
i, ".obj");
efl_file_set(mesh, str, NULL);
evas_canvas3d_mesh_frame_material_set(mesh, 0, data->material);
evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_lod_boundary_set(mesh, distances[i], distances[i + 1]);
evas_canvas3d_node_mesh_add(data->lod_mesh_node1, mesh);
mesh = eo_add(EVAS_CANVAS3D_MESH_CLASS, evas);
efl_file_set(mesh, str, NULL);
evas_canvas3d_mesh_frame_material_set(mesh, 0, data->material);
evas_canvas3d_mesh_shade_mode_set(mesh, EVAS_CANVAS3D_SHADE_MODE_PHONG);
evas_canvas3d_mesh_lod_boundary_set(mesh, m_distances[i], m_distances[i + 1]);
evas_canvas3d_node_mesh_add(data->lod_mesh_node2, mesh);
eina_stringshare_del(str);
}
evas_canvas3d_node_lod_enable_set(data->lod_mesh_node1, EINA_TRUE);
evas_canvas3d_node_lod_enable_set(data->lod_mesh_node2, EINA_TRUE);
evas_canvas3d_node_member_add(data->complex_node, data->lod_mesh_node1);
evas_canvas3d_node_member_add(data->complex_node, data->lod_mesh_node2);
evas_canvas3d_node_member_add(data->root_node, data->complex_node);
}
static void
_scene_setup(Scene_Data *data)
{
data->scene = eo_add(EVAS_CANVAS3D_SCENE_CLASS, evas);
evas_canvas3d_scene_size_set(data->scene, WIDTH, HEIGHT);
evas_canvas3d_scene_background_color_set(data->scene, 0.0, 0.0, 0.0, 0.0);
data->root_node =
eo_add(EVAS_CANVAS3D_NODE_CLASS, evas,
evas_canvas3d_node_constructor(eo_self, EVAS_CANVAS3D_NODE_TYPE_NODE));
_camera_setup(data);
_light_setup(data);
_mesh_setup(data);
evas_canvas3d_scene_root_node_set(data->scene, data->root_node);
evas_canvas3d_scene_camera_node_set(data->scene, data->camera_node);
}
static void
_on_key_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *eo EINA_UNUSED,
void *event_info)
{
Evas_Event_Key_Down *ev = event_info;
if(!strcmp("Up", ev->key))
animation_type = EINA_FALSE;
else if(!strcmp("Down", ev->key))
animation_type = EINA_TRUE;
}
int
main(void)
{
//Unless Evas 3D supports Software renderer, we set gl backened forcely.
setenv("ECORE_EVAS_ENGINE", "opengl_x11", 1);
Scene_Data data;
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);
_scene_setup(&data);
/* Add a background rectangle objects. */
background = eo_add(EVAS_RECTANGLE_CLASS, evas);
efl_gfx_color_set(background, 0, 0, 0, 255);
efl_gfx_size_set(background, WIDTH, HEIGHT);
efl_gfx_visible_set(background, EINA_TRUE);
/* Add an image object for 3D scene rendering. */
image = eo_add(EFL_CANVAS_SCENE3D_CLASS, evas);
efl_gfx_size_set(image, WIDTH, HEIGHT);
efl_gfx_visible_set(image, EINA_TRUE);
evas_object_focus_set(image, EINA_TRUE);
/* Set the image object as render target for 3D scene. */
efl_canvas_scene3d_set(image, data.scene);
/* Add animation timer callback. */
ecore_animator_add(_animate_scene, &data);
evas_object_event_callback_add(image, EVAS_CALLBACK_KEY_DOWN, _on_key_down, &data);
/* Enter main loop. */
ecore_main_loop_begin();
ecore_evas_free(ecore_evas);
ecore_evas_shutdown();
return 0;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,808 @@
# Blender v2.69 (sub 0) OBJ File: ''
# www.blender.org
mtllib iso_sphere2.mtl
o Icosphere.002
v -0.043085 -1.110005 0.350275
v -0.337617 -1.079840 0.336233
v -0.285440 -0.585440 -0.525917
v -0.531376 -0.575270 -0.437794
v -0.283834 -0.545811 1.215694
v -0.499054 -0.505438 1.162908
v 0.654968 -0.510392 -0.199780
v -0.474590 -0.768147 0.985874
v -0.087179 -0.707791 1.143459
v -0.299933 -0.881676 0.935535
v -0.008774 -0.843590 1.015251
v -0.072305 -1.033951 0.721859
v -0.246823 -1.068542 0.559624
v 0.337395 -0.557072 1.131420
v 0.089247 -0.941906 0.853393
v 0.300138 -0.815399 0.924240
v 0.422819 -0.662415 0.991150
v 0.320283 -0.958198 0.668575
v 0.645573 -0.627166 0.786306
v 0.132259 -1.078536 0.438246
v 0.480358 -0.833977 0.713856
v 0.792637 -0.574664 0.319945
v 0.635831 -0.786164 0.207136
v 0.723372 -0.606370 0.029680
v 0.679441 -0.720267 0.520725
v 0.484967 -0.802409 -0.103068
v 0.294766 -1.022106 0.181082
v 0.292891 -0.923773 -0.095417
v 0.485381 -0.925966 0.423022
v -0.803823 -0.808436 0.413738
v -0.885127 -0.673160 0.583628
v -0.990892 -0.550005 0.322880
v -0.619727 -0.891485 0.680166
v -0.873503 -0.540241 0.791042
v -0.694462 -0.676220 0.897598
v -0.575186 -0.986318 0.306743
v -0.430878 -0.993595 0.656383
v -0.317218 -0.775528 -0.376969
v -0.211685 -1.063345 0.068899
v -0.337974 -0.945765 -0.155163
v -0.620106 -0.714304 -0.267048
v -0.684850 -0.803608 -0.079216
v -0.853416 -0.583001 -0.114483
v -0.466844 -0.986394 0.035488
v -0.736586 -0.859776 0.186172
v -0.943753 -0.607470 0.132875
v 0.041003 -1.050327 0.023054
v 0.395985 -0.643604 -0.359921
v 0.143711 -0.882835 -0.258825
v 0.009105 -0.720215 -0.452780
v 0.199703 -0.455054 -0.562698
v -0.142967 -0.947197 -0.211140
v 0.890285 -0.084419 0.556994
v 0.863267 0.189883 0.468162
v 0.785349 -0.202121 0.820583
v 0.841177 -0.403835 0.570116
v 0.821439 0.230937 0.063660
v 0.909336 -0.046523 0.220958
v 0.854325 -0.117769 -0.002844
v 0.887901 -0.328848 0.349619
v 0.832592 -0.379028 0.044187
v 0.070833 0.177135 1.289833
v 0.237408 0.254766 1.214340
v -0.270239 -0.351235 1.298106
v -0.105918 -0.144275 1.342076
v 0.366009 0.076849 1.213537
v 0.132133 -0.162282 1.313611
v 0.397385 -0.178849 1.211441
v 0.587799 -0.114118 1.074440
v 0.292595 -0.312500 1.240183
v 0.067577 -0.424900 1.275726
v 0.616707 -0.368339 0.998730
v -0.960056 0.171375 0.765186
v -0.960758 -0.070815 0.844814
v -1.075348 -0.319435 0.312977
v -1.014677 -0.413517 0.589386
v -0.743130 0.307930 0.987598
v -0.831280 -0.090788 1.024551
v -1.066078 -0.108663 0.592005
v -0.642967 -0.266209 1.161930
v -0.952019 -0.344589 0.797783
v -0.761909 -0.439749 1.004043
v -0.578869 -0.184317 -0.543253
v -0.808233 -0.115121 -0.371317
v -0.761061 -0.398044 -0.359041
v -0.871302 0.369238 -0.100170
v -0.920135 0.214570 -0.142809
v -0.750769 0.171965 -0.377922
v -0.951937 -0.017335 -0.177204
v -1.058321 -0.022178 0.071262
v -1.035574 -0.255153 0.019268
v -0.943188 -0.315718 -0.160099
v 0.252098 0.252701 -0.541653
v 0.217963 0.488884 -0.419874
v 0.502609 -0.112018 -0.476820
v 0.263783 0.003515 -0.601440
v 0.024979 0.278481 -0.594942
v -0.004380 -0.127570 -0.666612
v 0.262665 -0.232774 -0.594235
v 0.483948 -0.387848 -0.439896
v -0.052023 -0.469005 -0.603711
v -0.318117 -0.360137 -0.614348
v 0.397964 0.420673 1.042683
v 0.575905 0.158554 1.040710
v 0.626959 0.388094 0.845360
v 0.761446 0.091665 0.837194
v 0.730349 0.376724 0.658611
v 0.746921 0.455314 0.409437
v -0.633217 0.108732 1.156311
v -0.841345 0.384472 0.795570
v -0.469215 0.440361 1.092636
v -0.397266 0.317100 1.202000
v -0.414673 -0.032404 1.288877
v -0.176482 0.154676 1.304393
v -0.085038 0.379200 1.217154
v 0.143173 0.462581 1.132462
v -1.015969 0.270023 0.169908
v -1.042686 0.203063 0.475093
v -0.913159 0.478394 0.397644
v -1.096181 -0.031866 0.291238
v -0.878438 0.453167 0.639355
v -0.168630 0.145768 -0.640814
v -0.324457 -0.136029 -0.641977
v -0.246814 0.495504 -0.458252
v -0.449674 0.404317 -0.462725
v -0.418270 0.098507 -0.595456
v -0.599224 0.155701 -0.493637
v 0.707630 -0.216033 -0.268274
v 0.713462 0.272873 -0.137657
v 0.612297 0.506575 -0.042900
v 0.724725 0.024737 -0.237570
v 0.494619 0.367397 -0.337263
v 0.464614 0.562986 -0.177645
v 0.541979 0.138264 -0.406811
v -0.107575 0.806074 0.774759
v 0.163417 0.858934 0.493508
v -0.082945 0.898915 0.437085
v 0.096251 0.670177 0.954388
v 0.318120 0.750322 0.685074
v 0.310741 0.654518 0.860890
v 0.134068 0.874334 0.224604
v 0.376475 0.787784 0.375769
v 0.529269 0.683066 0.419120
v 0.537943 0.587103 0.704846
v 0.680249 0.531307 0.217619
v -0.279031 0.851239 0.613994
v -0.486828 0.813635 0.495644
v -0.588239 0.630827 0.822411
v -0.357988 0.643371 0.954727
v -0.132449 0.589638 1.065384
v -0.336158 0.870105 0.237582
v -0.781217 0.592996 0.082910
v -0.532025 0.762084 0.054369
v -0.098966 0.880414 0.114647
v -0.702800 0.696410 0.438742
v -0.015972 0.595602 -0.388412
v 0.100659 0.780216 -0.110664
v -0.193844 0.812969 -0.066578
v -0.298229 0.702745 -0.236465
v -0.612024 0.525072 -0.262520
v 0.449396 0.723814 0.123743
v 0.274922 0.681236 -0.176248
vn -0.325280 -0.386001 -0.863247
vn -0.217219 -0.605243 0.765830
vn -0.202023 -0.639645 0.741647
vn -0.097132 -0.712323 0.695099
vn -0.041522 -0.834040 0.550139
vn 0.232482 -0.593342 0.770647
vn 0.042421 -0.842307 0.537327
vn 0.248001 -0.754040 0.608210
vn 0.272464 -0.625586 0.731031
vn 0.383941 -0.610763 0.692502
vn 0.007245 -0.979552 0.201059
vn 0.326862 -0.813897 0.480346
vn 0.223599 -0.906008 0.359378
vn 0.072098 -0.976012 0.205434
vn 0.220145 -0.926733 0.304471
vn 0.459241 -0.759645 0.460475
vn 0.540076 -0.660963 0.521005
vn 0.573451 -0.638104 0.513788
vn 0.829519 -0.540941 -0.138858
vn 0.703602 -0.556113 -0.442360
vn 0.700606 -0.644130 -0.306999
vn 0.565195 -0.791240 -0.233439
vn 0.502396 -0.813572 -0.292743
vn 0.799353 -0.600673 0.015060
vn 0.715335 -0.697197 0.047027
vn 0.570843 -0.811109 -0.127435
vn 0.683484 -0.657266 0.317571
vn 0.646563 -0.724063 0.240184
vn 0.397950 -0.916018 0.050467
vn 0.214068 -0.973669 -0.078381
vn 0.544493 -0.796967 0.261480
vn 0.397613 -0.905459 0.148485
vn -0.818780 -0.570687 0.062571
vn -0.667374 -0.704461 0.241549
vn -0.693925 -0.587952 0.415670
vn -0.566912 -0.812035 0.138600
vn -0.664842 -0.632392 0.397575
vn -0.377512 -0.915852 0.136750
vn -0.452324 -0.875799 0.168462
vn -0.498522 -0.695599 0.517318
vn -0.295004 -0.940703 0.167480
vn -0.496145 -0.516503 0.697900
vn -0.366357 -0.791505 0.489186
vn -0.369697 -0.787443 0.493212
vn -0.171469 -0.909624 0.378395
vn -0.105831 -0.990018 0.093087
vn -0.179041 -0.881302 0.437322
vn -0.294857 -0.552721 0.779460
vn -0.300534 -0.556633 -0.774493
vn -0.096282 -0.989649 -0.106418
vn -0.376055 -0.613162 -0.694704
vn -0.360000 -0.723523 -0.588994
vn -0.649139 -0.575524 -0.497384
vn -0.419723 -0.755079 -0.503674
vn -0.421204 -0.786166 -0.452251
vn -0.228572 -0.909111 -0.348242
vn -0.529578 -0.803062 -0.273201
vn -0.713608 -0.644124 -0.275440
vn -0.725669 -0.606444 -0.325008
vn -0.506362 -0.838325 -0.202013
vn -0.262011 -0.947767 -0.181903
vn -0.347813 -0.927254 -0.138661
vn -0.615189 -0.788370 -0.003905
vn -0.761993 -0.642604 -0.080166
vn -0.806300 -0.591125 -0.021257
vn 0.188646 -0.973526 -0.129071
vn 0.625373 -0.548037 -0.555486
vn 0.427594 -0.695118 -0.577905
vn 0.424579 -0.707569 -0.564870
vn 0.297073 -0.620106 -0.726097
vn 0.296026 -0.539527 -0.788213
vn 0.300058 -0.898131 -0.321443
vn 0.234318 -0.870860 -0.432085
vn 0.116642 -0.871904 -0.475583
vn 0.056821 -0.745287 -0.664318
vn -0.025578 -0.519409 -0.854143
vn -0.040821 -0.715313 -0.697611
vn -0.081008 -0.606328 -0.791078
vn 0.019031 -0.984447 -0.174650
vn -0.022886 -0.921460 -0.387799
vn -0.123146 -0.905614 -0.405829
vn -0.180605 -0.772005 -0.609417
vn 0.939797 -0.131531 0.315406
vn 0.918920 0.390537 -0.055385
vn 0.961915 0.263497 -0.072725
vn 0.990311 0.120112 0.069689
vn 0.997330 -0.052659 0.050603
vn 0.976904 -0.143697 0.158142
vn 0.977607 -0.144108 -0.153354
vn 0.972408 -0.117201 -0.201709
vn 0.842254 -0.312404 0.439330
vn 0.927120 -0.367911 0.071342
vn 0.931073 -0.347367 -0.111533
vn 0.833842 -0.374733 -0.405318
vn 0.892788 -0.418236 -0.167358
vn 0.838930 -0.471282 0.272196
vn 0.870468 -0.468487 0.151013
vn 0.314278 0.223000 0.922768
vn 0.125070 0.091795 0.987892
vn 0.285969 0.118264 0.950913
vn 0.361192 0.036682 0.931770
vn 0.568657 0.063054 0.820154
vn 0.354160 -0.077256 0.931988
vn 0.016559 -0.220352 0.975280
vn 0.104586 -0.167135 0.980371
vn 0.248624 -0.197897 0.948168
vn 0.611896 -0.161038 0.774371
vn 0.544813 -0.255399 0.798718
vn 0.550269 -0.255466 0.794947
vn 0.309450 -0.338496 0.888629
vn 0.016059 -0.390907 0.920290
vn -0.029079 -0.410270 0.911501
vn 0.603953 -0.415720 0.680013
vn 0.202558 -0.503514 0.839907
vn 0.644350 -0.440932 0.624814
vn -0.936414 -0.339131 0.090109
vn -0.762955 0.224849 0.606088
vn -0.785320 0.195416 0.587440
vn -0.913503 -0.097033 0.395090
vn -0.929581 -0.159590 0.332280
vn -0.811611 -0.123981 0.570890
vn -0.682480 -0.177341 0.709063
vn -0.763908 -0.188135 0.617292
vn -0.855737 -0.356336 0.375152
vn -0.765305 -0.326237 0.554867
vn -0.547333 -0.326108 0.770766
vn -0.883545 -0.444145 0.148609
vn -0.844315 -0.428413 0.321860
vn -0.684131 -0.452590 0.571951
vn -0.539756 -0.468719 0.699261
vn -0.425490 -0.283512 -0.859406
vn -0.778666 0.195222 -0.596295
vn -0.905349 0.181124 -0.384107
vn -0.761569 0.137870 -0.633249
vn -0.919266 -0.001905 -0.393633
vn -0.815916 -0.056907 -0.575363
vn -0.894811 -0.051658 -0.443446
vn -0.759714 -0.154080 -0.631739
vn -0.620273 -0.136931 -0.772342
vn -0.498474 -0.281710 -0.819855
vn -0.758690 -0.348727 -0.550254
vn -0.878272 -0.337968 -0.338253
vn -0.932479 -0.305286 -0.193091
vn -0.929743 -0.345970 -0.126028
vn -0.582305 -0.455417 -0.673436
vn -0.867666 -0.351432 -0.351641
vn -0.652766 -0.464914 -0.598123
vn 0.247336 0.237012 -0.939495
vn 0.158311 0.160516 -0.974255
vn 0.451221 -0.029329 -0.891930
vn 0.250188 -0.030689 -0.967711
vn 0.493835 -0.148114 -0.856849
vn 0.186564 -0.189613 -0.963971
vn 0.168371 -0.201264 -0.964958
vn -0.032941 -0.176631 -0.983726
vn 0.432813 -0.245658 -0.867367
vn -0.117764 -0.377575 -0.918460
vn 0.623723 -0.420548 -0.658870
vn 0.441599 -0.402606 -0.801809
vn 0.167003 -0.477603 -0.862557
vn 0.490380 0.350852 0.797766
vn 0.513925 0.342963 0.786294
vn 0.601572 0.123860 0.789158
vn 0.625966 0.419994 0.657093
vn 0.749694 0.324238 0.576914
vn 0.752471 0.113086 0.648844
vn 0.767864 -0.101078 0.632588
vn 0.793888 0.030254 0.607311
vn 0.824648 0.362167 0.434501
vn 0.894992 0.302832 0.327539
vn 0.881939 0.429530 0.194131
vn 0.919465 0.052780 0.389613
vn 0.931868 0.191565 0.308100
vn 0.817565 -0.308088 0.486487
vn -0.682032 0.215554 0.698834
vn -0.572503 0.027168 0.819453
vn -0.493097 0.387588 0.778865
vn -0.490430 0.400475 0.774014
vn -0.506090 0.026081 0.862086
vn -0.385042 0.240649 0.890972
vn -0.253556 0.245224 0.935721
vn -0.124144 0.402895 0.906788
vn -0.367805 -0.140010 0.919302
vn -0.379169 -0.224426 0.897699
vn -0.189743 -0.057585 0.980144
vn -0.136578 0.092091 0.986340
vn 0.022901 0.353962 0.934979
vn 0.164706 0.443872 0.880823
vn -0.285125 -0.356857 0.889582
vn 0.045951 0.135598 0.989698
vn 0.195610 0.434995 0.878929
vn -0.914917 0.241736 -0.323250
vn -0.869641 0.365925 -0.331397
vn -0.968233 0.193715 -0.158111
vn -0.903125 0.429113 0.015087
vn -0.984981 -0.082812 -0.151509
vn -0.983442 -0.057680 -0.171800
vn -0.969030 0.244979 -0.031082
vn -0.871570 0.458707 0.173072
vn -0.983949 0.122502 0.129759
vn -0.876142 0.383932 0.291498
vn -0.994398 -0.065786 0.082728
vn -0.830889 0.409089 0.377188
vn -0.941002 0.178449 0.287526
vn -0.973574 -0.165505 0.157362
vn -0.922494 0.122975 0.365899
vn -0.768867 0.352230 0.533645
vn 0.119447 0.164194 -0.979170
vn -0.072887 -0.124063 -0.989594
vn 0.251807 0.472014 -0.844864
vn -0.093397 0.444236 -0.891028
vn -0.171652 0.425450 -0.888554
vn -0.077893 0.047186 -0.995844
vn -0.233093 0.366940 -0.900568
vn -0.198408 0.113735 -0.973498
vn -0.379250 0.335357 -0.862383
vn -0.525680 0.408961 -0.745930
vn -0.367653 0.037255 -0.929216
vn -0.544321 0.446066 -0.710451
vn -0.338312 -0.124564 -0.932753
vn -0.463519 0.100713 -0.880345
vn -0.652712 0.454550 -0.606095
vn -0.581515 0.083276 -0.809262
vn -0.596886 0.101164 -0.795923
vn -0.713750 0.386393 -0.584176
vn 0.949660 0.142746 -0.278870
vn 0.841860 -0.260585 -0.472618
vn 0.808738 0.485002 -0.332740
vn 0.902140 0.161389 -0.400121
vn 0.878932 0.211936 -0.427272
vn 0.689898 0.507823 -0.515903
vn 0.887807 -0.152047 -0.434374
vn 0.875302 -0.000478 -0.483576
vn 0.740126 0.279812 -0.611488
vn 0.709841 0.334810 -0.619699
vn 0.721760 0.036896 -0.691159
vn 0.705180 0.085943 -0.703801
vn 0.504334 0.344566 -0.791784
vn 0.709885 -0.277620 -0.647294
vn 0.669230 -0.142891 -0.729187
vn 0.514876 0.154860 -0.843161
vn 0.482711 0.225666 -0.846206
vn 0.093605 0.958220 0.270283
vn 0.205871 0.878532 0.431045
vn 0.151113 0.987704 0.040073
vn 0.195266 0.912435 0.359629
vn 0.401487 0.897109 0.184402
vn 0.266239 0.841664 0.469807
vn 0.515228 0.833821 0.198196
vn 0.513999 0.743975 0.426972
vn 0.563104 0.788392 0.247694
vn 0.723249 0.690235 0.022067
vn 0.344700 0.654844 0.672578
vn 0.342210 0.652936 0.675697
vn 0.712068 0.671815 0.204018
vn 0.556786 0.629238 0.542262
vn 0.557774 0.630559 0.539706
vn 0.725366 0.582940 0.366094
vn 0.741553 0.624102 0.246162
vn 0.360770 0.478910 0.800306
vn 0.005070 0.964113 0.265445
vn -0.363627 0.856498 0.366314
vn -0.301490 0.843426 0.444675
vn -0.216737 0.854915 0.471323
vn -0.097879 0.802168 0.589021
vn 0.007762 0.801682 0.597700
vn 0.125412 0.662113 0.738836
vn -0.403001 0.655008 0.639182
vn -0.217498 0.627206 0.747868
vn -0.614727 0.572458 0.542589
vn -0.519993 0.573345 0.633153
vn 0.079527 0.594822 0.799914
vn -0.195409 0.584597 0.787440
vn -0.150232 0.555824 0.817613
vn -0.648699 0.621059 -0.439858
vn -0.071083 0.996028 -0.053616
vn -0.171020 0.982394 0.075193
vn -0.222766 0.971375 0.082495
vn -0.438564 0.896706 -0.059838
vn -0.464944 0.883592 -0.055603
vn -0.514505 0.806427 0.291477
vn -0.566708 0.816226 -0.112327
vn -0.630937 0.711223 0.309969
vn -0.714601 0.698058 -0.045393
vn -0.724851 0.666648 0.173699
vn -0.652876 0.623982 0.429418
vn -0.814625 0.526687 -0.242871
vn -0.818491 0.557136 -0.140258
vn 0.054264 0.996729 -0.059885
vn -0.176451 0.949117 -0.260849
vn 0.047748 0.927702 -0.370255
vn -0.242224 0.926674 -0.287407
vn 0.010785 0.835814 -0.548906
vn -0.274368 0.874912 -0.399064
vn 0.014740 0.829857 -0.557781
vn -0.401217 0.779213 -0.481510
vn -0.543759 0.732110 -0.410295
vn -0.100858 0.715164 -0.691642
vn -0.284491 0.666683 -0.688911
vn -0.324226 0.670484 -0.667330
vn 0.141859 0.553010 -0.821009
vn 0.015963 0.547109 -0.836909
vn 0.325908 0.945219 0.018563
vn 0.656234 0.750934 -0.073862
vn 0.157486 0.946574 -0.281419
vn 0.397391 0.910279 -0.116072
vn 0.336973 0.897202 -0.285445
vn 0.572908 0.818543 -0.042002
vn 0.366294 0.867647 -0.336179
vn 0.211524 0.770686 -0.601083
vn 0.484432 0.781739 -0.392695
vn 0.248139 0.731255 -0.635369
vn 0.677600 0.694247 -0.242651
vn 0.597617 0.719512 -0.353775
vn 0.410839 0.666394 -0.622198
vn 0.459489 0.602819 -0.652288
vn 0.874275 0.471057 -0.117257
vn 0.814909 0.517165 -0.261655
vn 0.673982 0.526395 -0.518321
vn 0.433775 0.461654 -0.773767
usemtl None.002
s off
f 3//1 4//1 102//1
f 8//2 9//2 5//2
f 8//3 10//3 9//3
f 10//4 11//4 9//4
f 10//5 12//5 11//5
f 11//6 14//6 9//6
f 12//7 15//7 11//7
f 15//8 16//8 11//8
f 11//9 16//9 14//9
f 16//10 17//10 14//10
f 13//11 1//11 12//11
f 15//12 18//12 16//12
f 12//13 18//13 15//13
f 1//14 20//14 12//14
f 20//15 18//15 12//15
f 18//16 21//16 16//16
f 16//17 21//17 17//17
f 21//18 19//18 17//18
f 22//19 23//19 24//19
f 24//20 26//20 7//20
f 24//21 23//21 26//21
f 23//22 27//22 26//22
f 27//23 28//23 26//23
f 22//24 25//24 23//24
f 25//25 29//25 23//25
f 23//26 29//26 27//26
f 19//27 21//27 25//27
f 25//28 21//28 29//28
f 29//29 20//29 27//29
f 27//30 20//30 1//30
f 21//31 18//31 29//31
f 18//32 20//32 29//32
f 30//33 31//33 32//33
f 33//34 31//34 30//34
f 31//35 35//35 34//35
f 36//36 33//36 30//36
f 33//37 35//37 31//37
f 2//38 37//38 36//38
f 36//39 37//39 33//39
f 33//40 8//40 35//40
f 2//41 13//41 37//41
f 35//42 8//42 6//42
f 37//43 10//43 33//43
f 33//44 10//44 8//44
f 13//45 12//45 37//45
f 1//46 13//46 2//46
f 12//47 10//47 37//47
f 8//48 5//48 6//48
f 38//49 4//49 3//49
f 1//50 2//50 39//50
f 38//51 41//51 4//51
f 40//52 41//52 38//52
f 42//53 43//53 41//53
f 40//54 42//54 41//54
f 40//55 44//55 42//55
f 39//56 44//56 40//56
f 44//57 45//57 42//57
f 45//58 46//58 42//58
f 42//59 46//59 43//59
f 36//60 45//60 44//60
f 39//61 2//61 44//61
f 44//62 2//62 36//62
f 36//63 30//63 45//63
f 45//64 30//64 46//64
f 30//65 32//65 46//65
f 1//66 47//66 27//66
f 26//67 48//67 7//67
f 26//68 49//68 48//68
f 28//69 49//69 26//69
f 49//70 50//70 48//70
f 50//71 51//71 48//71
f 27//72 47//72 28//72
f 47//73 49//73 28//73
f 47//74 52//74 49//74
f 49//75 52//75 50//75
f 50//76 3//76 101//76
f 52//77 38//77 50//77
f 38//78 3//78 50//78
f 1//79 39//79 47//79
f 47//80 39//80 52//80
f 39//81 40//81 52//81
f 40//82 38//82 52//82
f 55//83 56//83 53//83
f 54//84 57//84 108//84
f 54//85 58//85 57//85
f 53//86 58//86 54//86
f 53//87 60//87 58//87
f 56//88 60//88 53//88
f 60//89 61//89 58//89
f 58//90 61//90 59//90
f 55//91 19//91 56//91
f 56//92 22//92 60//92
f 60//93 22//93 61//93
f 61//94 24//94 7//94
f 22//95 24//95 61//95
f 19//96 25//96 56//96
f 25//97 22//97 56//97
f 62//98 66//98 63//98
f 65//99 67//99 62//99
f 62//100 67//100 66//100
f 67//101 68//101 66//101
f 68//102 69//102 66//102
f 67//103 70//103 68//103
f 64//104 71//104 65//104
f 65//105 71//105 67//105
f 67//106 71//106 70//106
f 68//107 72//107 69//107
f 70//108 14//108 68//108
f 68//109 14//109 72//109
f 71//110 14//110 70//110
f 5//111 9//111 64//111
f 64//112 9//112 71//112
f 14//113 17//113 72//113
f 71//114 9//114 14//114
f 17//115 19//115 72//115
f 32//116 76//116 75//116
f 73//117 78//117 77//117
f 73//118 74//118 78//118
f 79//119 81//119 74//119
f 79//120 76//120 81//120
f 74//121 81//121 78//121
f 82//122 80//122 78//122
f 81//123 82//123 78//123
f 76//124 34//124 81//124
f 34//125 82//125 81//125
f 82//126 6//126 80//126
f 32//127 31//127 76//127
f 31//128 34//128 76//128
f 34//129 35//129 82//129
f 82//130 35//130 6//130
f 102//131 4//131 83//131
f 88//132 89//132 87//132
f 89//133 90//133 87//133
f 88//134 84//134 89//134
f 89//135 91//135 90//135
f 84//136 92//136 89//136
f 92//137 91//137 89//137
f 85//138 92//138 84//138
f 83//139 85//139 84//139
f 83//140 4//140 85//140
f 85//141 43//141 92//141
f 92//142 46//142 91//142
f 91//143 46//143 75//143
f 46//144 32//144 75//144
f 4//145 41//145 85//145
f 92//146 43//146 46//146
f 85//147 41//147 43//147
f 96//148 97//148 93//148
f 96//149 98//149 97//149
f 95//150 99//150 96//150
f 96//151 99//151 98//151
f 95//152 100//152 99//152
f 99//153 51//153 98//153
f 51//154 101//154 98//154
f 101//155 102//155 98//155
f 100//156 51//156 99//156
f 101//157 3//157 102//157
f 7//158 48//158 100//158
f 100//159 48//159 51//159
f 51//160 50//160 101//160
f 66//161 103//161 63//161
f 66//162 104//162 103//162
f 69//163 104//163 66//163
f 104//164 105//164 103//164
f 106//165 105//165 104//165
f 69//166 106//166 104//166
f 72//167 55//167 69//167
f 55//168 106//168 69//168
f 105//169 106//169 107//169
f 106//170 54//170 107//170
f 107//171 54//171 108//171
f 55//172 53//172 106//172
f 53//173 54//173 106//173
f 19//174 55//174 72//174
f 78//175 109//175 77//175
f 80//176 109//176 78//176
f 109//177 112//177 77//177
f 77//178 112//178 111//178
f 80//179 113//179 109//179
f 109//180 113//180 112//180
f 113//181 114//181 112//181
f 114//182 115//182 112//182
f 80//183 64//183 113//183
f 6//184 64//184 80//184
f 64//185 65//185 113//185
f 65//186 114//186 113//186
f 114//187 62//187 115//187
f 62//188 116//188 115//188
f 6//189 5//189 64//189
f 65//190 62//190 114//190
f 62//191 63//191 116//191
f 90//192 117//192 87//192
f 87//193 117//193 86//193
f 90//194 120//194 117//194
f 118//195 119//195 117//195
f 75//196 120//196 91//196
f 91//197 120//197 90//197
f 120//198 118//198 117//198
f 118//199 121//199 119//199
f 79//200 118//200 120//200
f 118//201 73//201 121//201
f 75//202 79//202 120//202
f 73//203 110//203 121//203
f 79//204 73//204 118//204
f 75//205 76//205 79//205
f 79//206 74//206 73//206
f 73//207 77//207 110//207
f 98//208 122//208 97//208
f 102//209 123//209 98//209
f 93//210 97//210 94//210
f 122//211 124//211 97//211
f 122//212 125//212 124//212
f 98//213 123//213 122//213
f 126//214 125//214 122//214
f 123//215 126//215 122//215
f 126//216 127//216 125//216
f 127//217 88//217 125//217
f 123//218 83//218 126//218
f 88//219 160//219 125//219
f 102//220 83//220 123//220
f 83//221 127//221 126//221
f 88//222 86//222 160//222
f 83//223 84//223 127//223
f 84//224 88//224 127//224
f 88//225 87//225 86//225
f 59//226 57//226 58//226
f 7//227 128//227 61//227
f 129//228 130//228 57//228
f 59//229 131//229 57//229
f 57//230 131//230 129//230
f 129//231 132//231 130//231
f 61//232 128//232 59//232
f 59//233 128//233 131//233
f 131//234 134//234 129//234
f 134//235 132//235 129//235
f 128//236 95//236 131//236
f 131//237 95//237 134//237
f 134//238 93//238 132//238
f 7//239 100//239 128//239
f 100//240 95//240 128//240
f 95//241 96//241 134//241
f 96//242 93//242 134//242
f 135//243 136//243 137//243
f 138//244 139//244 135//244
f 137//245 136//245 141//245
f 135//246 139//246 136//246
f 139//247 142//247 136//247
f 138//248 140//248 139//248
f 139//249 143//249 142//249
f 140//250 144//250 139//250
f 139//251 144//251 143//251
f 143//252 108//252 145//252
f 116//253 103//253 138//253
f 138//254 103//254 140//254
f 144//255 108//255 143//255
f 103//256 105//256 140//256
f 140//257 105//257 144//257
f 105//258 107//258 144//258
f 144//259 107//259 108//259
f 63//260 103//260 116//260
f 146//261 135//261 137//261
f 147//262 148//262 146//262
f 148//263 149//263 146//263
f 146//264 149//264 135//264
f 149//265 150//265 135//265
f 135//266 150//266 138//266
f 150//267 116//267 138//267
f 148//268 111//268 149//268
f 111//269 150//269 149//269
f 110//270 77//270 148//270
f 77//271 111//271 148//271
f 150//272 115//272 116//272
f 111//273 112//273 150//273
f 150//274 112//274 115//274
f 160//275 86//275 152//275
f 154//276 151//276 137//276
f 137//277 151//277 146//277
f 151//278 147//278 146//278
f 153//279 147//279 151//279
f 153//280 155//280 147//280
f 155//281 148//281 147//281
f 153//282 152//282 155//282
f 155//283 121//283 148//283
f 152//284 119//284 155//284
f 119//285 121//285 155//285
f 121//286 110//286 148//286
f 86//287 117//287 152//287
f 152//288 117//288 119//288
f 141//289 154//289 137//289
f 158//290 151//290 154//290
f 157//291 158//291 154//291
f 158//292 153//292 151//292
f 157//293 159//293 158//293
f 158//294 159//294 153//294
f 156//295 159//295 157//295
f 159//296 160//296 153//296
f 160//297 152//297 153//297
f 156//298 124//298 159//298
f 124//299 125//299 159//299
f 159//300 125//300 160//300
f 94//301 97//301 156//301
f 97//302 124//302 156//302
f 142//303 141//303 136//303
f 145//304 161//304 143//304
f 141//305 157//305 154//305
f 142//306 161//306 141//306
f 161//307 157//307 141//307
f 143//308 161//308 142//308
f 161//309 162//309 157//309
f 162//310 156//310 157//310
f 161//311 133//311 162//311
f 162//312 94//312 156//312
f 145//313 130//313 161//313
f 161//314 130//314 133//314
f 133//315 94//315 162//315
f 133//316 132//316 94//316
f 108//317 57//317 145//317
f 145//318 57//318 130//318
f 130//319 132//319 133//319
f 132//320 93//320 94//320