From 009894ca3bb817776782e8aad72d1fb9ecb7f4f5 Mon Sep 17 00:00:00 2001 From: Anselme Date: Sun, 5 Jul 2015 23:13:17 +0200 Subject: [PATCH] changed structure of the renderer to modules --- basicmodule.cpp | 19 + basicmodule.h | 27 + data/sword.mtl | 15 + data/sword.obj | 2226 ++++++++++++++++++++++++++++++++ entity.cpp | 12 + entity.h | 10 +- material.h | 1 - module.h | 13 + myglwidget.cpp | 46 +- myglwidget.h | 3 +- phongmodule.cpp | 17 + phongmodule.h | 24 + scene.cpp | 74 -- scene.h | 41 - scenecontroller.cpp | 6 +- scenecontroller.h | 6 +- shader.cpp | 2 - skybox.h | 22 - skyboxmaterial.cpp | 17 - skyboxmaterial.h | 19 - skybox.cpp => skyboxmodule.cpp | 39 +- skyboxmodule.h | 28 + sparrowRenderer.pro | 17 +- sparrowrenderer.cpp | 19 +- sparrowrenderer.h | 12 +- 25 files changed, 2470 insertions(+), 245 deletions(-) create mode 100644 basicmodule.cpp create mode 100644 basicmodule.h create mode 100644 data/sword.mtl create mode 100644 data/sword.obj create mode 100644 module.h create mode 100644 phongmodule.cpp create mode 100644 phongmodule.h delete mode 100644 scene.cpp delete mode 100644 scene.h delete mode 100644 skybox.h delete mode 100644 skyboxmaterial.cpp delete mode 100644 skyboxmaterial.h rename skybox.cpp => skyboxmodule.cpp (75%) create mode 100644 skyboxmodule.h diff --git a/basicmodule.cpp b/basicmodule.cpp new file mode 100644 index 0000000..098efbc --- /dev/null +++ b/basicmodule.cpp @@ -0,0 +1,19 @@ +#include "basicmodule.h" +#include "shader.h" +#include "entity.h" +#include "camera.h" + +void BasicModule::addEntity(Entity* myEntity) +{ + entities.push_back(myEntity); +} + +void BasicModule::render(Camera* myCamera) +{ + shader->bind(); + bindModule(); + for(Entity* e : entities) + e->draw(myCamera->getViewMatrix(), myCamera->getProjectionMatrix()); +} + + diff --git a/basicmodule.h b/basicmodule.h new file mode 100644 index 0000000..c4254a3 --- /dev/null +++ b/basicmodule.h @@ -0,0 +1,27 @@ +#ifndef BASICMODULE_H +#define BASICMODULE_H + +#include "module.h" +#include +#include + +class Shader; +class Entity; +class Camera; + +class BasicModule : public Module +{ +protected: + Shader* shader; + std::vector entities; + + BasicModule(Shader* myShader = NULL) : shader(myShader) {} + + virtual void bindModule() = 0; + +public: + void addEntity(Entity* myEntity); + void virtual render(Camera* myCamera); +}; + +#endif // BASICMODULE_H diff --git a/data/sword.mtl b/data/sword.mtl new file mode 100644 index 0000000..06b1e64 --- /dev/null +++ b/data/sword.mtl @@ -0,0 +1,15 @@ +# +# generated by kHED +# +newmtl steel +d 1.0 +Ka 1.0 1.0 1.0 +Ks 0.9 0.9 0.9 +Kd 0.3 0.3 0.3 +map_Kd res/textures/steel.jpg +newmtl leather +d 1.0 +Ka 1.0 1.0 1.0 +Ks 0.4 0.4 0.4 +Kd 0.9 0.9 0.9 +map_Kd res/textures/leather.jpg diff --git a/data/sword.obj b/data/sword.obj new file mode 100644 index 0000000..070247c --- /dev/null +++ b/data/sword.obj @@ -0,0 +1,2226 @@ +# +# generated by kHED +# +mtllib sword.mtl +# vertices: +v 0.000000 200.000000 0.000000 +v 0.000000 195.000000 4.000000 +v 0.452149 195.000000 0.003186 +v 0.000000 184.000000 6.000000 +v 1.000000 184.000000 0.000000 +v 0.000000 0.000000 9.000000 +v 1.996811 0.000000 2.003184 +v 1.998404 100.000000 1.003185 +v 1.999997 130.000000 0.003186 +v 0.999998 100.000000 0.001593 +v 0.999998 0.000000 0.001593 +v 0.000000 195.000000 -4.000000 +v 0.000000 184.000000 -6.000000 +v 0.000000 0.000000 -9.000000 +v 2.003184 0.000000 -1.996811 +v 2.001590 100.000000 -0.996813 +v -0.452149 195.000000 0.003186 +v -1.000000 184.000000 0.000000 +v -2.025484 0.000000 2.003184 +v -2.027078 100.000000 1.003185 +v -2.028670 130.000000 0.003186 +v -1.000000 100.000000 0.000000 +v -1.000000 0.000000 0.000000 +v 0.000000 184.000000 -6.000000 +v -2.031857 0.000000 -1.996811 +v -2.030263 100.000000 -0.996813 +v 0.000000 1.000000 24.000000 +v 0.000000 3.674373 40.238308 +v -1.011322 3.200371 40.089920 +v -1.327465 0.703242 24.000000 +v -3.607423 -0.431996 2.000000 +v -0.823135 -3.451393 39.199997 +v 0.000000 -3.868052 39.736107 +v -0.823135 -4.229471 23.973125 +v -3.607423 -5.022791 2.163683 +v -3.585412 -0.432441 0.000000 +v -3.585412 -5.023889 0.000000 +v 0.000000 -3.884836 36.800003 +v 0.000000 -5.203842 0.000000 +v 2.025484 0.000000 2.003184 +v 1.000000 0.000000 0.000000 +v 1.011322 3.200371 40.089920 +v 1.290984 0.703242 24.000000 +v 3.607423 -0.431996 2.000000 +v 0.823135 -3.451393 39.199997 +v 0.823135 -4.229471 23.973125 +v 3.607423 -5.022791 2.163683 +v 3.587413 -0.432441 -0.000000 +v 3.587413 -5.023889 -0.000000 +v -2.025484 0.000000 -2.068383 +v 0.000000 1.000000 -24.052162 +v 0.000000 3.674373 -40.290470 +v -1.011322 3.200371 -40.142075 +v -1.327465 0.703242 -24.052162 +v -3.607423 -0.431996 -2.065200 +v -0.823135 -3.451393 -39.252167 +v 0.000000 -3.868052 -39.788261 +v -0.823135 -4.229471 -24.025284 +v -3.607423 -5.022791 -2.228883 +v 0.000000 -3.884836 -36.852158 +v 2.025484 0.000000 -2.068383 +v 1.011322 3.200371 -40.142075 +v 1.290984 0.703242 -24.052162 +v 3.607423 -0.431996 -2.065200 +v 0.823135 -3.451393 -39.252167 +v 0.823135 -4.229471 -24.025284 +v 3.607423 -5.022791 -2.228883 +v 2.419200 -62.000000 0.201600 +v 2.095088 -62.000000 -2.217600 +v 1.209600 -62.000000 -3.988577 +v -0.000000 -62.000000 -4.636801 +v -1.209600 -62.000000 -3.988577 +v -2.095088 -62.000000 -2.217601 +v -2.419200 -62.000000 0.201600 +v -2.095088 -62.000000 2.620800 +v -1.209600 -62.000000 4.391778 +v 0.000000 -62.000000 5.040000 +v 1.209600 -62.000000 4.391778 +v 2.095089 -62.000000 2.620798 +v 3.300000 -4.000000 0.400000 +v 2.857884 -4.000000 -2.900001 +v 1.650000 -4.000000 -5.315768 +v -0.000000 -4.000000 -6.200001 +v -1.650000 -4.000000 -5.315768 +v -2.857884 -4.000000 -2.900001 +v -3.300000 -4.000000 0.400000 +v -2.857883 -4.000000 3.700001 +v -1.650000 -4.000000 6.115767 +v 0.000000 -4.000000 7.000000 +v 1.650000 -4.000000 6.115767 +v 2.857884 -4.000000 3.699998 +v -1.566040 -64.023354 -4.335069 +v -0.000000 -64.023354 -5.174305 +v 1.566039 -64.023354 -4.335069 +v 2.554166 -64.023354 -2.358812 +v -2.554166 -64.023354 -2.358813 +v -2.897196 -64.023354 0.201600 +v 2.897196 -64.023354 0.201600 +v -2.554166 -64.023354 2.762012 +v 2.554167 -64.023354 2.762011 +v 1.566039 -64.023354 4.738268 +v -1.566039 -64.023354 4.738268 +v 0.000000 -64.023354 5.577504 +v -3.392789 -65.799980 -6.110832 +v -0.000000 -65.799980 -7.929015 +v 3.392789 -65.799980 -6.110831 +v 4.906939 -65.799980 -3.082523 +v -4.906939 -65.799980 -3.082525 +v -5.346927 -65.799980 0.201601 +v 5.346927 -65.799980 0.201600 +v -4.906939 -65.799980 3.485723 +v 4.906940 -65.799980 3.485723 +v 3.392789 -65.799980 6.514031 +v -3.392789 -65.799980 6.514030 +v 0.000000 -65.799980 8.332213 +v -5.486864 -66.885681 -8.146461 +v 0.000000 -66.885681 -11.086857 +v 5.486865 -66.885681 -8.146460 +v 7.604021 -66.885681 -3.912142 +v -7.604022 -66.885681 -3.912145 +v -8.155157 -66.885681 0.201601 +v 8.155157 -66.885681 0.201600 +v -7.604022 -66.885681 4.315342 +v 7.604023 -66.885681 4.315342 +v 5.486864 -66.885681 8.549661 +v -5.486864 -66.885681 8.549661 +v -0.000000 -66.885681 11.490061 +v -4.194775 -70.676521 -6.881844 +v 0.000000 -70.676521 -9.129814 +v 4.194775 -70.676521 -6.881843 +v 5.939865 -70.676521 -3.391659 +v -5.939866 -70.676521 -3.391662 +v -6.422420 -70.676521 0.210191 +v 6.422420 -70.676521 0.210189 +v -5.939866 -70.676521 3.812037 +v 5.939867 -70.676521 3.812037 +v 4.194773 -70.676521 7.302221 +v -4.194773 -70.676521 7.302221 +v -0.000000 -70.676521 9.550196 +v -1.165045 -74.325150 -3.756008 +v -0.000001 -74.325150 -4.380357 +v 1.165045 -74.325150 -3.756007 +v 2.037706 -74.325150 -2.010691 +v -2.037707 -74.325150 -2.010689 +v -2.359448 -74.325150 0.390857 +v 2.359448 -74.325150 0.390859 +v -2.037708 -74.325150 2.792406 +v 2.037709 -74.325150 2.792405 +v 1.165044 -74.325150 4.537721 +v -1.165044 -74.325150 4.537721 +v -0.000000 -74.325150 5.162070 +v 0.001156 -75.403580 0.169213 + +# texture coords: +vt 0.499644 0.975613 0.0 +vt 0.499676 1.000000 0.0 +vt 0.459939 0.975613 0.0 +vt 0.459939 0.975613 0.0 +vt 0.440070 0.921960 0.0 +vt 0.499676 0.921960 0.0 +vt 0.459939 0.975613 0.0 +vt 0.499676 0.921960 0.0 +vt 0.499644 0.975613 0.0 +vt 0.489710 0.512252 0.0 +vt 0.410267 0.024504 0.0 +vt 0.479776 0.024504 0.0 +vt 0.440070 0.921960 0.0 +vt 0.410267 0.024504 0.0 +vt 0.489710 0.512252 0.0 +vt 0.440070 0.921960 0.0 +vt 0.489710 0.512252 0.0 +vt 0.499644 0.658576 0.0 +vt 0.440070 0.921960 0.0 +vt 0.499644 0.658576 0.0 +vt 0.499676 0.921960 0.0 +vt 0.499660 0.512252 0.0 +vt 0.499644 0.658576 0.0 +vt 0.489710 0.512252 0.0 +vt 0.489710 0.512252 0.0 +vt 0.479776 0.024504 0.0 +vt 0.499660 0.024504 0.0 +vt 0.489710 0.512252 0.0 +vt 0.499660 0.024504 0.0 +vt 0.499660 0.512252 0.0 +vt 0.499644 0.975613 0.0 +vt 0.539414 0.975613 0.0 +vt 0.499676 1.000000 0.0 +vt 0.539414 0.975613 0.0 +vt 0.499676 0.921960 0.0 +vt 0.559282 0.921960 0.0 +vt 0.539414 0.975613 0.0 +vt 0.499644 0.975613 0.0 +vt 0.499676 0.921960 0.0 +vt 0.509579 0.512252 0.0 +vt 0.519513 0.024504 0.0 +vt 0.589085 0.024504 0.0 +vt 0.559282 0.921960 0.0 +vt 0.509579 0.512252 0.0 +vt 0.589085 0.024504 0.0 +vt 0.559282 0.921960 0.0 +vt 0.499644 0.658576 0.0 +vt 0.509579 0.512252 0.0 +vt 0.559282 0.921960 0.0 +vt 0.499676 0.921960 0.0 +vt 0.499644 0.658576 0.0 +vt 0.499660 0.512252 0.0 +vt 0.509579 0.512252 0.0 +vt 0.499644 0.658576 0.0 +vt 0.509579 0.512252 0.0 +vt 0.499660 0.024504 0.0 +vt 0.519513 0.024504 0.0 +vt 0.509579 0.512252 0.0 +vt 0.499660 0.512252 0.0 +vt 0.499660 0.024504 0.0 +vt 0.499644 0.975613 0.0 +vt 0.459939 0.975613 0.0 +vt 0.499676 1.000000 0.0 +vt 0.459939 0.975613 0.0 +vt 0.499676 0.921960 0.0 +vt 0.440070 0.921960 0.0 +vt 0.459939 0.975613 0.0 +vt 0.499644 0.975613 0.0 +vt 0.499676 0.921960 0.0 +vt 0.489710 0.512252 0.0 +vt 0.479776 0.024504 0.0 +vt 0.410267 0.024504 0.0 +vt 0.440070 0.921960 0.0 +vt 0.489710 0.512252 0.0 +vt 0.410267 0.024504 0.0 +vt 0.440070 0.921960 0.0 +vt 0.499644 0.658576 0.0 +vt 0.489710 0.512252 0.0 +vt 0.440070 0.921960 0.0 +vt 0.499676 0.921960 0.0 +vt 0.499644 0.658576 0.0 +vt 0.499676 0.512252 0.0 +vt 0.489710 0.512252 0.0 +vt 0.499644 0.658576 0.0 +vt 0.489710 0.512252 0.0 +vt 0.499676 0.024504 0.0 +vt 0.479776 0.024504 0.0 +vt 0.489710 0.512252 0.0 +vt 0.499676 0.512252 0.0 +vt 0.499676 0.024504 0.0 +vt 0.499644 0.975613 0.0 +vt 0.499676 1.000000 0.0 +vt 0.539414 0.975613 0.0 +vt 0.539414 0.975613 0.0 +vt 0.559282 0.921960 0.0 +vt 0.499676 0.921960 0.0 +vt 0.539414 0.975613 0.0 +vt 0.499676 0.921960 0.0 +vt 0.499644 0.975613 0.0 +vt 0.509579 0.512252 0.0 +vt 0.589085 0.024504 0.0 +vt 0.519513 0.024504 0.0 +vt 0.559282 0.921960 0.0 +vt 0.589085 0.024504 0.0 +vt 0.509579 0.512252 0.0 +vt 0.559282 0.921960 0.0 +vt 0.509579 0.512252 0.0 +vt 0.499644 0.658576 0.0 +vt 0.559282 0.921960 0.0 +vt 0.499644 0.658576 0.0 +vt 0.499676 0.921960 0.0 +vt 0.499676 0.512252 0.0 +vt 0.499644 0.658576 0.0 +vt 0.509579 0.512252 0.0 +vt 0.509579 0.512252 0.0 +vt 0.519513 0.024504 0.0 +vt 0.499676 0.024504 0.0 +vt 0.509579 0.512252 0.0 +vt 0.499676 0.024504 0.0 +vt 0.499676 0.512252 0.0 +vt 0.359828 0.998157 0.0 +vt 0.500000 1.000000 0.0 +vt 0.500000 0.798354 0.0 +vt 0.316009 0.798354 0.0 +vt 0.359828 0.998157 0.0 +vt 0.500000 0.798354 0.0 +vt 0.316009 0.798354 0.0 +vt 0.500000 0.798354 0.0 +vt 0.500000 0.589733 0.0 +vt 0.500000 0.589733 0.0 +vt 0.219262 0.520224 0.0 +vt 0.000000 0.520193 0.0 +vt 0.000000 0.520193 0.0 +vt 0.316009 0.798354 0.0 +vt 0.500000 0.589733 0.0 +vt 0.099218 0.990332 0.0 +vt 0.022002 0.979112 0.0 +vt 0.017074 0.985759 0.0 +vt 0.099218 0.990332 0.0 +vt 0.017074 0.985759 0.0 +vt 0.104706 0.992188 0.0 +vt 0.022002 0.979112 0.0 +vt 0.099218 0.990332 0.0 +vt 0.072672 0.790468 0.0 +vt 0.015314 0.790008 0.0 +vt 0.022002 0.979112 0.0 +vt 0.072672 0.790468 0.0 +vt 0.015314 0.790008 0.0 +vt 0.072672 0.790468 0.0 +vt 0.062942 0.512281 0.0 +vt 0.009537 0.513790 0.0 +vt 0.015314 0.790008 0.0 +vt 0.062942 0.512281 0.0 +vt 0.000000 0.520193 0.0 +vt 0.219262 0.520224 0.0 +vt 0.361397 0.500324 0.0 +vt 0.003051 0.500324 0.0 +vt 0.000000 0.520193 0.0 +vt 0.361397 0.500324 0.0 +vt 0.009792 0.492296 0.0 +vt 0.009537 0.513790 0.0 +vt 0.062942 0.512281 0.0 +vt 0.063185 0.492413 0.0 +vt 0.009792 0.492296 0.0 +vt 0.062942 0.512281 0.0 +vt 0.500000 0.000000 0.0 +vt 0.385911 0.006741 0.0 +vt 0.500000 0.036921 0.0 +vt 0.500000 0.036921 0.0 +vt 0.385911 0.006741 0.0 +vt 0.385911 0.198216 0.0 +vt 0.500000 0.499672 0.0 +vt 0.500000 0.036921 0.0 +vt 0.385911 0.198216 0.0 +vt 0.500000 0.499672 0.0 +vt 0.385911 0.198216 0.0 +vt 0.000000 0.477906 0.0 +vt 0.500000 0.499672 0.0 +vt 0.000000 0.477906 0.0 +vt 0.003051 0.499672 0.0 +vt 0.640172 0.998157 0.0 +vt 0.500000 0.798354 0.0 +vt 0.500000 1.000000 0.0 +vt 0.678934 0.798354 0.0 +vt 0.500000 0.798354 0.0 +vt 0.640172 0.998157 0.0 +vt 0.678934 0.798354 0.0 +vt 0.500000 0.589733 0.0 +vt 0.500000 0.798354 0.0 +vt 0.500000 0.589733 0.0 +vt 1.000000 0.520193 0.0 +vt 0.780738 0.520224 0.0 +vt 1.000000 0.520193 0.0 +vt 0.500000 0.589733 0.0 +vt 0.678934 0.798354 0.0 +vt 0.099218 0.990332 0.0 +vt 0.017074 0.985759 0.0 +vt 0.022002 0.979112 0.0 +vt 0.099218 0.990332 0.0 +vt 0.104706 0.992188 0.0 +vt 0.017074 0.985759 0.0 +vt 0.022002 0.979112 0.0 +vt 0.072672 0.790468 0.0 +vt 0.099218 0.990332 0.0 +vt 0.015314 0.790008 0.0 +vt 0.072672 0.790468 0.0 +vt 0.022002 0.979112 0.0 +vt 0.015314 0.790008 0.0 +vt 0.062942 0.512281 0.0 +vt 0.072672 0.790468 0.0 +vt 0.009537 0.513790 0.0 +vt 0.062942 0.512281 0.0 +vt 0.015314 0.790008 0.0 +vt 1.000000 0.520193 0.0 +vt 0.638603 0.500324 0.0 +vt 0.780738 0.520224 0.0 +vt 0.997226 0.500324 0.0 +vt 0.638603 0.500324 0.0 +vt 1.000000 0.520193 0.0 +vt 0.009792 0.492296 0.0 +vt 0.062942 0.512281 0.0 +vt 0.009537 0.513790 0.0 +vt 0.063185 0.492413 0.0 +vt 0.062942 0.512281 0.0 +vt 0.009792 0.492296 0.0 +vt 0.500000 0.000000 0.0 +vt 0.500000 0.036921 0.0 +vt 0.614089 0.006741 0.0 +vt 0.500000 0.036921 0.0 +vt 0.614089 0.198216 0.0 +vt 0.614089 0.006741 0.0 +vt 0.500000 0.499672 0.0 +vt 0.614089 0.198216 0.0 +vt 0.500000 0.036921 0.0 +vt 0.500000 0.499672 0.0 +vt 1.000000 0.477906 0.0 +vt 0.614089 0.198216 0.0 +vt 0.500000 0.499672 0.0 +vt 0.997226 0.499672 0.0 +vt 1.000000 0.477906 0.0 +vt 0.359828 0.001843 0.0 +vt 0.500000 0.201646 0.0 +vt 0.500000 0.000000 0.0 +vt 0.316009 0.201646 0.0 +vt 0.500000 0.201646 0.0 +vt 0.359828 0.001843 0.0 +vt 0.316009 0.201646 0.0 +vt 0.500000 0.410915 0.0 +vt 0.500000 0.201646 0.0 +vt 0.500000 0.410915 0.0 +vt 0.000000 0.479807 0.0 +vt 0.219262 0.479776 0.0 +vt 0.000000 0.479807 0.0 +vt 0.500000 0.410915 0.0 +vt 0.316009 0.201646 0.0 +vt 0.111654 -0.005968 0.0 +vt 0.029400 -0.001755 0.0 +vt 0.034162 0.004912 0.0 +vt 0.111654 -0.005968 0.0 +vt 0.117188 -0.007800 0.0 +vt 0.029400 -0.001755 0.0 +vt 0.034162 0.004912 0.0 +vt 0.080120 0.193769 0.0 +vt 0.111654 -0.005968 0.0 +vt 0.022754 0.193977 0.0 +vt 0.080120 0.193769 0.0 +vt 0.034162 0.004912 0.0 +vt 0.022754 0.193977 0.0 +vt 0.063446 0.471897 0.0 +vt 0.080120 0.193769 0.0 +vt 0.010081 0.470154 0.0 +vt 0.063446 0.471897 0.0 +vt 0.022754 0.193977 0.0 +vt 0.000000 0.479807 0.0 +vt 0.361397 0.500324 0.0 +vt 0.219262 0.479776 0.0 +vt 0.003051 0.500324 0.0 +vt 0.361397 0.500324 0.0 +vt 0.000000 0.479807 0.0 +vt 0.009792 0.492296 0.0 +vt 0.063446 0.471897 0.0 +vt 0.010081 0.470154 0.0 +vt 0.063185 0.492413 0.0 +vt 0.063446 0.471897 0.0 +vt 0.009792 0.492296 0.0 +vt 0.500000 1.000000 0.0 +vt 0.500000 0.963079 0.0 +vt 0.385911 0.993259 0.0 +vt 0.500000 0.963079 0.0 +vt 0.385911 0.801784 0.0 +vt 0.385911 0.993259 0.0 +vt 0.500000 0.499672 0.0 +vt 0.385911 0.801784 0.0 +vt 0.500000 0.963079 0.0 +vt 0.500000 0.499672 0.0 +vt 0.000000 0.522094 0.0 +vt 0.385911 0.801784 0.0 +vt 0.500000 0.499672 0.0 +vt 0.003051 0.499672 0.0 +vt 0.000000 0.522094 0.0 +vt 0.640172 0.001843 0.0 +vt 0.500000 0.000000 0.0 +vt 0.500000 0.201646 0.0 +vt 0.678934 0.201646 0.0 +vt 0.640172 0.001843 0.0 +vt 0.500000 0.201646 0.0 +vt 0.678934 0.201646 0.0 +vt 0.500000 0.201646 0.0 +vt 0.500000 0.410915 0.0 +vt 0.500000 0.410915 0.0 +vt 0.780738 0.479776 0.0 +vt 1.000000 0.479807 0.0 +vt 1.000000 0.479807 0.0 +vt 0.678934 0.201646 0.0 +vt 0.500000 0.410915 0.0 +vt 0.111654 -0.005968 0.0 +vt 0.034162 0.004912 0.0 +vt 0.029400 -0.001755 0.0 +vt 0.111654 -0.005968 0.0 +vt 0.029400 -0.001755 0.0 +vt 0.117188 -0.007800 0.0 +vt 0.034162 0.004912 0.0 +vt 0.111654 -0.005968 0.0 +vt 0.080120 0.193769 0.0 +vt 0.022754 0.193977 0.0 +vt 0.034162 0.004912 0.0 +vt 0.080120 0.193769 0.0 +vt 0.022754 0.193977 0.0 +vt 0.080120 0.193769 0.0 +vt 0.063446 0.471897 0.0 +vt 0.010081 0.470154 0.0 +vt 0.022754 0.193977 0.0 +vt 0.063446 0.471897 0.0 +vt 1.000000 0.479807 0.0 +vt 0.780738 0.479776 0.0 +vt 0.638603 0.500324 0.0 +vt 0.997226 0.500324 0.0 +vt 1.000000 0.479807 0.0 +vt 0.638603 0.500324 0.0 +vt 0.009792 0.492296 0.0 +vt 0.010081 0.470154 0.0 +vt 0.063446 0.471897 0.0 +vt 0.063185 0.492413 0.0 +vt 0.009792 0.492296 0.0 +vt 0.063446 0.471897 0.0 +vt 0.500000 1.000000 0.0 +vt 0.614089 0.993259 0.0 +vt 0.500000 0.963079 0.0 +vt 0.500000 0.963079 0.0 +vt 0.614089 0.993259 0.0 +vt 0.614089 0.801784 0.0 +vt 0.500000 0.499672 0.0 +vt 0.500000 0.963079 0.0 +vt 0.614089 0.801784 0.0 +vt 0.500000 0.499672 0.0 +vt 0.614089 0.801784 0.0 +vt 1.000000 0.522094 0.0 +vt 0.500000 0.499672 0.0 +vt 1.000000 0.522094 0.0 +vt 0.997226 0.499672 0.0 +vt 0.750000 0.922309 0.0 +vt 0.886407 0.922309 0.0 +vt 0.881505 0.000000 0.0 +vt 0.750000 0.922309 0.0 +vt 0.881505 0.000000 0.0 +vt 0.740443 0.000000 0.0 +vt 0.886407 0.922309 0.0 +vt 0.955272 0.922309 0.0 +vt 0.881505 0.000000 0.0 +vt 0.881505 0.000000 0.0 +vt 0.955272 0.922309 0.0 +vt 0.953751 0.000000 0.0 +vt 0.955272 0.922309 0.0 +vt 1.000000 0.922309 0.0 +vt 1.000000 0.000000 0.0 +vt 0.955272 0.922309 0.0 +vt 1.000000 0.000000 0.0 +vt 0.953751 0.000000 0.0 +vt 1.000000 0.922309 0.0 +vt 1.044728 0.922309 0.0 +vt 1.000000 0.000000 0.0 +vt 1.000000 0.000000 0.0 +vt 1.044728 0.922309 0.0 +vt 1.046249 0.000000 0.0 +vt 0.044728 0.922309 0.0 +vt 0.113593 0.922309 0.0 +vt 0.118495 0.000000 0.0 +vt 0.044728 0.922309 0.0 +vt 0.118495 0.000000 0.0 +vt 0.046249 0.000000 0.0 +vt 0.113593 0.922309 0.0 +vt 0.250000 0.922309 0.0 +vt 0.118495 0.000000 0.0 +vt 0.118495 0.000000 0.0 +vt 0.250000 0.922309 0.0 +vt 0.259557 0.000000 0.0 +vt 0.250000 0.922309 0.0 +vt 0.386407 0.922309 0.0 +vt 0.390984 0.000000 0.0 +vt 0.250000 0.922309 0.0 +vt 0.390984 0.000000 0.0 +vt 0.259557 0.000000 0.0 +vt 0.386407 0.922309 0.0 +vt 0.455272 0.922309 0.0 +vt 0.390984 0.000000 0.0 +vt 0.390984 0.000000 0.0 +vt 0.455272 0.922309 0.0 +vt 0.456698 0.000000 0.0 +vt 0.455272 0.922309 0.0 +vt 0.500000 0.922309 0.0 +vt 0.500000 0.000000 0.0 +vt 0.455272 0.922309 0.0 +vt 0.500000 0.000000 0.0 +vt 0.456698 0.000000 0.0 +vt 0.500000 0.922309 0.0 +vt 0.544728 0.922309 0.0 +vt 0.500000 0.000000 0.0 +vt 0.500000 0.000000 0.0 +vt 0.544728 0.922309 0.0 +vt 0.543302 0.000000 0.0 +vt 0.544728 0.922309 0.0 +vt 0.613593 0.922309 0.0 +vt 0.609016 0.000000 0.0 +vt 0.544728 0.922309 0.0 +vt 0.609016 0.000000 0.0 +vt 0.543302 0.000000 0.0 +vt 0.613593 0.922309 0.0 +vt 0.750000 0.922309 0.0 +vt 0.609016 0.000000 0.0 +vt 0.609016 0.000000 0.0 +vt 0.750000 0.922309 0.0 +vt 0.740443 0.000000 0.0 +vt 1.044728 0.922309 0.0 +vt 1.000000 0.954484 0.0 +vt 1.052901 0.954484 0.0 +vt 1.044728 0.922309 0.0 +vt 1.000000 0.922309 0.0 +vt 1.000000 0.954484 0.0 +vt 1.000000 0.922309 0.0 +vt 0.947099 0.954484 0.0 +vt 1.000000 0.954484 0.0 +vt 1.000000 0.922309 0.0 +vt 0.955272 0.922309 0.0 +vt 0.947099 0.954484 0.0 +vt 0.955272 0.922309 0.0 +vt 0.875194 0.954484 0.0 +vt 0.947099 0.954484 0.0 +vt 0.955272 0.922309 0.0 +vt 0.886407 0.922309 0.0 +vt 0.875194 0.954484 0.0 +vt 0.113593 0.922309 0.0 +vt 0.052901 0.954484 0.0 +vt 0.124806 0.954484 0.0 +vt 0.113593 0.922309 0.0 +vt 0.044728 0.922309 0.0 +vt 0.052901 0.954484 0.0 +vt 0.250000 0.922309 0.0 +vt 0.124806 0.954484 0.0 +vt 0.250000 0.954484 0.0 +vt 0.250000 0.922309 0.0 +vt 0.113593 0.922309 0.0 +vt 0.124806 0.954484 0.0 +vt 0.886407 0.922309 0.0 +vt 0.750000 0.954484 0.0 +vt 0.875194 0.954484 0.0 +vt 0.886407 0.922309 0.0 +vt 0.750000 0.922309 0.0 +vt 0.750000 0.954484 0.0 +vt 0.386407 0.922309 0.0 +vt 0.250000 0.954484 0.0 +vt 0.375194 0.954484 0.0 +vt 0.386407 0.922309 0.0 +vt 0.250000 0.922309 0.0 +vt 0.250000 0.954484 0.0 +vt 0.750000 0.922309 0.0 +vt 0.624806 0.954484 0.0 +vt 0.750000 0.954484 0.0 +vt 0.750000 0.922309 0.0 +vt 0.613593 0.922309 0.0 +vt 0.624806 0.954484 0.0 +vt 0.613593 0.922309 0.0 +vt 0.552901 0.954484 0.0 +vt 0.624806 0.954484 0.0 +vt 0.613593 0.922309 0.0 +vt 0.544728 0.922309 0.0 +vt 0.552901 0.954484 0.0 +vt 0.455272 0.922309 0.0 +vt 0.375194 0.954484 0.0 +vt 0.447099 0.954484 0.0 +vt 0.455272 0.922309 0.0 +vt 0.386407 0.922309 0.0 +vt 0.375194 0.954484 0.0 +vt 0.544728 0.922309 0.0 +vt 0.500000 0.954484 0.0 +vt 0.552901 0.954484 0.0 +vt 0.544728 0.922309 0.0 +vt 0.500000 0.922309 0.0 +vt 0.500000 0.954484 0.0 +vt 0.500000 0.922309 0.0 +vt 0.447099 0.954484 0.0 +vt 0.500000 0.954484 0.0 +vt 0.500000 0.922309 0.0 +vt 0.455272 0.922309 0.0 +vt 0.447099 0.954484 0.0 +vt 1.052901 0.954484 0.0 +vt 1.000000 0.982735 0.0 +vt 1.078492 0.982735 0.0 +vt 1.052901 0.954484 0.0 +vt 1.000000 0.954484 0.0 +vt 1.000000 0.982735 0.0 +vt 1.000000 0.954484 0.0 +vt 0.921508 0.982735 0.0 +vt 1.000000 0.982735 0.0 +vt 1.000000 0.954484 0.0 +vt 0.947099 0.954484 0.0 +vt 0.921508 0.982735 0.0 +vt 0.947099 0.954484 0.0 +vt 0.843871 0.982735 0.0 +vt 0.921508 0.982735 0.0 +vt 0.947099 0.954484 0.0 +vt 0.875194 0.954484 0.0 +vt 0.843871 0.982735 0.0 +vt 0.124806 0.954484 0.0 +vt 0.078492 0.982735 0.0 +vt 0.156129 0.982735 0.0 +vt 0.124806 0.954484 0.0 +vt 0.052901 0.954484 0.0 +vt 0.078492 0.982735 0.0 +vt 0.250000 0.954484 0.0 +vt 0.156129 0.982735 0.0 +vt 0.250000 0.982735 0.0 +vt 0.250000 0.954484 0.0 +vt 0.124806 0.954484 0.0 +vt 0.156129 0.982735 0.0 +vt 0.875194 0.954484 0.0 +vt 0.750000 0.982735 0.0 +vt 0.843871 0.982735 0.0 +vt 0.875194 0.954484 0.0 +vt 0.750000 0.954484 0.0 +vt 0.750000 0.982735 0.0 +vt 0.375194 0.954484 0.0 +vt 0.250000 0.982735 0.0 +vt 0.343871 0.982735 0.0 +vt 0.375194 0.954484 0.0 +vt 0.250000 0.954484 0.0 +vt 0.250000 0.982735 0.0 +vt 0.750000 0.954484 0.0 +vt 0.656129 0.982735 0.0 +vt 0.750000 0.982735 0.0 +vt 0.750000 0.954484 0.0 +vt 0.624806 0.954484 0.0 +vt 0.656129 0.982735 0.0 +vt 0.624806 0.954484 0.0 +vt 0.578492 0.982735 0.0 +vt 0.656129 0.982735 0.0 +vt 0.624806 0.954484 0.0 +vt 0.552901 0.954484 0.0 +vt 0.578492 0.982735 0.0 +vt 0.447099 0.954484 0.0 +vt 0.343871 0.982735 0.0 +vt 0.421508 0.982735 0.0 +vt 0.447099 0.954484 0.0 +vt 0.375194 0.954484 0.0 +vt 0.343871 0.982735 0.0 +vt 0.552901 0.954484 0.0 +vt 0.500000 0.982735 0.0 +vt 0.578492 0.982735 0.0 +vt 0.552901 0.954484 0.0 +vt 0.500000 0.954484 0.0 +vt 0.500000 0.982735 0.0 +vt 0.500000 0.954484 0.0 +vt 0.421508 0.982735 0.0 +vt 0.500000 0.982735 0.0 +vt 0.500000 0.954484 0.0 +vt 0.447099 0.954484 0.0 +vt 0.421508 0.982735 0.0 +vt 1.078492 0.982735 0.0 +vt 1.000000 1.000000 0.0 +vt 1.092543 1.000000 0.0 +vt 1.078492 0.982735 0.0 +vt 1.000000 0.982735 0.0 +vt 1.000000 1.000000 0.0 +vt 1.000000 0.982735 0.0 +vt 0.907457 1.000000 0.0 +vt 1.000000 1.000000 0.0 +vt 1.000000 0.982735 0.0 +vt 0.921508 0.982735 0.0 +vt 0.907457 1.000000 0.0 +vt 0.921508 0.982735 0.0 +vt 0.828926 1.000000 0.0 +vt 0.907457 1.000000 0.0 +vt 0.921508 0.982735 0.0 +vt 0.843871 0.982735 0.0 +vt 0.828926 1.000000 0.0 +vt 0.156129 0.982735 0.0 +vt 0.092543 1.000000 0.0 +vt 0.171074 1.000000 0.0 +vt 0.156129 0.982735 0.0 +vt 0.078492 0.982735 0.0 +vt 0.092543 1.000000 0.0 +vt 0.250000 0.982735 0.0 +vt 0.171074 1.000000 0.0 +vt 0.250000 1.000000 0.0 +vt 0.250000 0.982735 0.0 +vt 0.156129 0.982735 0.0 +vt 0.171074 1.000000 0.0 +vt 0.843871 0.982735 0.0 +vt 0.750000 1.000000 0.0 +vt 0.828926 1.000000 0.0 +vt 0.843871 0.982735 0.0 +vt 0.750000 0.982735 0.0 +vt 0.750000 1.000000 0.0 +vt 0.343871 0.982735 0.0 +vt 0.250000 1.000000 0.0 +vt 0.328926 1.000000 0.0 +vt 0.343871 0.982735 0.0 +vt 0.250000 0.982735 0.0 +vt 0.250000 1.000000 0.0 +vt 0.750000 0.982735 0.0 +vt 0.671074 1.000000 0.0 +vt 0.750000 1.000000 0.0 +vt 0.750000 0.982735 0.0 +vt 0.656129 0.982735 0.0 +vt 0.671074 1.000000 0.0 +vt 0.656129 0.982735 0.0 +vt 0.592543 1.000000 0.0 +vt 0.671074 1.000000 0.0 +vt 0.656129 0.982735 0.0 +vt 0.578492 0.982735 0.0 +vt 0.592543 1.000000 0.0 +vt 0.421508 0.982735 0.0 +vt 0.328926 1.000000 0.0 +vt 0.407457 1.000000 0.0 +vt 0.421508 0.982735 0.0 +vt 0.343871 0.982735 0.0 +vt 0.328926 1.000000 0.0 +vt 0.578492 0.982735 0.0 +vt 0.500000 1.000000 0.0 +vt 0.592543 1.000000 0.0 +vt 0.578492 0.982735 0.0 +vt 0.500000 0.982735 0.0 +vt 0.500000 1.000000 0.0 +vt 0.500000 0.982735 0.0 +vt 0.407457 1.000000 0.0 +vt 0.500000 1.000000 0.0 +vt 0.500000 0.982735 0.0 +vt 0.421508 0.982735 0.0 +vt 0.407457 1.000000 0.0 +vt 0.163595 0.869761 0.0 +vt 0.500000 0.913317 0.0 +vt 0.242815 0.813747 0.0 +vt 0.163595 0.869761 0.0 +vt 0.500000 1.000000 0.0 +vt 0.500000 0.913317 0.0 +vt 0.500000 1.000000 0.0 +vt 0.757185 0.813747 0.0 +vt 0.500000 0.913317 0.0 +vt 0.500000 1.000000 0.0 +vt 0.836405 0.869761 0.0 +vt 0.757185 0.813747 0.0 +vt 0.836405 0.869761 0.0 +vt 0.864178 0.659156 0.0 +vt 0.757185 0.813747 0.0 +vt 0.836405 0.869761 0.0 +vt 0.966209 0.682210 0.0 +vt 0.864178 0.659156 0.0 +vt 0.033791 0.682210 0.0 +vt 0.242815 0.813747 0.0 +vt 0.135822 0.659157 0.0 +vt 0.033791 0.682210 0.0 +vt 0.163595 0.869761 0.0 +vt 0.242815 0.813747 0.0 +vt 0.000000 0.500000 0.0 +vt 0.135822 0.659157 0.0 +vt 0.106236 0.499620 0.0 +vt 0.000000 0.500000 0.0 +vt 0.033791 0.682210 0.0 +vt 0.135822 0.659157 0.0 +vt 0.966209 0.682210 0.0 +vt 0.893764 0.499620 0.0 +vt 0.864178 0.659156 0.0 +vt 0.966209 0.682210 0.0 +vt 1.000000 0.500000 0.0 +vt 0.893764 0.499620 0.0 +vt 0.033791 0.317790 0.0 +vt 0.106236 0.499620 0.0 +vt 0.135821 0.340083 0.0 +vt 0.033791 0.317790 0.0 +vt 0.000000 0.500000 0.0 +vt 0.106236 0.499620 0.0 +vt 1.000000 0.500000 0.0 +vt 0.864179 0.340083 0.0 +vt 0.893764 0.499620 0.0 +vt 1.000000 0.500000 0.0 +vt 0.966209 0.317790 0.0 +vt 0.864179 0.340083 0.0 +vt 0.966209 0.317790 0.0 +vt 0.757185 0.185492 0.0 +vt 0.864179 0.340083 0.0 +vt 0.966209 0.317790 0.0 +vt 0.836405 0.130239 0.0 +vt 0.757185 0.185492 0.0 +vt 0.163595 0.130239 0.0 +vt 0.135821 0.340083 0.0 +vt 0.242815 0.185492 0.0 +vt 0.163595 0.130239 0.0 +vt 0.033791 0.317790 0.0 +vt 0.135821 0.340083 0.0 +vt 0.836405 0.130239 0.0 +vt 0.500000 0.085922 0.0 +vt 0.757185 0.185492 0.0 +vt 0.836405 0.130239 0.0 +vt 0.500000 0.000000 0.0 +vt 0.500000 0.085922 0.0 +vt 0.500000 0.000000 0.0 +vt 0.242815 0.185492 0.0 +vt 0.500000 0.085922 0.0 +vt 0.500000 0.000000 0.0 +vt 0.163595 0.130239 0.0 +vt 0.242815 0.185492 0.0 +vt 0.242815 0.813747 0.0 +vt 0.500000 0.702949 0.0 +vt 0.428570 0.675295 0.0 +vt 0.242815 0.813747 0.0 +vt 0.500000 0.913317 0.0 +vt 0.500000 0.702949 0.0 +vt 0.500000 0.913317 0.0 +vt 0.571430 0.675294 0.0 +vt 0.500000 0.702949 0.0 +vt 0.500000 0.913317 0.0 +vt 0.757185 0.813747 0.0 +vt 0.571430 0.675294 0.0 +vt 0.757185 0.813747 0.0 +vt 0.624934 0.597989 0.0 +vt 0.571430 0.675294 0.0 +vt 0.757185 0.813747 0.0 +vt 0.864178 0.659156 0.0 +vt 0.624934 0.597989 0.0 +vt 0.135822 0.659157 0.0 +vt 0.428570 0.675295 0.0 +vt 0.375066 0.597989 0.0 +vt 0.135822 0.659157 0.0 +vt 0.242815 0.813747 0.0 +vt 0.428570 0.675295 0.0 +vt 0.106236 0.499620 0.0 +vt 0.375066 0.597989 0.0 +vt 0.355340 0.491617 0.0 +vt 0.106236 0.499620 0.0 +vt 0.135822 0.659157 0.0 +vt 0.375066 0.597989 0.0 +vt 0.864178 0.659156 0.0 +vt 0.644660 0.491617 0.0 +vt 0.624934 0.597989 0.0 +vt 0.864178 0.659156 0.0 +vt 0.893764 0.499620 0.0 +vt 0.644660 0.491617 0.0 +vt 0.135821 0.340083 0.0 +vt 0.355340 0.491617 0.0 +vt 0.375066 0.385246 0.0 +vt 0.135821 0.340083 0.0 +vt 0.106236 0.499620 0.0 +vt 0.355340 0.491617 0.0 +vt 0.893764 0.499620 0.0 +vt 0.624934 0.385246 0.0 +vt 0.644660 0.491617 0.0 +vt 0.893764 0.499620 0.0 +vt 0.864179 0.340083 0.0 +vt 0.624934 0.385246 0.0 +vt 0.864179 0.340083 0.0 +vt 0.571430 0.307940 0.0 +vt 0.624934 0.385246 0.0 +vt 0.864179 0.340083 0.0 +vt 0.757185 0.185492 0.0 +vt 0.571430 0.307940 0.0 +vt 0.242815 0.185492 0.0 +vt 0.375066 0.385246 0.0 +vt 0.428570 0.307940 0.0 +vt 0.242815 0.185492 0.0 +vt 0.135821 0.340083 0.0 +vt 0.375066 0.385246 0.0 +vt 0.757185 0.185492 0.0 +vt 0.500000 0.280286 0.0 +vt 0.571430 0.307940 0.0 +vt 0.757185 0.185492 0.0 +vt 0.500000 0.085922 0.0 +vt 0.500000 0.280286 0.0 +vt 0.500000 0.085922 0.0 +vt 0.428570 0.307940 0.0 +vt 0.500000 0.280286 0.0 +vt 0.500000 0.085922 0.0 +vt 0.242815 0.185492 0.0 +vt 0.428570 0.307940 0.0 +vt 0.500071 0.501435 0.0 +vt 0.375066 0.597989 0.0 +vt 0.428570 0.675295 0.0 +vt 0.500071 0.501435 0.0 +vt 0.355340 0.491617 0.0 +vt 0.375066 0.597989 0.0 +vt 0.500071 0.501435 0.0 +vt 0.375066 0.385246 0.0 +vt 0.355340 0.491617 0.0 +vt 0.500071 0.501435 0.0 +vt 0.428570 0.307940 0.0 +vt 0.375066 0.385246 0.0 +vt 0.500071 0.501435 0.0 +vt 0.428570 0.675295 0.0 +vt 0.500000 0.702949 0.0 +vt 0.500071 0.501435 0.0 +vt 0.500000 0.280286 0.0 +vt 0.428570 0.307940 0.0 +vt 0.500071 0.501435 0.0 +vt 0.571430 0.307940 0.0 +vt 0.500000 0.280286 0.0 +vt 0.500071 0.501435 0.0 +vt 0.624934 0.385246 0.0 +vt 0.571430 0.307940 0.0 +vt 0.644660 0.491617 0.0 +vt 0.624934 0.385246 0.0 +vt 0.500071 0.501435 0.0 +vt 0.500071 0.501435 0.0 +vt 0.624934 0.597989 0.0 +vt 0.644660 0.491617 0.0 +vt 0.571430 0.675294 0.0 +vt 0.624934 0.597989 0.0 +vt 0.500071 0.501435 0.0 +vt 0.500071 0.501435 0.0 +vt 0.500000 0.702949 0.0 +vt 0.571430 0.675294 0.0 + +# normals: +vn 0.997553 0.069917 0.000088 +vn 0.995936 0.090062 0.000088 +vn 0.989966 0.056315 0.129599 +vn 0.989966 0.056315 0.129599 +vn 0.975460 0.015347 0.219642 +vn 0.999459 0.032893 0.000030 +vn 0.989966 0.056315 0.129599 +vn 0.999459 0.032893 0.000030 +vn 0.997553 0.069917 0.000088 +vn 0.980733 -0.002300 -0.195337 +vn 0.957928 0.003806 0.286984 +vn 0.995768 -0.000935 -0.091897 +vn 0.975460 0.015347 0.219642 +vn 0.957928 0.003806 0.286984 +vn 0.980733 -0.002300 -0.195337 +vn 0.975460 0.015347 0.219642 +vn 0.980733 -0.002300 -0.195337 +vn 0.999999 0.001119 0.000584 +vn 0.975460 0.015347 0.219642 +vn 0.999999 0.001119 0.000584 +vn 0.999459 0.032893 0.000030 +vn 0.999860 -0.016662 0.001593 +vn 0.999999 0.001119 0.000584 +vn 0.980733 -0.002300 -0.195337 +vn 0.980733 -0.002300 -0.195337 +vn 0.995768 -0.000935 -0.091897 +vn 0.999995 -0.002792 0.001593 +vn 0.980733 -0.002300 -0.195337 +vn 0.999995 -0.002792 0.001593 +vn 0.999860 -0.016662 0.001593 +vn 0.997553 0.069917 0.000088 +vn 0.989983 0.056290 -0.129482 +vn 0.995936 0.090062 0.000088 +vn 0.989983 0.056290 -0.129482 +vn 0.999459 0.032893 0.000030 +vn 0.975499 0.015361 -0.219467 +vn 0.989983 0.056290 -0.129482 +vn 0.997553 0.069917 0.000088 +vn 0.999459 0.032893 0.000030 +vn 0.980419 -0.002280 0.196909 +vn 0.995649 -0.000916 0.093184 +vn 0.957817 0.003826 -0.287353 +vn 0.975499 0.015361 -0.219467 +vn 0.980419 -0.002280 0.196909 +vn 0.957817 0.003826 -0.287353 +vn 0.975499 0.015361 -0.219467 +vn 0.999999 0.001119 0.000584 +vn 0.980419 -0.002280 0.196909 +vn 0.975499 0.015361 -0.219467 +vn 0.999459 0.032893 0.000030 +vn 0.999999 0.001119 0.000584 +vn 0.999860 -0.016662 0.001593 +vn 0.980419 -0.002280 0.196909 +vn 0.999999 0.001119 0.000584 +vn 0.980419 -0.002280 0.196909 +vn 0.999995 -0.002792 0.001593 +vn 0.995649 -0.000916 0.093184 +vn 0.980419 -0.002280 0.196909 +vn 0.999860 -0.016662 0.001593 +vn 0.999995 -0.002792 0.001593 +vn -0.997553 0.069917 0.000088 +vn -0.989966 0.056315 0.129599 +vn -0.995936 0.090062 0.000088 +vn -0.989966 0.056315 0.129599 +vn -0.999453 0.033070 0.000030 +vn -0.975041 0.015523 0.221480 +vn -0.989966 0.056315 0.129599 +vn -0.997553 0.069917 0.000088 +vn -0.999453 0.033070 0.000030 +vn -0.979881 -0.002348 -0.199569 +vn -0.995426 -0.000971 -0.095533 +vn -0.956790 0.003856 0.290756 +vn -0.975041 0.015523 0.221480 +vn -0.979881 -0.002348 -0.199569 +vn -0.956790 0.003856 0.290756 +vn -0.975041 0.015523 0.221480 +vn -0.999999 0.001238 0.000784 +vn -0.979881 -0.002348 -0.199569 +vn -0.975041 0.015523 0.221480 +vn -0.999453 0.033070 0.000030 +vn -0.999999 0.001238 0.000784 +vn -0.999850 -0.017140 0.002366 +vn -0.979881 -0.002348 -0.199569 +vn -0.999999 0.001238 0.000784 +vn -0.979881 -0.002348 -0.199569 +vn -0.999994 -0.002883 0.002109 +vn -0.995426 -0.000971 -0.095533 +vn -0.979881 -0.002348 -0.199569 +vn -0.999850 -0.017140 0.002366 +vn -0.999994 -0.002883 0.002109 +vn -0.997553 0.069917 0.000088 +vn -0.995936 0.090062 0.000088 +vn -0.989983 0.056290 -0.129482 +vn -0.989983 0.056290 -0.129482 +vn -0.975081 0.015537 -0.221303 +vn -0.999453 0.033070 0.000030 +vn -0.989983 0.056290 -0.129482 +vn -0.999453 0.033070 0.000030 +vn -0.997553 0.069917 0.000088 +vn -0.979439 -0.002337 0.201729 +vn -0.956679 0.003876 -0.291120 +vn -0.995271 -0.000955 0.097135 +vn -0.975081 0.015537 -0.221303 +vn -0.956679 0.003876 -0.291120 +vn -0.979439 -0.002337 0.201729 +vn -0.975081 0.015537 -0.221303 +vn -0.979439 -0.002337 0.201729 +vn -0.999999 0.001238 0.000784 +vn -0.975081 0.015537 -0.221303 +vn -0.999999 0.001238 0.000784 +vn -0.999453 0.033070 0.000030 +vn -0.999850 -0.017140 0.002366 +vn -0.999999 0.001238 0.000784 +vn -0.979439 -0.002337 0.201729 +vn -0.979439 -0.002337 0.201729 +vn -0.995271 -0.000955 0.097135 +vn -0.999994 -0.002883 0.002109 +vn -0.979439 -0.002337 0.201729 +vn -0.999994 -0.002883 0.002109 +vn -0.999850 -0.017140 0.002366 +vn -0.718215 0.510984 0.472295 +vn 0.000000 0.705083 0.709124 +vn 0.002032 0.992095 -0.125474 +vn -0.786101 0.617469 -0.027881 +vn -0.718215 0.510984 0.472295 +vn 0.002032 0.992095 -0.125474 +vn -0.786101 0.617469 -0.027881 +vn 0.002032 0.992095 -0.125474 +vn 0.001014 0.999917 -0.012869 +vn 0.001014 0.999917 -0.012869 +vn -0.263270 0.964290 -0.028881 +vn -0.776697 0.629637 0.017304 +vn -0.776697 0.629637 0.017304 +vn -0.786101 0.617469 -0.027881 +vn 0.001014 0.999917 -0.012869 +vn -0.718215 0.510984 0.472295 +vn -0.831471 -0.511375 0.217144 +vn 0.000000 -0.515147 0.857102 +vn -0.718215 0.510984 0.472295 +vn 0.000000 -0.515147 0.857102 +vn 0.000000 0.705083 0.709124 +vn -0.831471 -0.511375 0.217144 +vn -0.718215 0.510984 0.472295 +vn -0.786101 0.617469 -0.027881 +vn -0.743402 -0.664386 0.077107 +vn -0.831471 -0.511375 0.217144 +vn -0.786101 0.617469 -0.027881 +vn -0.743402 -0.664386 0.077107 +vn -0.786101 0.617469 -0.027881 +vn -0.776697 0.629637 0.017304 +vn -0.718964 -0.692929 0.054223 +vn -0.743402 -0.664386 0.077107 +vn -0.776697 0.629637 0.017304 +vn -0.776697 0.629637 0.017304 +vn -0.263270 0.964290 -0.028881 +vn -0.214135 0.976804 -0.001055 +vn -0.763192 0.646172 -0.000135 +vn -0.776697 0.629637 0.017304 +vn -0.214135 0.976804 -0.001055 +vn -0.970872 -0.239597 -0.000155 +vn -0.718964 -0.692929 0.054223 +vn -0.776697 0.629637 0.017304 +vn -0.763192 0.646172 -0.000135 +vn -0.970872 -0.239597 -0.000155 +vn -0.776697 0.629637 0.017304 +vn 0.000000 -0.515147 0.857102 +vn -0.831471 -0.511375 0.217144 +vn -0.000000 -0.999508 0.031358 +vn -0.000000 -0.999508 0.031358 +vn -0.831471 -0.511375 0.217144 +vn -0.743402 -0.664386 0.077107 +vn -0.000003 -1.000000 0.000026 +vn -0.000000 -0.999508 0.031358 +vn -0.743402 -0.664386 0.077107 +vn -0.000003 -1.000000 0.000026 +vn -0.743402 -0.664386 0.077107 +vn -0.718964 -0.692929 0.054223 +vn -0.000003 -1.000000 0.000026 +vn -0.718964 -0.692929 0.054223 +vn -0.970872 -0.239597 -0.000155 +vn 0.719472 0.510267 0.471156 +vn 0.002032 0.992095 -0.125474 +vn 0.000000 0.705083 0.709124 +vn 0.785886 0.617733 -0.028086 +vn 0.002032 0.992095 -0.125474 +vn 0.719472 0.510267 0.471156 +vn 0.785886 0.617733 -0.028086 +vn 0.001014 0.999917 -0.012869 +vn 0.002032 0.992095 -0.125474 +vn 0.001014 0.999917 -0.012869 +vn 0.776135 0.630313 0.017863 +vn 0.263270 0.964290 -0.028881 +vn 0.776135 0.630313 0.017863 +vn 0.001014 0.999917 -0.012869 +vn 0.785886 0.617733 -0.028086 +vn 0.719472 0.510267 0.471156 +vn 0.000000 -0.515147 0.857102 +vn 0.832443 -0.509986 0.216687 +vn 0.719472 0.510267 0.471156 +vn 0.000000 0.705083 0.709124 +vn 0.000000 -0.515147 0.857102 +vn 0.832443 -0.509986 0.216687 +vn 0.785886 0.617733 -0.028086 +vn 0.719472 0.510267 0.471156 +vn 0.745043 -0.662505 0.077452 +vn 0.785886 0.617733 -0.028086 +vn 0.832443 -0.509986 0.216687 +vn 0.745043 -0.662505 0.077452 +vn 0.776135 0.630313 0.017863 +vn 0.785886 0.617733 -0.028086 +vn 0.718953 -0.692914 0.054560 +vn 0.776135 0.630313 0.017863 +vn 0.745043 -0.662505 0.077452 +vn 0.776135 0.630313 0.017863 +vn 0.214073 0.976817 -0.001054 +vn 0.263270 0.964290 -0.028881 +vn 0.763154 0.646217 -0.000123 +vn 0.214073 0.976817 -0.001054 +vn 0.776135 0.630313 0.017863 +vn 0.970876 -0.239582 -0.000130 +vn 0.776135 0.630313 0.017863 +vn 0.718953 -0.692914 0.054560 +vn 0.763154 0.646217 -0.000123 +vn 0.776135 0.630313 0.017863 +vn 0.970876 -0.239582 -0.000130 +vn 0.000000 -0.515147 0.857102 +vn -0.000000 -0.999508 0.031358 +vn 0.832443 -0.509986 0.216687 +vn -0.000000 -0.999508 0.031358 +vn 0.745043 -0.662505 0.077452 +vn 0.832443 -0.509986 0.216687 +vn -0.000003 -1.000000 0.000026 +vn 0.745043 -0.662505 0.077452 +vn -0.000000 -0.999508 0.031358 +vn -0.000003 -1.000000 0.000026 +vn 0.718953 -0.692914 0.054560 +vn 0.745043 -0.662505 0.077452 +vn -0.000003 -1.000000 0.000026 +vn 0.970876 -0.239582 -0.000130 +vn 0.718953 -0.692914 0.054560 +vn -0.718214 0.510984 -0.472297 +vn 0.002032 0.992105 0.125397 +vn 0.000000 0.705084 -0.709124 +vn -0.786194 0.617355 0.027792 +vn 0.002032 0.992105 0.125397 +vn -0.718214 0.510984 -0.472297 +vn -0.786194 0.617355 0.027792 +vn 0.001014 0.999921 0.012523 +vn 0.002032 0.992105 0.125397 +vn 0.001014 0.999921 0.012523 +vn -0.776723 0.629578 -0.018255 +vn -0.263293 0.964354 0.026440 +vn -0.776723 0.629578 -0.018255 +vn 0.001014 0.999921 0.012523 +vn -0.786194 0.617355 0.027792 +vn -0.718214 0.510984 -0.472297 +vn -0.000000 -0.515145 -0.857103 +vn -0.831470 -0.511376 -0.217146 +vn -0.718214 0.510984 -0.472297 +vn 0.000000 0.705084 -0.709124 +vn -0.000000 -0.515145 -0.857103 +vn -0.831470 -0.511376 -0.217146 +vn -0.786194 0.617355 0.027792 +vn -0.718214 0.510984 -0.472297 +vn -0.743249 -0.664554 -0.077129 +vn -0.786194 0.617355 0.027792 +vn -0.831470 -0.511376 -0.217146 +vn -0.743249 -0.664554 -0.077129 +vn -0.776723 0.629578 -0.018255 +vn -0.786194 0.617355 0.027792 +vn -0.718843 -0.693045 -0.054340 +vn -0.776723 0.629578 -0.018255 +vn -0.743249 -0.664554 -0.077129 +vn -0.776723 0.629578 -0.018255 +vn -0.214135 0.976804 -0.001055 +vn -0.263293 0.964354 0.026440 +vn -0.763192 0.646172 -0.000135 +vn -0.214135 0.976804 -0.001055 +vn -0.776723 0.629578 -0.018255 +vn -0.970872 -0.239597 -0.000155 +vn -0.776723 0.629578 -0.018255 +vn -0.718843 -0.693045 -0.054340 +vn -0.763192 0.646172 -0.000135 +vn -0.776723 0.629578 -0.018255 +vn -0.970872 -0.239597 -0.000155 +vn -0.000000 -0.515145 -0.857103 +vn 0.000000 -0.999509 -0.031340 +vn -0.831470 -0.511376 -0.217146 +vn 0.000000 -0.999509 -0.031340 +vn -0.743249 -0.664554 -0.077129 +vn -0.831470 -0.511376 -0.217146 +vn -0.000003 -1.000000 0.000026 +vn -0.743249 -0.664554 -0.077129 +vn 0.000000 -0.999509 -0.031340 +vn -0.000003 -1.000000 0.000026 +vn -0.718843 -0.693045 -0.054340 +vn -0.743249 -0.664554 -0.077129 +vn -0.000003 -1.000000 0.000026 +vn -0.970872 -0.239597 -0.000155 +vn -0.718843 -0.693045 -0.054340 +vn 0.719471 0.510267 -0.471158 +vn 0.000000 0.705084 -0.709124 +vn 0.002032 0.992105 0.125397 +vn 0.785979 0.617619 0.027997 +vn 0.719471 0.510267 -0.471158 +vn 0.002032 0.992105 0.125397 +vn 0.785979 0.617619 0.027997 +vn 0.002032 0.992105 0.125397 +vn 0.001014 0.999921 0.012523 +vn 0.001014 0.999921 0.012523 +vn 0.263293 0.964354 0.026440 +vn 0.776161 0.630254 -0.018803 +vn 0.776161 0.630254 -0.018803 +vn 0.785979 0.617619 0.027997 +vn 0.001014 0.999921 0.012523 +vn 0.719471 0.510267 -0.471158 +vn 0.832442 -0.509987 -0.216689 +vn -0.000000 -0.515145 -0.857103 +vn 0.719471 0.510267 -0.471158 +vn -0.000000 -0.515145 -0.857103 +vn 0.000000 0.705084 -0.709124 +vn 0.832442 -0.509987 -0.216689 +vn 0.719471 0.510267 -0.471158 +vn 0.785979 0.617619 0.027997 +vn 0.744890 -0.662674 -0.077475 +vn 0.832442 -0.509987 -0.216689 +vn 0.785979 0.617619 0.027997 +vn 0.744890 -0.662674 -0.077475 +vn 0.785979 0.617619 0.027997 +vn 0.776161 0.630254 -0.018803 +vn 0.718832 -0.693031 -0.054667 +vn 0.744890 -0.662674 -0.077475 +vn 0.776161 0.630254 -0.018803 +vn 0.776161 0.630254 -0.018803 +vn 0.263293 0.964354 0.026440 +vn 0.214073 0.976817 -0.001054 +vn 0.763154 0.646217 -0.000123 +vn 0.776161 0.630254 -0.018803 +vn 0.214073 0.976817 -0.001054 +vn 0.970876 -0.239582 -0.000130 +vn 0.718832 -0.693031 -0.054667 +vn 0.776161 0.630254 -0.018803 +vn 0.763154 0.646217 -0.000123 +vn 0.970876 -0.239582 -0.000130 +vn 0.776161 0.630254 -0.018803 +vn -0.000000 -0.515145 -0.857103 +vn 0.832442 -0.509987 -0.216689 +vn 0.000000 -0.999509 -0.031340 +vn 0.000000 -0.999509 -0.031340 +vn 0.832442 -0.509987 -0.216689 +vn 0.744890 -0.662674 -0.077475 +vn -0.000003 -1.000000 0.000026 +vn 0.000000 -0.999509 -0.031340 +vn 0.744890 -0.662674 -0.077475 +vn -0.000003 -1.000000 0.000026 +vn 0.744890 -0.662674 -0.077475 +vn 0.718832 -0.693031 -0.054667 +vn -0.000003 -1.000000 0.000026 +vn 0.718832 -0.693031 -0.054667 +vn 0.970876 -0.239582 -0.000130 +vn 0.994127 0.108217 -0.000001 +vn 0.950177 0.108351 -0.292273 +vn 0.955682 -0.016027 -0.293964 +vn 0.994127 0.108217 -0.000001 +vn 0.955682 -0.016027 -0.293964 +vn 0.999885 -0.015184 -0.000001 +vn 0.950177 0.108351 -0.292273 +vn 0.712722 0.109709 -0.692813 +vn 0.955682 -0.016027 -0.293964 +vn 0.955682 -0.016027 -0.293964 +vn 0.712722 0.109709 -0.692813 +vn 0.716894 -0.021389 -0.696854 +vn 0.712722 0.109709 -0.692813 +vn -0.000000 0.116617 -0.993177 +vn -0.000000 -0.026942 -0.999637 +vn 0.712722 0.109709 -0.692813 +vn -0.000000 -0.026942 -0.999637 +vn 0.716894 -0.021389 -0.696854 +vn -0.000000 0.116617 -0.993177 +vn -0.712722 0.109709 -0.692814 +vn -0.000000 -0.026942 -0.999637 +vn -0.000000 -0.026942 -0.999637 +vn -0.712722 0.109709 -0.692814 +vn -0.716894 -0.021389 -0.696854 +vn -0.712722 0.109709 -0.692814 +vn -0.950177 0.108351 -0.292273 +vn -0.955682 -0.016027 -0.293964 +vn -0.712722 0.109709 -0.692814 +vn -0.955682 -0.016027 -0.293964 +vn -0.716894 -0.021389 -0.696854 +vn -0.950177 0.108351 -0.292273 +vn -0.994127 0.108217 -0.000000 +vn -0.955682 -0.016027 -0.293964 +vn -0.955682 -0.016027 -0.293964 +vn -0.994127 0.108217 -0.000000 +vn -0.999885 -0.015184 -0.000001 +vn -0.994127 0.108217 -0.000000 +vn -0.950281 0.107352 0.292303 +vn -0.955650 -0.018038 0.293951 +vn -0.994127 0.108217 -0.000000 +vn -0.955650 -0.018038 0.293951 +vn -0.999885 -0.015184 -0.000001 +vn -0.950281 0.107352 0.292303 +vn -0.712913 0.107343 0.692988 +vn -0.955650 -0.018038 0.293951 +vn -0.955650 -0.018038 0.293951 +vn -0.712913 0.107343 0.692988 +vn -0.716824 -0.026153 0.696763 +vn -0.712913 0.107343 0.692988 +vn 0.000000 0.113231 0.993569 +vn 0.000000 -0.033774 0.999430 +vn -0.712913 0.107343 0.692988 +vn 0.000000 -0.033774 0.999430 +vn -0.716824 -0.026153 0.696763 +vn 0.000000 0.113231 0.993569 +vn 0.712913 0.107343 0.692988 +vn 0.000000 -0.033774 0.999430 +vn 0.000000 -0.033774 0.999430 +vn 0.712913 0.107343 0.692988 +vn 0.716824 -0.026153 0.696763 +vn 0.712913 0.107343 0.692988 +vn 0.950281 0.107352 0.292303 +vn 0.955650 -0.018038 0.293951 +vn 0.712913 0.107343 0.692988 +vn 0.955650 -0.018038 0.293951 +vn 0.716824 -0.026153 0.696763 +vn 0.950281 0.107352 0.292303 +vn 0.994127 0.108217 -0.000001 +vn 0.955650 -0.018038 0.293951 +vn 0.955650 -0.018038 0.293951 +vn 0.994127 0.108217 -0.000001 +vn 0.999885 -0.015184 -0.000001 +vn -0.712722 0.109709 -0.692814 +vn -0.000000 0.600369 -0.799723 +vn -0.589002 0.570307 -0.572562 +vn -0.712722 0.109709 -0.692814 +vn -0.000000 0.116617 -0.993177 +vn -0.000000 0.600369 -0.799723 +vn -0.000000 0.116617 -0.993177 +vn 0.589002 0.570306 -0.572562 +vn -0.000000 0.600369 -0.799723 +vn -0.000000 0.116617 -0.993177 +vn 0.712722 0.109709 -0.692813 +vn 0.589002 0.570306 -0.572562 +vn 0.712722 0.109709 -0.692813 +vn 0.793748 0.557093 -0.244156 +vn 0.589002 0.570306 -0.572562 +vn 0.712722 0.109709 -0.692813 +vn 0.950177 0.108351 -0.292273 +vn 0.793748 0.557093 -0.244156 +vn -0.950177 0.108351 -0.292273 +vn -0.589002 0.570307 -0.572562 +vn -0.793748 0.557093 -0.244156 +vn -0.950177 0.108351 -0.292273 +vn -0.712722 0.109709 -0.692814 +vn -0.589002 0.570307 -0.572562 +vn -0.994127 0.108217 -0.000000 +vn -0.793748 0.557093 -0.244156 +vn -0.831689 0.555242 0.000000 +vn -0.994127 0.108217 -0.000000 +vn -0.950177 0.108351 -0.292273 +vn -0.793748 0.557093 -0.244156 +vn 0.950177 0.108351 -0.292273 +vn 0.831689 0.555242 -0.000000 +vn 0.793748 0.557093 -0.244156 +vn 0.950177 0.108351 -0.292273 +vn 0.994127 0.108217 -0.000001 +vn 0.831689 0.555242 -0.000000 +vn -0.950281 0.107352 0.292303 +vn -0.831689 0.555242 0.000000 +vn -0.793748 0.557093 0.244156 +vn -0.950281 0.107352 0.292303 +vn -0.994127 0.108217 -0.000000 +vn -0.831689 0.555242 0.000000 +vn 0.994127 0.108217 -0.000001 +vn 0.793748 0.557093 0.244156 +vn 0.831689 0.555242 -0.000000 +vn 0.994127 0.108217 -0.000001 +vn 0.950281 0.107352 0.292303 +vn 0.793748 0.557093 0.244156 +vn 0.950281 0.107352 0.292303 +vn 0.589002 0.570306 0.572562 +vn 0.793748 0.557093 0.244156 +vn 0.950281 0.107352 0.292303 +vn 0.712913 0.107343 0.692988 +vn 0.589002 0.570306 0.572562 +vn -0.712913 0.107343 0.692988 +vn -0.793748 0.557093 0.244156 +vn -0.589002 0.570306 0.572562 +vn -0.712913 0.107343 0.692988 +vn -0.950281 0.107352 0.292303 +vn -0.793748 0.557093 0.244156 +vn 0.712913 0.107343 0.692988 +vn 0.000000 0.600369 0.799723 +vn 0.589002 0.570306 0.572562 +vn 0.712913 0.107343 0.692988 +vn 0.000000 0.113231 0.993569 +vn 0.000000 0.600369 0.799723 +vn 0.000000 0.113231 0.993569 +vn -0.589002 0.570306 0.572562 +vn 0.000000 0.600369 0.799723 +vn 0.000000 0.113231 0.993569 +vn -0.712913 0.107343 0.692988 +vn -0.589002 0.570306 0.572562 +vn -0.589002 0.570307 -0.572562 +vn 0.000000 0.900260 -0.435353 +vn -0.332258 0.886164 -0.322984 +vn -0.589002 0.570307 -0.572562 +vn -0.000000 0.600369 -0.799723 +vn 0.000000 0.900260 -0.435353 +vn -0.000000 0.600369 -0.799723 +vn 0.332258 0.886164 -0.322984 +vn 0.000000 0.900260 -0.435353 +vn -0.000000 0.600369 -0.799723 +vn 0.589002 0.570306 -0.572562 +vn 0.332258 0.886164 -0.322984 +vn 0.589002 0.570306 -0.572562 +vn 0.454914 0.879473 -0.139931 +vn 0.332258 0.886164 -0.322984 +vn 0.589002 0.570306 -0.572562 +vn 0.793748 0.557093 -0.244156 +vn 0.454914 0.879473 -0.139931 +vn -0.793748 0.557093 -0.244156 +vn -0.332258 0.886164 -0.322984 +vn -0.454914 0.879473 -0.139931 +vn -0.793748 0.557093 -0.244156 +vn -0.589002 0.570307 -0.572562 +vn -0.332258 0.886164 -0.322984 +vn -0.831689 0.555242 0.000000 +vn -0.454914 0.879473 -0.139931 +vn -0.477725 0.878510 0.000000 +vn -0.831689 0.555242 0.000000 +vn -0.793748 0.557093 -0.244156 +vn -0.454914 0.879473 -0.139931 +vn 0.793748 0.557093 -0.244156 +vn 0.477725 0.878510 -0.000000 +vn 0.454914 0.879473 -0.139931 +vn 0.793748 0.557093 -0.244156 +vn 0.831689 0.555242 -0.000000 +vn 0.477725 0.878510 -0.000000 +vn -0.793748 0.557093 0.244156 +vn -0.477725 0.878510 0.000000 +vn -0.454914 0.879473 0.139931 +vn -0.793748 0.557093 0.244156 +vn -0.831689 0.555242 0.000000 +vn -0.477725 0.878510 0.000000 +vn 0.831689 0.555242 -0.000000 +vn 0.454914 0.879473 0.139931 +vn 0.477725 0.878510 -0.000000 +vn 0.831689 0.555242 -0.000000 +vn 0.793748 0.557093 0.244156 +vn 0.454914 0.879473 0.139931 +vn 0.793748 0.557093 0.244156 +vn 0.332258 0.886164 0.322984 +vn 0.454914 0.879473 0.139931 +vn 0.793748 0.557093 0.244156 +vn 0.589002 0.570306 0.572562 +vn 0.332258 0.886164 0.322984 +vn -0.589002 0.570306 0.572562 +vn -0.454914 0.879473 0.139931 +vn -0.332257 0.886164 0.322984 +vn -0.589002 0.570306 0.572562 +vn -0.793748 0.557093 0.244156 +vn -0.454914 0.879473 0.139931 +vn 0.589002 0.570306 0.572562 +vn -0.000000 0.900260 0.435353 +vn 0.332258 0.886164 0.322984 +vn 0.589002 0.570306 0.572562 +vn 0.000000 0.600369 0.799723 +vn -0.000000 0.900260 0.435353 +vn 0.000000 0.600369 0.799723 +vn -0.332257 0.886164 0.322984 +vn -0.000000 0.900260 0.435353 +vn 0.000000 0.600369 0.799723 +vn -0.589002 0.570306 0.572562 +vn -0.332257 0.886164 0.322984 +vn -0.332258 0.886164 -0.322984 +vn -0.000000 0.945669 -0.325132 +vn -0.249860 0.937324 -0.242886 +vn -0.332258 0.886164 -0.322984 +vn 0.000000 0.900260 -0.435353 +vn -0.000000 0.945669 -0.325132 +vn 0.000000 0.900260 -0.435353 +vn 0.249860 0.937324 -0.242886 +vn -0.000000 0.945669 -0.325132 +vn 0.000000 0.900260 -0.435353 +vn 0.332258 0.886164 -0.322984 +vn 0.249860 0.937324 -0.242886 +vn 0.332258 0.886164 -0.322984 +vn 0.343223 0.933302 -0.105575 +vn 0.249860 0.937324 -0.242886 +vn 0.332258 0.886164 -0.322984 +vn 0.454914 0.879473 -0.139931 +vn 0.343223 0.933302 -0.105575 +vn -0.454914 0.879473 -0.139931 +vn -0.249860 0.937324 -0.242886 +vn -0.343222 0.933302 -0.105575 +vn -0.454914 0.879473 -0.139931 +vn -0.332258 0.886164 -0.322984 +vn -0.249860 0.937324 -0.242886 +vn -0.477725 0.878510 0.000000 +vn -0.343222 0.933302 -0.105575 +vn -0.360602 0.932720 0.000000 +vn -0.477725 0.878510 0.000000 +vn -0.454914 0.879473 -0.139931 +vn -0.343222 0.933302 -0.105575 +vn 0.454914 0.879473 -0.139931 +vn 0.360602 0.932720 -0.000000 +vn 0.343223 0.933302 -0.105575 +vn 0.454914 0.879473 -0.139931 +vn 0.477725 0.878510 -0.000000 +vn 0.360602 0.932720 -0.000000 +vn -0.454914 0.879473 0.139931 +vn -0.360602 0.932720 0.000000 +vn -0.343223 0.933302 0.105575 +vn -0.454914 0.879473 0.139931 +vn -0.477725 0.878510 0.000000 +vn -0.360602 0.932720 0.000000 +vn 0.477725 0.878510 -0.000000 +vn 0.343223 0.933302 0.105575 +vn 0.360602 0.932720 -0.000000 +vn 0.477725 0.878510 -0.000000 +vn 0.454914 0.879473 0.139931 +vn 0.343223 0.933302 0.105575 +vn 0.454914 0.879473 0.139931 +vn 0.249860 0.937324 0.242886 +vn 0.343223 0.933302 0.105575 +vn 0.454914 0.879473 0.139931 +vn 0.332258 0.886164 0.322984 +vn 0.249860 0.937324 0.242886 +vn -0.332257 0.886164 0.322984 +vn -0.343223 0.933302 0.105575 +vn -0.249860 0.937324 0.242886 +vn -0.332257 0.886164 0.322984 +vn -0.454914 0.879473 0.139931 +vn -0.343223 0.933302 0.105575 +vn 0.332258 0.886164 0.322984 +vn 0.000000 0.945669 0.325131 +vn 0.249860 0.937324 0.242886 +vn 0.332258 0.886164 0.322984 +vn -0.000000 0.900260 0.435353 +vn 0.000000 0.945669 0.325131 +vn -0.000000 0.900260 0.435353 +vn -0.249860 0.937324 0.242886 +vn 0.000000 0.945669 0.325131 +vn -0.000000 0.900260 0.435353 +vn -0.332257 0.886164 0.322984 +vn -0.249860 0.937324 0.242886 +vn -0.647241 -0.430476 -0.629102 +vn 0.000001 -0.645672 -0.763615 +vn -0.566397 -0.613963 -0.549766 +vn -0.647241 -0.430476 -0.629102 +vn 0.000000 -0.458732 -0.888575 +vn 0.000001 -0.645672 -0.763615 +vn 0.000000 -0.458732 -0.888575 +vn 0.566397 -0.613963 -0.549767 +vn 0.000001 -0.645672 -0.763615 +vn 0.000000 -0.458732 -0.888575 +vn 0.647241 -0.430476 -0.629102 +vn 0.566397 -0.613963 -0.549767 +vn 0.647241 -0.430476 -0.629102 +vn 0.766685 -0.597235 -0.235592 +vn 0.566397 -0.613963 -0.549767 +vn 0.647241 -0.430476 -0.629102 +vn 0.868358 -0.417875 -0.267085 +vn 0.766685 -0.597235 -0.235592 +vn -0.868358 -0.417875 -0.267085 +vn -0.566397 -0.613963 -0.549766 +vn -0.766685 -0.597235 -0.235593 +vn -0.868358 -0.417875 -0.267085 +vn -0.647241 -0.430476 -0.629102 +vn -0.566397 -0.613963 -0.549766 +vn -0.909494 -0.415717 0.000014 +vn -0.766685 -0.597235 -0.235593 +vn -0.805517 -0.592573 0.000157 +vn -0.909494 -0.415717 0.000014 +vn -0.868358 -0.417875 -0.267085 +vn -0.766685 -0.597235 -0.235593 +vn 0.868358 -0.417875 -0.267085 +vn 0.805517 -0.592573 0.000156 +vn 0.766685 -0.597235 -0.235592 +vn 0.868358 -0.417875 -0.267085 +vn 0.909494 -0.415716 0.000013 +vn 0.805517 -0.592573 0.000156 +vn -0.868785 -0.416875 0.267259 +vn -0.805517 -0.592573 0.000157 +vn -0.770554 -0.591567 0.237265 +vn -0.868785 -0.416875 0.267259 +vn -0.909494 -0.415717 0.000014 +vn -0.805517 -0.592573 0.000157 +vn 0.909494 -0.415716 0.000013 +vn 0.770554 -0.591567 0.237266 +vn 0.805517 -0.592573 0.000156 +vn 0.909494 -0.415716 0.000013 +vn 0.868785 -0.416875 0.267259 +vn 0.770554 -0.591567 0.237266 +vn 0.868785 -0.416875 0.267259 +vn 0.572664 -0.601013 0.557530 +vn 0.770554 -0.591567 0.237266 +vn 0.868785 -0.416875 0.267259 +vn 0.647961 -0.428150 0.629948 +vn 0.572664 -0.601013 0.557530 +vn -0.647960 -0.428150 0.629949 +vn -0.770554 -0.591567 0.237265 +vn -0.572663 -0.601013 0.557530 +vn -0.647960 -0.428150 0.629949 +vn -0.868785 -0.416875 0.267259 +vn -0.770554 -0.591567 0.237265 +vn 0.647961 -0.428150 0.629948 +vn -0.000001 -0.628704 0.777645 +vn 0.572664 -0.601013 0.557530 +vn 0.647961 -0.428150 0.629948 +vn -0.000000 -0.455544 0.890213 +vn -0.000001 -0.628704 0.777645 +vn -0.000000 -0.455544 0.890213 +vn -0.572663 -0.601013 0.557530 +vn -0.000001 -0.628704 0.777645 +vn -0.000000 -0.455544 0.890213 +vn -0.647960 -0.428150 0.629949 +vn -0.572663 -0.601013 0.557530 +vn -0.566397 -0.613963 -0.549766 +vn 0.000008 -0.905055 -0.425295 +vn -0.348404 -0.878452 -0.327012 +vn -0.566397 -0.613963 -0.549766 +vn 0.000001 -0.645672 -0.763615 +vn 0.000008 -0.905055 -0.425295 +vn 0.000001 -0.645672 -0.763615 +vn 0.348462 -0.878415 -0.327051 +vn 0.000008 -0.905055 -0.425295 +vn 0.000001 -0.645672 -0.763615 +vn 0.566397 -0.613963 -0.549767 +vn 0.348462 -0.878415 -0.327051 +vn 0.566397 -0.613963 -0.549767 +vn 0.508569 -0.847241 -0.153429 +vn 0.348462 -0.878415 -0.327051 +vn 0.566397 -0.613963 -0.549767 +vn 0.766685 -0.597235 -0.235592 +vn 0.508569 -0.847241 -0.153429 +vn -0.766685 -0.597235 -0.235593 +vn -0.348404 -0.878452 -0.327012 +vn -0.508441 -0.847324 -0.153394 +vn -0.766685 -0.597235 -0.235593 +vn -0.566397 -0.613963 -0.549766 +vn -0.348404 -0.878452 -0.327012 +vn -0.805517 -0.592573 0.000157 +vn -0.508441 -0.847324 -0.153394 +vn -0.547998 -0.836479 -0.000145 +vn -0.805517 -0.592573 0.000157 +vn -0.766685 -0.597235 -0.235593 +vn -0.508441 -0.847324 -0.153394 +vn 0.766685 -0.597235 -0.235592 +vn 0.548154 -0.836378 -0.000145 +vn 0.508569 -0.847241 -0.153429 +vn 0.766685 -0.597235 -0.235592 +vn 0.805517 -0.592573 0.000156 +vn 0.548154 -0.836378 -0.000145 +vn -0.770554 -0.591567 0.237265 +vn -0.547998 -0.836479 -0.000145 +vn -0.507268 -0.848108 0.152943 +vn -0.770554 -0.591567 0.237265 +vn -0.805517 -0.592573 0.000157 +vn -0.547998 -0.836479 -0.000145 +vn 0.805517 -0.592573 0.000156 +vn 0.507388 -0.848031 0.152974 +vn 0.548154 -0.836378 -0.000145 +vn 0.805517 -0.592573 0.000156 +vn 0.770554 -0.591567 0.237266 +vn 0.507388 -0.848031 0.152974 +vn 0.770554 -0.591567 0.237266 +vn 0.349988 -0.876716 0.329965 +vn 0.507388 -0.848031 0.152974 +vn 0.770554 -0.591567 0.237266 +vn 0.572664 -0.601013 0.557530 +vn 0.349988 -0.876716 0.329965 +vn -0.572663 -0.601013 0.557530 +vn -0.507268 -0.848108 0.152943 +vn -0.349937 -0.876749 0.329932 +vn -0.572663 -0.601013 0.557530 +vn -0.770554 -0.591567 0.237265 +vn -0.507268 -0.848108 0.152943 +vn 0.572664 -0.601013 0.557530 +vn 0.000007 -0.901678 0.432407 +vn 0.349988 -0.876716 0.329965 +vn 0.572664 -0.601013 0.557530 +vn -0.000001 -0.628704 0.777645 +vn 0.000007 -0.901678 0.432407 +vn -0.000001 -0.628704 0.777645 +vn -0.349937 -0.876749 0.329932 +vn 0.000007 -0.901678 0.432407 +vn -0.000001 -0.628704 0.777645 +vn -0.572663 -0.601013 0.557530 +vn -0.349937 -0.876749 0.329932 +vn 0.000100 -0.999986 -0.005271 +vn -0.508441 -0.847324 -0.153394 +vn -0.348404 -0.878452 -0.327012 +vn 0.000100 -0.999986 -0.005271 +vn -0.547998 -0.836479 -0.000145 +vn -0.508441 -0.847324 -0.153394 +vn 0.000100 -0.999986 -0.005271 +vn -0.507268 -0.848108 0.152943 +vn -0.547998 -0.836479 -0.000145 +vn 0.000100 -0.999986 -0.005271 +vn -0.349937 -0.876749 0.329932 +vn -0.507268 -0.848108 0.152943 +vn 0.000100 -0.999986 -0.005271 +vn -0.348404 -0.878452 -0.327012 +vn 0.000008 -0.905055 -0.425295 +vn 0.000100 -0.999986 -0.005271 +vn 0.000007 -0.901678 0.432407 +vn -0.349937 -0.876749 0.329932 +vn 0.000100 -0.999986 -0.005271 +vn 0.349988 -0.876716 0.329965 +vn 0.000007 -0.901678 0.432407 +vn 0.000100 -0.999986 -0.005271 +vn 0.507388 -0.848031 0.152974 +vn 0.349988 -0.876716 0.329965 +vn 0.548154 -0.836378 -0.000145 +vn 0.507388 -0.848031 0.152974 +vn 0.000100 -0.999986 -0.005271 +vn 0.000100 -0.999986 -0.005271 +vn 0.508569 -0.847241 -0.153429 +vn 0.548154 -0.836378 -0.000145 +vn 0.348462 -0.878415 -0.327051 +vn 0.508569 -0.847241 -0.153429 +vn 0.000100 -0.999986 -0.005271 +vn 0.000100 -0.999986 -0.005271 +vn 0.000008 -0.905055 -0.425295 +vn 0.348462 -0.878415 -0.327051 + +# triangles: +g Triangle Tool 19 +usemtl steel +s 0 +f 3/1/1 1/2/2 2/3/3 +g Triangle Tool 20 +usemtl steel +f 2/4/4 4/5/5 5/6/6 +f 2/7/7 5/8/8 3/9/9 +g Triangle Tool 21 +usemtl steel +f 8/10/10 6/11/11 7/12/12 +f 4/13/13 6/14/14 8/15/15 +f 4/16/16 8/17/17 9/18/18 +f 4/19/19 9/20/20 5/21/21 +g Triangle Tool 22 +usemtl steel +f 10/22/22 9/23/23 8/24/24 +f 8/25/25 7/26/26 11/27/27 +f 8/28/28 11/29/29 10/30/30 +g Triangle Tool 19 - Mirror +usemtl steel +f 3/31/31 12/32/32 1/33/33 +g Triangle Tool 20 - Mirror +usemtl steel +f 12/34/34 5/35/35 13/36/36 +f 12/37/37 3/38/38 5/39/39 +g Triangle Tool 21 - Mirror +usemtl steel +f 16/40/40 15/41/41 14/42/42 +f 13/43/43 16/44/44 14/45/45 +f 13/46/46 9/47/47 16/48/48 +f 13/49/49 5/50/50 9/51/51 +g Triangle Tool 22 - Mirror +usemtl steel +f 10/52/52 16/53/53 9/54/54 +f 16/55/55 11/56/56 15/57/57 +f 16/58/58 10/59/59 11/60/60 +g Triangle Tool 19 - Mirror +usemtl steel +s 1 +f 17/61/61 2/62/62 1/63/63 +g Triangle Tool 20 - Mirror +usemtl steel +f 2/64/64 18/65/65 4/66/66 +f 2/67/67 17/68/68 18/69/69 +g Triangle Tool 21 - Mirror +usemtl steel +f 20/70/70 19/71/71 6/72/72 +f 4/73/73 20/74/74 6/75/75 +f 4/76/76 21/77/77 20/78/78 +f 4/79/79 18/80/80 21/81/81 +g Triangle Tool 22 - Mirror +usemtl steel +f 22/82/82 20/83/83 21/84/84 +f 20/85/85 23/86/86 19/87/87 +f 20/88/88 22/89/89 23/90/90 +g Triangle Tool 19 - Mirror - Mirror +usemtl steel +f 17/91/91 1/92/92 12/93/93 +g Triangle Tool 20 - Mirror - Mirror +usemtl steel +f 12/94/94 24/95/95 18/96/96 +f 12/97/97 18/98/98 17/99/99 +g Triangle Tool 21 - Mirror - Mirror +usemtl steel +f 26/100/100 14/101/101 25/102/102 +f 24/103/103 14/104/104 26/105/105 +f 24/106/106 26/107/107 21/108/108 +f 24/109/109 21/110/110 18/111/111 +g Triangle Tool 22 - Mirror - Mirror +usemtl steel +f 22/112/112 21/113/113 26/114/114 +f 26/115/115 25/116/116 23/117/117 +f 26/118/118 23/119/119 22/120/120 +g Triangle Tool 23 +usemtl steel +s 2 +f 29/121/121 28/122/122 27/123/123 +f 30/124/124 29/125/125 27/126/126 +f 30/127/127 27/128/128 6/129/129 +f 6/130/130 19/131/131 31/132/132 +f 31/133/133 30/134/134 6/135/135 +g Triangle Tool 24 +usemtl steel +f 29/136/136 32/137/137 33/138/138 +f 29/139/139 33/140/140 28/141/141 +g Triangle Tool 25 +usemtl steel +f 32/142/142 29/143/143 30/144/144 +f 34/145/145 32/146/146 30/147/147 +g Triangle Tool 26 +usemtl steel +f 34/148/148 30/149/149 31/150/150 +f 35/151/151 34/152/152 31/153/153 +g Triangle Tool 28 +usemtl steel +f 31/154/154 19/155/155 23/156/156 +f 36/157/157 31/158/158 23/159/159 +g Triangle Tool 29 +usemtl steel +f 37/160/160 35/161/161 31/162/162 +f 36/163/163 37/164/164 31/165/165 +g Triangle Tool 33 +usemtl steel +f 33/166/166 32/167/167 38/168/168 +g Triangle Tool 34 +usemtl steel +f 38/169/169 32/170/170 34/171/171 +f 39/172/172 38/173/173 34/174/174 +f 39/175/175 34/176/176 35/177/177 +f 39/178/178 35/179/179 37/180/180 +g Triangle Tool 23 - Mirror +usemtl steel +f 42/181/181 27/182/182 28/183/183 +f 43/184/184 27/185/185 42/186/186 +f 43/187/187 6/188/188 27/189/189 +f 6/190/190 44/191/191 40/192/192 +f 44/193/193 6/194/194 43/195/195 +g Triangle Tool 24 - Mirror +usemtl steel +f 42/196/196 33/197/197 45/198/198 +f 42/199/199 28/200/200 33/201/201 +g Triangle Tool 25 - Mirror +usemtl steel +f 45/202/202 43/203/203 42/204/204 +f 46/205/205 43/206/206 45/207/207 +g Triangle Tool 26 - Mirror +usemtl steel +f 46/208/208 44/209/209 43/210/210 +f 47/211/211 44/212/212 46/213/213 +g Triangle Tool 28 - Mirror +usemtl steel +f 44/214/214 41/215/215 40/216/216 +f 48/217/217 41/218/218 44/219/219 +g Triangle Tool 29 - Mirror +usemtl steel +f 49/220/220 44/221/221 47/222/222 +f 48/223/223 44/224/224 49/225/225 +g Triangle Tool 33 - Mirror +usemtl steel +f 33/226/226 38/227/227 45/228/228 +g Triangle Tool 34 - Mirror +usemtl steel +f 38/229/229 46/230/230 45/231/231 +f 39/232/232 46/233/233 38/234/234 +f 39/235/235 47/236/236 46/237/237 +f 39/238/238 49/239/239 47/240/240 +g Triangle Tool 23 - Mirror +usemtl steel +f 53/241/241 51/242/242 52/243/243 +f 54/244/244 51/245/245 53/246/246 +f 54/247/247 14/248/248 51/249/249 +f 14/250/250 55/251/251 50/252/252 +f 55/253/253 14/254/254 54/255/255 +g Triangle Tool 24 - Mirror +usemtl steel +f 53/256/256 57/257/257 56/258/258 +f 53/259/259 52/260/260 57/261/261 +g Triangle Tool 25 - Mirror +usemtl steel +f 56/262/262 54/263/263 53/264/264 +f 58/265/265 54/266/266 56/267/267 +g Triangle Tool 26 - Mirror +usemtl steel +f 58/268/268 55/269/269 54/270/270 +f 59/271/271 55/272/272 58/273/273 +g Triangle Tool 28 - Mirror +usemtl steel +f 55/274/274 23/275/275 50/276/276 +f 36/277/277 23/278/278 55/279/279 +g Triangle Tool 29 - Mirror +usemtl steel +f 37/280/280 55/281/281 59/282/282 +f 36/283/283 55/284/284 37/285/285 +g Triangle Tool 33 - Mirror +usemtl steel +f 57/286/286 60/287/287 56/288/288 +g Triangle Tool 34 - Mirror +usemtl steel +f 60/289/289 58/290/290 56/291/291 +f 39/292/292 58/293/293 60/294/294 +f 39/295/295 59/296/296 58/297/297 +f 39/298/298 37/299/299 59/300/300 +g Triangle Tool 23 - Mirror - Mirror +usemtl steel +f 62/301/301 52/302/302 51/303/303 +f 63/304/304 62/305/305 51/306/306 +f 63/307/307 51/308/308 14/309/309 +f 14/310/310 61/311/311 64/312/312 +f 64/313/313 63/314/314 14/315/315 +g Triangle Tool 24 - Mirror - Mirror +usemtl steel +f 62/316/316 65/317/317 57/318/318 +f 62/319/319 57/320/320 52/321/321 +g Triangle Tool 25 - Mirror - Mirror +usemtl steel +f 65/322/322 62/323/323 63/324/324 +f 66/325/325 65/326/326 63/327/327 +g Triangle Tool 26 - Mirror - Mirror +usemtl steel +f 66/328/328 63/329/329 64/330/330 +f 67/331/331 66/332/332 64/333/333 +g Triangle Tool 28 - Mirror - Mirror +usemtl steel +f 64/334/334 61/335/335 41/336/336 +f 48/337/337 64/338/338 41/339/339 +g Triangle Tool 29 - Mirror - Mirror +usemtl steel +f 49/340/340 67/341/341 64/342/342 +f 48/343/343 49/344/344 64/345/345 +g Triangle Tool 33 - Mirror - Mirror +usemtl steel +f 57/346/346 65/347/347 60/348/348 +g Triangle Tool 34 - Mirror - Mirror +usemtl steel +f 60/349/349 65/350/350 66/351/351 +f 39/352/352 60/353/353 66/354/354 +f 39/355/355 66/356/356 67/357/357 +f 39/358/358 67/359/359 49/360/360 +g Cylinder 1 +usemtl leather +s 3 +f 68/361/361 69/362/362 81/363/363 +f 68/364/364 81/365/365 80/366/366 +f 69/367/367 70/368/368 81/369/369 +f 81/370/370 70/371/371 82/372/372 +f 70/373/373 71/374/374 83/375/375 +f 70/376/376 83/377/377 82/378/378 +f 71/379/379 72/380/380 83/381/381 +f 83/382/382 72/383/383 84/384/384 +f 72/385/385 73/386/386 85/387/387 +f 72/388/388 85/389/389 84/390/390 +f 73/391/391 74/392/392 85/393/393 +f 85/394/394 74/395/395 86/396/396 +f 74/397/397 75/398/398 87/399/399 +f 74/400/400 87/401/401 86/402/402 +f 75/403/403 76/404/404 87/405/405 +f 87/406/406 76/407/407 88/408/408 +f 76/409/409 77/410/410 89/411/411 +f 76/412/412 89/413/413 88/414/414 +f 77/415/415 78/416/416 89/417/417 +f 89/418/418 78/419/419 90/420/420 +f 78/421/421 79/422/422 91/423/423 +f 78/424/424 91/425/425 90/426/426 +f 79/427/427 68/428/428 91/429/429 +f 91/430/430 68/431/431 80/432/432 +g Triangle Tool 1 +usemtl steel +f 72/433/433 93/434/434 92/435/435 +f 72/436/436 71/437/437 93/438/438 +f 71/439/439 94/440/440 93/441/441 +f 71/442/442 70/443/443 94/444/444 +f 70/445/445 95/446/446 94/447/447 +f 70/448/448 69/449/449 95/450/450 +f 73/451/451 92/452/452 96/453/453 +f 73/454/454 72/455/455 92/456/456 +f 74/457/457 96/458/458 97/459/459 +f 74/460/460 73/461/461 96/462/462 +f 69/463/463 98/464/464 95/465/465 +f 69/466/466 68/467/467 98/468/468 +f 75/469/469 97/470/470 99/471/471 +f 75/472/472 74/473/473 97/474/474 +f 68/475/475 100/476/476 98/477/477 +f 68/478/478 79/479/479 100/480/480 +f 79/481/481 101/482/482 100/483/483 +f 79/484/484 78/485/485 101/486/486 +f 76/487/487 99/488/488 102/489/489 +f 76/490/490 75/491/491 99/492/492 +f 78/493/493 103/494/494 101/495/495 +f 78/496/496 77/497/497 103/498/498 +f 77/499/499 102/500/500 103/501/501 +f 77/502/502 76/503/503 102/504/504 +f 92/505/505 105/506/506 104/507/507 +f 92/508/508 93/509/509 105/510/510 +f 93/511/511 106/512/512 105/513/513 +f 93/514/514 94/515/515 106/516/516 +f 94/517/517 107/518/518 106/519/519 +f 94/520/520 95/521/521 107/522/522 +f 96/523/523 104/524/524 108/525/525 +f 96/526/526 92/527/527 104/528/528 +f 97/529/529 108/530/530 109/531/531 +f 97/532/532 96/533/533 108/534/534 +f 95/535/535 110/536/536 107/537/537 +f 95/538/538 98/539/539 110/540/540 +f 99/541/541 109/542/542 111/543/543 +f 99/544/544 97/545/545 109/546/546 +f 98/547/547 112/548/548 110/549/549 +f 98/550/550 100/551/551 112/552/552 +f 100/553/553 113/554/554 112/555/555 +f 100/556/556 101/557/557 113/558/558 +f 102/559/559 111/560/560 114/561/561 +f 102/562/562 99/563/563 111/564/564 +f 101/565/565 115/566/566 113/567/567 +f 101/568/568 103/569/569 115/570/570 +f 103/571/571 114/572/572 115/573/573 +f 103/574/574 102/575/575 114/576/576 +f 104/577/577 117/578/578 116/579/579 +f 104/580/580 105/581/581 117/582/582 +f 105/583/583 118/584/584 117/585/585 +f 105/586/586 106/587/587 118/588/588 +f 106/589/589 119/590/590 118/591/591 +f 106/592/592 107/593/593 119/594/594 +f 108/595/595 116/596/596 120/597/597 +f 108/598/598 104/599/599 116/600/600 +f 109/601/601 120/602/602 121/603/603 +f 109/604/604 108/605/605 120/606/606 +f 107/607/607 122/608/608 119/609/609 +f 107/610/610 110/611/611 122/612/612 +f 111/613/613 121/614/614 123/615/615 +f 111/616/616 109/617/617 121/618/618 +f 110/619/619 124/620/620 122/621/621 +f 110/622/622 112/623/623 124/624/624 +f 112/625/625 125/626/626 124/627/627 +f 112/628/628 113/629/629 125/630/630 +f 114/631/631 123/632/632 126/633/633 +f 114/634/634 111/635/635 123/636/636 +f 113/637/637 127/638/638 125/639/639 +f 113/640/640 115/641/641 127/642/642 +f 115/643/643 126/644/644 127/645/645 +f 115/646/646 114/647/647 126/648/648 +s 4 +f 116/649/649 129/650/650 128/651/651 +f 116/652/652 117/653/653 129/654/654 +f 117/655/655 130/656/656 129/657/657 +f 117/658/658 118/659/659 130/660/660 +f 118/661/661 131/662/662 130/663/663 +f 118/664/664 119/665/665 131/666/666 +f 120/667/667 128/668/668 132/669/669 +f 120/670/670 116/671/671 128/672/672 +f 121/673/673 132/674/674 133/675/675 +f 121/676/676 120/677/677 132/678/678 +f 119/679/679 134/680/680 131/681/681 +f 119/682/682 122/683/683 134/684/684 +f 123/685/685 133/686/686 135/687/687 +f 123/688/688 121/689/689 133/690/690 +f 122/691/691 136/692/692 134/693/693 +f 122/694/694 124/695/695 136/696/696 +f 124/697/697 137/698/698 136/699/699 +f 124/700/700 125/701/701 137/702/702 +f 126/703/703 135/704/704 138/705/705 +f 126/706/706 123/707/707 135/708/708 +f 125/709/709 139/710/710 137/711/711 +f 125/712/712 127/713/713 139/714/714 +f 127/715/715 138/716/716 139/717/717 +f 127/718/718 126/719/719 138/720/720 +f 128/721/721 141/722/722 140/723/723 +f 128/724/724 129/725/725 141/726/726 +f 129/727/727 142/728/728 141/729/729 +f 129/730/730 130/731/731 142/732/732 +f 130/733/733 143/734/734 142/735/735 +f 130/736/736 131/737/737 143/738/738 +f 132/739/739 140/740/740 144/741/741 +f 132/742/742 128/743/743 140/744/744 +f 133/745/745 144/746/746 145/747/747 +f 133/748/748 132/749/749 144/750/750 +f 131/751/751 146/752/752 143/753/753 +f 131/754/754 134/755/755 146/756/756 +f 135/757/757 145/758/758 147/759/759 +f 135/760/760 133/761/761 145/762/762 +f 134/763/763 148/764/764 146/765/765 +f 134/766/766 136/767/767 148/768/768 +f 136/769/769 149/770/770 148/771/771 +f 136/772/772 137/773/773 149/774/774 +f 138/775/775 147/776/776 150/777/777 +f 138/778/778 135/779/779 147/780/780 +f 137/781/781 151/782/782 149/783/783 +f 137/784/784 139/785/785 151/786/786 +f 139/787/787 150/788/788 151/789/789 +f 139/790/790 138/791/791 150/792/792 +g Triangle Tool 3 +usemtl steel +f 152/793/793 144/794/794 140/795/795 +g Triangle Tool 4 +usemtl steel +f 152/796/796 145/797/797 144/798/798 +g Triangle Tool 5 +usemtl steel +f 152/799/799 147/800/800 145/801/801 +g Triangle Tool 6 +usemtl steel +f 152/802/802 150/803/803 147/804/804 +g Triangle Tool 7 +usemtl steel +f 152/805/805 140/806/806 141/807/807 +g Triangle Tool 8 +usemtl steel +f 152/808/808 151/809/809 150/810/810 +g Triangle Tool 9 +usemtl steel +f 152/811/811 149/812/812 151/813/813 +g Triangle Tool 10 +usemtl steel +f 152/814/814 148/815/815 149/816/816 +g Triangle Tool 11 +usemtl steel +f 146/817/817 148/818/818 152/819/819 +g Triangle Tool 12 +usemtl steel +f 152/820/820 143/821/821 146/822/822 +g Triangle Tool 13 +usemtl steel +f 142/823/823 143/824/824 152/825/825 +g Triangle Tool 14 +usemtl steel +f 152/826/826 141/827/827 142/828/828 + +g \ No newline at end of file diff --git a/entity.cpp b/entity.cpp index 66365e7..efb9f9a 100644 --- a/entity.cpp +++ b/entity.cpp @@ -4,6 +4,13 @@ #include "material.h" #include "mesh.h" +Entity::Entity(Mesh* myMesh, Material* myMat) : mesh(myMesh), mat(myMat) {} + +Entity::Entity(Entity* myParent, Mesh* myMesh, Material* myMat) : mesh(myMesh), mat(myMat) +{ + myParent->addChild(this); +} + void Entity::draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix) { glm::mat4 modelViewMatrix = viewMatrix * modelMatrix; @@ -32,3 +39,8 @@ Material* Entity::getMaterial() { return mat; } + +void Entity::addChild(Entity* child) +{ + children.push_back(child); +} diff --git a/entity.h b/entity.h index b439b5b..5b385e2 100644 --- a/entity.h +++ b/entity.h @@ -2,6 +2,7 @@ #define ENTITY_H #include "glm/mat4x4.hpp" +#include class Mesh; class Material; @@ -10,16 +11,21 @@ class Shader; class Entity { protected: - Entity* parent; + std::vector children; Mesh* mesh; Material* mat; glm::mat4 modelMatrix; public: - Entity(Entity* myParent, Mesh* myMesh, Material* myMat) : parent(myParent), mesh(myMesh), mat(myMat) {} + Entity(Mesh* myMesh, Material* myMat); + /** + * NULL Material is acceptable for this constructor + */ + Entity(Entity* myParent, Mesh* myMesh, Material* myMat); virtual void draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix); glm::mat4* getTransform(); Shader* getShader(); Material* getMaterial(); + void addChild(Entity* child); }; #endif // ENTITY_H diff --git a/material.h b/material.h index 7aea868..4d72714 100644 --- a/material.h +++ b/material.h @@ -11,7 +11,6 @@ public: Shader* getShader() {return shader;} virtual void bindAttributes() = 0; - virtual bool requireLights() {return true;} protected: Shader* shader; diff --git a/module.h b/module.h new file mode 100644 index 0000000..0ed64cf --- /dev/null +++ b/module.h @@ -0,0 +1,13 @@ +#ifndef MODULE +#define MODULE + +class Camera; + +class Module +{ +public: + virtual void render(Camera* myCamera) = 0; +}; + +#endif // MODULE + diff --git a/myglwidget.cpp b/myglwidget.cpp index d867dda..5ff3575 100644 --- a/myglwidget.cpp +++ b/myglwidget.cpp @@ -1,12 +1,14 @@ #include #include "myglwidget.h" -#include "scene.h" #include "glassert.h" #include "camera.h" #include "sphere.h" #include "phongmaterial.h" -#include "skybox.h" +#include "skyboxmodule.h" +#include "entity.h" +#include "phongmodule.h" #include "utils.h" +#include "lights.h" #include "texture.h" #include "gridmesh.h" #include "sparrowrenderer.h" @@ -31,42 +33,47 @@ MyGLWidget::~MyGLWidget() delete(controller); } -Scene* MyGLWidget::buildScene() +void MyGLWidget::buildScene() { - Scene* scene = new Scene(); - - Camera* cam = new Camera(width(), height()); + // init camera + Camera* cam = renderer->getCamera(); cam->moveTo(glm::vec3(0, 0, 3)); cam->lookAt(glm::vec2(0, 0)); - scene->setCamera(cam); + // create skybox module std::string filenames[6] = { "../data/skybox_ft", "../data/skybox_bk", "../data/skybox_up", "../data/skybox_dn", "../data/skybox_lf", "../data/skybox_rt" }; - SkyBox* skybox = new SkyBox(filenames); - scene->addEntity(skybox); + Texture* skyboxCubemap = new Texture(filenames); + SkyboxModule* skybox = new SkyboxModule(skyboxCubemap); + // create a mesh //Mesh* myGrid = new GridMesh(10, 10, true); //new Sphere(2); - Mesh* myGrid = Utils::loadOBJ("../data/sphere.obj"); + Mesh* myGrid = Utils::loadOBJ("../data/sword.obj"); myGrid->initGL(); + // std::string vertSource = Utils::fileToString("../phong.vert"); std::string fragSource = Utils::fileToString("../phong.frag"); - Shader* shader = new Shader(vertSource, fragSource); - PhongMaterial* mat = new PhongMaterial(shader, glm::vec3(1), glm::vec3(1), 20.0f); + Shader* phongShader = new Shader(vertSource, fragSource); + PhongMaterial* mat = new PhongMaterial(phongShader, glm::vec3(1), glm::vec3(1), 20.0f); Texture* tex = new Texture("../data/noise.png"); mat->setTexture(tex); - Entity* myEntity = new Entity(NULL, myGrid, mat); + Entity* myEntity = new Entity(myGrid, mat); glm::mat4* transform = myEntity->getTransform(); - *transform = glm::translate(glm::rotate(glm::scale(*transform, glm::vec3(0.1f)), 3.1416f/2, glm::vec3(-1, 0, 0)), glm::vec3(-0.5f, -0.5f, 0)); - scene->addEntity(myEntity); + *transform = glm::scale(*transform, glm::vec3(0.01f)); - scene->addDirectionnalLight(glm::vec3(6, 4, -4), glm::vec3(0.7f, 0.6f, 0.4f)); // sun + Lights* directionnalLights = new Lights(); + directionnalLights->addLight(glm::vec3(6, 4, -4), glm::vec3(0.7f, 0.6f, 0.4f)); // sun - return scene; + PhongModule* myPhongModule = new PhongModule(directionnalLights, new Lights(), phongShader); + myPhongModule->addEntity(myEntity); + + renderer->addModule(skybox); + renderer->addModule(myPhongModule); } void MyGLWidget::initializeGL() @@ -74,10 +81,9 @@ void MyGLWidget::initializeGL() if(renderer != NULL) delete(renderer); renderer = new SparrowRenderer(width(), height()); - Scene* scene = buildScene(); + buildScene(); controller = new FocusController(new glm::vec3(0)); - renderer->setScene(scene); - controller->setScene(scene); + controller->setCamera(renderer->getCamera()); } void MyGLWidget::resizeGL(int width, int height) diff --git a/myglwidget.h b/myglwidget.h index a0c1491..8cf29cb 100644 --- a/myglwidget.h +++ b/myglwidget.h @@ -3,7 +3,6 @@ #include -class Scene; class SparrowRenderer; class SceneController; @@ -25,7 +24,7 @@ public: protected: void initializeGL(); - Scene* buildScene(); + void buildScene(); void resizeGL(int width, int height); void paintGL(); diff --git a/phongmodule.cpp b/phongmodule.cpp new file mode 100644 index 0000000..564090a --- /dev/null +++ b/phongmodule.cpp @@ -0,0 +1,17 @@ +#include "phongmodule.h" +#include "lights.h" + +PhongModule::PhongModule(Lights* myDirLights, Lights* myPointLights, Shader* phongShader) : + BasicModule(phongShader), dirLights(myDirLights), pointLights(myPointLights) +{ + nbDirLightsLocation = shader->getLocation("nbDirLights"); + dirLightsLocation = shader->getLocation("dirLights"); + nbPointLightsLocation = shader->getLocation("nbPointLights"); + pointLightsLocation = shader->getLocation("pointLights"); +} + +void PhongModule::bindModule() +{ + dirLights->bind(dirLightsLocation, nbDirLightsLocation, shader); + pointLights->bind(pointLightsLocation, nbPointLightsLocation, shader); +} diff --git a/phongmodule.h b/phongmodule.h new file mode 100644 index 0000000..42bb885 --- /dev/null +++ b/phongmodule.h @@ -0,0 +1,24 @@ +#ifndef PHONGMODULE_H +#define PHONGMODULE_H + +#include "basicmodule.h" +#include "phongmaterial.h" +#include "mesh.h" +#include + +class Lights; + +class PhongModule : public BasicModule +{ + Lights* dirLights; + Lights* pointLights; + GLuint nbDirLightsLocation; + GLuint dirLightsLocation; + GLuint nbPointLightsLocation; + GLuint pointLightsLocation; +public: + PhongModule(Lights* myDirLights, Lights* myPointLights, Shader* phongShader); + virtual void bindModule(); +}; + +#endif // PHONGMODULE_H diff --git a/scene.cpp b/scene.cpp deleted file mode 100644 index 7ec04cc..0000000 --- a/scene.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "scene.h" -#include "glassert.h" -#include -#include -#include "camera.h" -#include "entity.h" -#include "shader.h" -#include "material.h" - -// MAIN METHODS - -Scene::~Scene() -{ - for(Entity* e : entities) - delete(e); -} - -void Scene::drawAll() -{ - glm::mat4 viewMatrix = camera->getViewMatrix(); - glm::mat4 projectionMatrix = camera->getProjectionMatrix(); - for(Entity* e : entities) - { - Shader* shader = e->getShader(); - shader->bind(); - if(e->getMaterial()->requireLights()) - { - directionnalLights.bind(shader->getLocation("dirLights"), shader->getLocation("nbDirLights"), shader); - pointLights.bind(shader->getLocation("pointLights"), shader->getLocation("nbPointLights"), shader); - } - e->draw(viewMatrix, projectionMatrix); - } -} - -// ENTITIES - -void Scene::addEntity(Entity* parent, Mesh* mesh, Material* mat) -{ - entities.push_back(new Entity(parent, mesh, mat)); -} - -void Scene::addEntity(Mesh* mesh, Material* mat) -{ - entities.push_back(new Entity(NULL, mesh, mat)); -} - -void Scene::addEntity(Entity* entity) -{ - entities.push_back(entity); -} - -// LIGHTS - -void Scene::addDirectionnalLight(const glm::vec3 &position, const glm::vec3 &color) -{ - directionnalLights.addLight(position, color); -} - -void Scene::addPointLight(const glm::vec3 &position, const glm::vec3 &color) -{ - pointLights.addLight(position, color); -} - -// CAMERA - -void Scene::setCamera(Camera* myCamera) -{ - camera = myCamera; -} - -Camera* Scene::getCamera() -{ - return camera; -} diff --git a/scene.h b/scene.h deleted file mode 100644 index b79c84c..0000000 --- a/scene.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef SCENE_H -#define SCENE_H - -#include "lights.h" -#include -#include - -class Entity; -class Camera; -class Mesh; -class Material; -class Shader; - -class Scene -{ - Lights directionnalLights; - Lights pointLights; - std::vector entities; - Camera* camera; - -public: - // main methods - Scene() : camera(NULL) {} - ~Scene(); - void drawAll(); - - // entities - void addEntity(Entity* parent, Mesh* mesh, Material* mat); - void addEntity(Mesh* mesh, Material* mat); - void addEntity(Entity* entity); - - // lights - void addDirectionnalLight(const glm::vec3 &position, const glm::vec3 &color); - void addPointLight(const glm::vec3 &position, const glm::vec3 &color); - - // camera - void setCamera(Camera* myCamera); - Camera* getCamera(); -}; - -#endif // SCENE_H diff --git a/scenecontroller.cpp b/scenecontroller.cpp index 78ef202..2cae2fc 100644 --- a/scenecontroller.cpp +++ b/scenecontroller.cpp @@ -1,12 +1,10 @@ #include "scenecontroller.h" -#include "scene.h" #include "camera.h" #include -void SceneController::setScene(Scene* myScene) +void SceneController::setCamera(Camera* myCamera) { - scene = myScene; - camera = scene->getCamera(); + camera = myCamera; } void SceneController::mouseEvent(int button, bool state) diff --git a/scenecontroller.h b/scenecontroller.h index fe025ff..faa516a 100644 --- a/scenecontroller.h +++ b/scenecontroller.h @@ -3,19 +3,17 @@ #include -class Scene; class Camera; class SceneController { protected: Camera* camera; - Scene* scene; int grabbed; public: - SceneController() : camera(NULL), scene(NULL), grabbed(0) {} + SceneController() : camera(NULL), grabbed(0) {} - void setScene(Scene* myScene); + void setCamera(Camera* myCamera); virtual void mouseMove(int dx, int dy) {} virtual void mouseEvent(int button, bool state); virtual void keyEvent(int key, bool state) {} diff --git a/shader.cpp b/shader.cpp index 539c9c5..6992ef7 100644 --- a/shader.cpp +++ b/shader.cpp @@ -31,8 +31,6 @@ Shader::Shader(const std::string &vertexSource, const std::string &fragmentSourc printProgramInfoLog(program); program = 0; } - else - std::cout << "Shader successfully compiled" << std::endl; glAssert(glDetachShader(program, vertexShaderId)); glAssert(glDetachShader(program, fragmentShaderId)); diff --git a/skybox.h b/skybox.h deleted file mode 100644 index 6d8739b..0000000 --- a/skybox.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SKYBOX_H -#define SKYBOX_H - -#include "entity.h" -#include -#include - -class SkyBox : public Entity -{ -private: - static const GLfloat skyboxVertices[]; - static const std::string vertSource; - static const std::string fragSource; - GLuint vao; - GLuint vbo; -public: - SkyBox(const std::string filename[6]); - ~SkyBox(); - virtual void draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix); -}; - -#endif // SKYBOX_H diff --git a/skyboxmaterial.cpp b/skyboxmaterial.cpp deleted file mode 100644 index e0ae6a8..0000000 --- a/skyboxmaterial.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "skyboxmaterial.h" -#include "texture.h" - -SkyBoxMaterial::SkyBoxMaterial(Shader* myShader, const std::string filenames[6]) : Material(myShader) -{ - skyboxTex = new Texture(filenames); -} - -void SkyBoxMaterial::bindAttributes() -{ - skyboxTex->bind(0); -} - -bool SkyBoxMaterial::requireLights() -{ - return false; -} diff --git a/skyboxmaterial.h b/skyboxmaterial.h deleted file mode 100644 index 753f0de..0000000 --- a/skyboxmaterial.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SKYBOXMATERIAL_H -#define SKYBOXMATERIAL_H - -#include "material.h" - -class Texture; - -class SkyBoxMaterial : public Material -{ -public: - SkyBoxMaterial(Shader* myShader, const std::string filenames[6]); - virtual void bindAttributes(); - virtual bool requireLights(); - -private: - Texture* skyboxTex; -}; - -#endif // SKYBOXMATERIAL_H diff --git a/skybox.cpp b/skyboxmodule.cpp similarity index 75% rename from skybox.cpp rename to skyboxmodule.cpp index 5267dbf..d017241 100644 --- a/skybox.cpp +++ b/skyboxmodule.cpp @@ -1,15 +1,16 @@ -#include "skybox.h" -#include "glassert.h" +#include +#include +#include "skyboxmodule.h" +#include "entity.h" #include "shader.h" -#include "material.h" -#include "skyboxmaterial.h" -#include "glm/glm.hpp" -#include "glm/ext.hpp" +#include "texture.h" +#include "camera.h" +#include "glassert.h" -SkyBox::SkyBox(const std::string filename[6]) : Entity(NULL, NULL, NULL) +SkyboxModule::SkyboxModule(Texture* myCubeMap) { - Shader* shader = new Shader(vertSource, fragSource); - mat = new SkyBoxMaterial(shader, filename); + shader = new Shader(vertSource, fragSource); + cubeMap = myCubeMap; // set up vao glAssert(glGenVertexArrays(1, &vao)); @@ -20,27 +21,29 @@ SkyBox::SkyBox(const std::string filename[6]) : Entity(NULL, NULL, NULL) glAssert(glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float)*3, NULL)); glAssert(glEnableVertexAttribArray(0)); glAssert(glBindVertexArray(0)); + + mvpLocation = shader->getLocation("MVP"); } -SkyBox::~SkyBox() +SkyboxModule::~SkyboxModule() { glAssert(glDeleteVertexArrays(1, &vao)); glAssert(glDeleteBuffers(1, &vbo)); } -void SkyBox::draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix) +void SkyboxModule::render(Camera* myCamera) { - glm::mat4 mvp = projectionMatrix * glm::mat4(glm::mat3(viewMatrix)); + shader->bind(); + glm::mat4 mvp = myCamera->getProjectionMatrix() * glm::mat4(glm::mat3(myCamera->getViewMatrix())); glAssert(glDepthMask(GL_FALSE)); - mat->bindAttributes(); - Shader* shader = mat->getShader(); - shader->bindMatrix(shader->getLocation("MVP"), mvp); + cubeMap->bind(0); + shader->bindMatrix(mvpLocation, mvp); glAssert(glBindVertexArray(vao)); glAssert(glDrawArrays(GL_TRIANGLES, 0, 36)); glAssert(glDepthMask(GL_TRUE)); } -const GLfloat SkyBox::skyboxVertices[] = { +const GLfloat SkyboxModule::skyboxVertices[] = { -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, @@ -84,7 +87,7 @@ const GLfloat SkyBox::skyboxVertices[] = { 1.0f, -1.0f, 1.0f }; -const std::string SkyBox::vertSource = +const std::string SkyboxModule::vertSource = "#version 330 core\n\ layout(location = 0)in vec3 inPosition;\n\ out vec3 varTexCoord;\n\ @@ -95,7 +98,7 @@ const std::string SkyBox::vertSource = varTexCoord = inPosition;\n\ }\n"; -const std::string SkyBox::fragSource = +const std::string SkyboxModule::fragSource = "#version 330 core\n\ in vec3 varTexCoord;\n\ out vec4 outColor;\n\ diff --git a/skyboxmodule.h b/skyboxmodule.h new file mode 100644 index 0000000..1f2dacf --- /dev/null +++ b/skyboxmodule.h @@ -0,0 +1,28 @@ +#ifndef SKYBOXMODULE_H +#define SKYBOXMODULE_H + +#include +#include "module.h" +#include + +class Shader; +class Texture; + +class SkyboxModule : public Module +{ + static const GLfloat skyboxVertices[]; + static const std::string vertSource; + static const std::string fragSource; + + GLuint vao; + GLuint vbo; + GLuint mvpLocation; + Shader* shader; + Texture* cubeMap; +public: + SkyboxModule(Texture* myCubeMap); + ~SkyboxModule(); + virtual void render(Camera* myCamera); +}; + +#endif // SKYBOXMODULE_H diff --git a/sparrowRenderer.pro b/sparrowRenderer.pro index 8a8c13c..b0004d5 100644 --- a/sparrowRenderer.pro +++ b/sparrowRenderer.pro @@ -27,20 +27,20 @@ SOURCES += main.cpp\ shader.cpp \ mesh.cpp \ camera.cpp \ - scene.cpp \ gridmesh.cpp \ texture.cpp \ phongmaterial.cpp \ scenecontroller.cpp \ sphere.cpp \ - skyboxmaterial.cpp \ - skybox.cpp \ entity.cpp \ utils.cpp \ lights.cpp \ sparrowrenderer.cpp \ resourcebase.cpp \ - focuscontroller.cpp + focuscontroller.cpp \ + phongmodule.cpp \ + skyboxmodule.cpp \ + basicmodule.cpp HEADERS += mainwindow.h \ myglwidget.h \ @@ -48,21 +48,22 @@ HEADERS += mainwindow.h \ mesh.h \ camera.h \ glassert.h \ - scene.h \ material.h \ gridmesh.h \ texture.h \ phongmaterial.h \ scenecontroller.h \ sphere.h \ - skyboxmaterial.h \ - skybox.h \ entity.h \ utils.h \ lights.h \ sparrowrenderer.h \ resourcebase.h \ - focuscontroller.h + focuscontroller.h \ + phongmodule.h \ + skyboxmodule.h \ + basicmodule.h \ + module.h FORMS += mainwindow.ui diff --git a/sparrowrenderer.cpp b/sparrowrenderer.cpp index c10963f..676dbf6 100644 --- a/sparrowrenderer.cpp +++ b/sparrowrenderer.cpp @@ -3,8 +3,9 @@ #include #include "glassert.h" #include "camera.h" +#include "basicmodule.h" -SparrowRenderer::SparrowRenderer(int width, int height) +SparrowRenderer::SparrowRenderer(int width, int height) : camera(width, height) { glewExperimental = GL_TRUE; GLenum err = glewInit(); @@ -30,22 +31,26 @@ SparrowRenderer::SparrowRenderer(int width, int height) glAssert(glViewport(0, 0, width, height)); } -void SparrowRenderer::setScene(Scene* myScene) +void SparrowRenderer::addModule(Module* myModule) { - scene = myScene; + modules.push_back(myModule); +} + +Camera* SparrowRenderer::getCamera() +{ + return &camera; } void SparrowRenderer::resize(int width, int height) { glAssert(glViewport(0, 0, width, height)); - if(scene != NULL) - scene->getCamera()->resize(width, height); + camera.resize(width, height); } void SparrowRenderer::render() { glAssert(glClearColor(0.60, 0.65, 0.75, 1.0)); glAssert(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); - if(scene != NULL) - scene->drawAll(); + for(Module* m : modules) + m->render(getCamera()); } diff --git a/sparrowrenderer.h b/sparrowrenderer.h index 346c75f..e5e9f5f 100644 --- a/sparrowrenderer.h +++ b/sparrowrenderer.h @@ -1,15 +1,19 @@ #ifndef SPARROWRENDERER_H #define SPARROWRENDERER_H -#include "scene.h" +#include +#include "camera.h" + +class Module; class SparrowRenderer { - Scene* scene; - // TODO : data bank + Camera camera; + std::vector modules; public: SparrowRenderer(int width, int height); - void setScene(Scene* myScene); + void addModule(Module* myModule); + Camera* getCamera(); void resize(int width, int height); void render(); };