From 876ec56780985b1d42db9dddc348ee99928ebf02 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Tue, 17 May 2016 15:31:49 +0200 Subject: [PATCH] Started rewriting --- CrystalPoint.vcxproj | 11 +- CrystalPoint.vcxproj.filters | 39 +++- Header.h | 2 + InitState.cpp | 12 + InitState.h | 11 + LoadingState.h | 3 +- Main.cpp | 26 ++- MenuState.h | 6 +- Model.cpp | 80 ++++++- Model.h | 8 +- ModelHandler.cpp | 12 + ModelHandler.h | 8 + ModelInstance.cpp | 10 + ModelInstance.h | 16 ++ ModelLoader.cpp | 32 --- ModelLoader.h | 10 - Player.cpp | 2 +- Player.h | 2 +- SettingsState.cpp | 12 + SettingsState.h | 11 + State.cpp | 28 +++ State.h | 16 ++ StateHandler.cpp | 24 +- StateHandler.h | 9 + WorldState.h | 3 +- models/HANDVAT.png | Bin 0 -> 1411 bytes models/TextureZwaard.mtl | 134 +++++++++++ models/TextureZwaard.obj | 436 +++++++++++++++++++++++++++++++++++ models/ZWAARD.png | Bin 0 -> 1411 bytes 29 files changed, 884 insertions(+), 79 deletions(-) create mode 100644 InitState.cpp create mode 100644 InitState.h create mode 100644 ModelHandler.cpp create mode 100644 ModelHandler.h create mode 100644 ModelInstance.cpp create mode 100644 ModelInstance.h delete mode 100644 ModelLoader.cpp delete mode 100644 ModelLoader.h create mode 100644 SettingsState.cpp create mode 100644 SettingsState.h create mode 100644 models/HANDVAT.png create mode 100644 models/TextureZwaard.mtl create mode 100644 models/TextureZwaard.obj create mode 100644 models/ZWAARD.png diff --git a/CrystalPoint.vcxproj b/CrystalPoint.vcxproj index 87360d9..e67e882 100644 --- a/CrystalPoint.vcxproj +++ b/CrystalPoint.vcxproj @@ -23,6 +23,7 @@ Win32Proj CrystalPoint 8.1 + CrystalPoint @@ -153,13 +154,16 @@ + - + + + @@ -170,14 +174,17 @@ + - + + + diff --git a/CrystalPoint.vcxproj.filters b/CrystalPoint.vcxproj.filters index 675688c..6e949e9 100644 --- a/CrystalPoint.vcxproj.filters +++ b/CrystalPoint.vcxproj.filters @@ -25,14 +25,14 @@ {1be14b84-6fa7-4cfb-94b9-666f3ee14198} + + {1b39afb7-b64b-458a-bba3-755631986211} + Header Files - - Header Files - Header Files @@ -75,14 +75,23 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + Source Files - - Source Files\State - Source Files\State @@ -104,9 +113,6 @@ Source Files\Model - - Source Files\Model - Source Files\Model @@ -125,5 +131,20 @@ Source Files + + Source Files\Model + + + Source Files\Handler + + + Source Files\Handler + + + Source Files\State + + + Source Files\State + \ No newline at end of file diff --git a/Header.h b/Header.h index 8048421..c1a99be 100644 --- a/Header.h +++ b/Header.h @@ -17,4 +17,6 @@ #include #include +#include "Vector.h" + using namespace std; \ No newline at end of file diff --git a/InitState.cpp b/InitState.cpp new file mode 100644 index 0000000..ccaebd6 --- /dev/null +++ b/InitState.cpp @@ -0,0 +1,12 @@ +#include "InitState.h" + + + +InitState::InitState() +{ +} + + +InitState::~InitState() +{ +} diff --git a/InitState.h b/InitState.h new file mode 100644 index 0000000..5537e67 --- /dev/null +++ b/InitState.h @@ -0,0 +1,11 @@ +#pragma once +#include "Header.h" +#include "State.h" + +class InitState : public State +{ +public: + InitState(); + ~InitState(); +}; + diff --git a/LoadingState.h b/LoadingState.h index c4ad570..b4c292f 100644 --- a/LoadingState.h +++ b/LoadingState.h @@ -1,7 +1,8 @@ #pragma once #include "Header.h" +#include "State.h" -class LoadingState +class LoadingState : public State { public: LoadingState(); diff --git a/Main.cpp b/Main.cpp index 69197f5..5e7c269 100644 --- a/Main.cpp +++ b/Main.cpp @@ -1,6 +1,8 @@ #include "Header.h" #include "Model.h" #include "Player.h" +#include "StateHandler.h" +#include "State.h" //Prototypes void bindFuncOpenGL(void); @@ -17,6 +19,7 @@ bool keys[255]; //int currentModel = 0; Player *player; +StateHandler *statehandler; void display() { @@ -29,6 +32,7 @@ void display() glMatrixMode(GL_MODELVIEW); glLoadIdentity(); + /*glRotatef(player.eyes.rotX, 1, 0, 0); glRotatef(player.eyes.rotY, 0, 1, 0); glTranslatef(player.eyes.posX, player.eyes.posY, player.eyes.posZ); @@ -42,7 +46,10 @@ void display() glPopMatrix();*/ //Draw here - player->Draw_Player(); + + statehandler->GetCurrentState()->Display(); + + player->Display(); glutSolidCube(10.0); @@ -67,6 +74,9 @@ void idle() float deltaTime = frameTime - lastFrameTime; lastFrameTime = frameTime; + statehandler->GetCurrentState()->Keyboard(keys); + statehandler->GetCurrentState()->Idle(deltaTime); + float speed = 10; if (keys['a']) move(0, deltaTime*speed, false); @@ -85,12 +95,16 @@ void mousemotion(int x, int y) int dy = y - Height / 2; if ((dx != 0 || dy != 0) && abs(dx) < 400 && abs(dy) < 400) { - player->eyes.rotY += dx / 10.0f; - player->eyes.rotX += dy / 10.0f; + statehandler->GetCurrentState()->MouseMove(x, y, dx, dy); glutWarpPointer(Width / 2, Height / 2); } } +void mouse(int button, int type, int x, int y) +{ + statehandler->GetCurrentState()->MouseClick(button, type, x, y); +} + void keyboard(unsigned char key, int, int) { if (key == 27) @@ -132,10 +146,9 @@ void bindFuncOpenGL() //Keyboard glutKeyboardFunc(keyboard); glutKeyboardUpFunc(keyboardup); - //glutMouseFunc(mousefunc); //Mouse - //glutMouseFunc(mouse); + glutMouseFunc(mouse); glutPassiveMotionFunc(mousemotion); } @@ -186,5 +199,8 @@ void configureOpenGL() void loadModels() { player = new Player(); + statehandler = new StateHandler(); + + statehandler->Navigate(statehandler->WORLD_STATE); //models.push_back(new Model("models/weapons/ZwaardMetTextures/TextureZwaard.obj")); } \ No newline at end of file diff --git a/MenuState.h b/MenuState.h index e3a7426..8a36cc1 100644 --- a/MenuState.h +++ b/MenuState.h @@ -1,10 +1,10 @@ #pragma once #include "Header.h" +#include "State.h" -class MenuState +class MenuState : public State { public: MenuState(); ~MenuState(); -}; - +}; \ No newline at end of file diff --git a/Model.cpp b/Model.cpp index b25e3d4..fe474e3 100644 --- a/Model.cpp +++ b/Model.cpp @@ -3,6 +3,11 @@ #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" +//Prototypes +vector split(string str, string sep); +string replace(string str, string toReplace, string replacement); +string toLower(string data); + Model::Model(string fileName) { std::string dirName = fileName; @@ -112,13 +117,19 @@ Model::Model(string fileName) groups.push_back(currentGroup); } +Model::Model(void) +{ + Model("models/TextureZwaard.obj"); +} Model::~Model(void) { } - - +void Model::AddInstance(ModelInstance* inst) +{ + instances.push_back(inst); +} void Model::draw() { @@ -152,17 +163,30 @@ void Model::draw() } } - glBegin(GL_TRIANGLES); - for (auto &f : g->faces) + for (auto &instance : instances) { - for (auto &v : f.vertices) + + glBegin(GL_TRIANGLES); + for (auto &f : g->faces) { - glNormal3f(normals[v.normal].x, normals[v.normal].y, normals[v.normal].z); - glTexCoord2f(texcoords[v.texcoord].x, texcoords[v.texcoord].y); - glVertex3f(vertices[v.position].x, vertices[v.position].y, vertices[v.position].z); + for (auto &v : f.vertices) + { + glPushMatrix(); + + glTranslatef(instance->translation.x, instance->translation.y, instance->translation.z); + glRotatef(instance->rotation.x, 1, 0, 0); + glRotatef(instance->rotation.y, 0, 1, 0); + glRotatef(instance->rotation.z, 0, 0, 1); + glScalef(instance->scale.x, instance->scale.y, instance->scale.z); + + glNormal3f(normals[v.normal].x, normals[v.normal].y, normals[v.normal].z); + glTexCoord2f(texcoords[v.texcoord].x, texcoords[v.texcoord].y); + glVertex3f(vertices[v.position].x, vertices[v.position].y, vertices[v.position].z); + } } + glEnd(); + } - glEnd(); } } @@ -270,4 +294,40 @@ Model::Texture::Texture(const std::string & fileName) void Model::Texture::bind() { glBindTexture(GL_TEXTURE_2D, index); -} \ No newline at end of file +} + +string replace(string str, string toReplace, string replacement) +{ + size_t index = 0; + while (true) + { + index = str.find(toReplace, index); + if (index == std::string::npos) + break; + str.replace(index, toReplace.length(), replacement); + ++index; + } + return str; +} + +vector split(string str, string sep) +{ + std::vector ret; + size_t index; + while (true) + { + index = str.find(sep); + if (index == std::string::npos) + break; + ret.push_back(str.substr(0, index)); + str = str.substr(index + 1); + } + ret.push_back(str); + return ret; +} + +inline string toLower(string data) +{ + std::transform(data.begin(), data.end(), data.begin(), ::tolower); + return data; +} diff --git a/Model.h b/Model.h index 77ea091..0ff281e 100644 --- a/Model.h +++ b/Model.h @@ -1,7 +1,6 @@ #pragma once #include "Header.h" -#include "ModelLoader.h" -#include "Vector.h" +#include "ModelInstance.h" class Model { @@ -59,10 +58,15 @@ private: std::vector groups; std::vector materials; + std::vector instances; + void loadMaterialFile(std::string fileName, std::string dirName); public: Model(std::string filename); + Model(void); ~Model(void); + void AddInstance(ModelInstance* inst); + void draw(); }; diff --git a/ModelHandler.cpp b/ModelHandler.cpp new file mode 100644 index 0000000..60edb27 --- /dev/null +++ b/ModelHandler.cpp @@ -0,0 +1,12 @@ +#include "ModelHandler.h" + + + +ModelHandler::ModelHandler() +{ +} + + +ModelHandler::~ModelHandler() +{ +} diff --git a/ModelHandler.h b/ModelHandler.h new file mode 100644 index 0000000..028afd5 --- /dev/null +++ b/ModelHandler.h @@ -0,0 +1,8 @@ +#pragma once +class ModelHandler +{ +public: + ModelHandler(); + ~ModelHandler(); +}; + diff --git a/ModelInstance.cpp b/ModelInstance.cpp new file mode 100644 index 0000000..bed0f80 --- /dev/null +++ b/ModelInstance.cpp @@ -0,0 +1,10 @@ +#include "ModelInstance.h" + +ModelInstance::ModelInstance() +{ +} + + +ModelInstance::~ModelInstance() +{ +} diff --git a/ModelInstance.h b/ModelInstance.h new file mode 100644 index 0000000..6287a2e --- /dev/null +++ b/ModelInstance.h @@ -0,0 +1,16 @@ +#pragma once +#include "Header.h" + +class ModelInstance +{ +private: +public: + ModelInstance(); + ~ModelInstance(); + + Vec3f translation; + Vec3f rotation; + Vec3f scale; + +}; + diff --git a/ModelLoader.cpp b/ModelLoader.cpp deleted file mode 100644 index 2afdb71..0000000 --- a/ModelLoader.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "Header.h" -#include "ModelLoader.h" - -string replace(string str, string toReplace, string replacement) -{ - size_t index = 0; - while (true) - { - index = str.find(toReplace, index); - if (index == std::string::npos) - break; - str.replace(index, toReplace.length(), replacement); - ++index; - } - return str; -} - -vector split(string str, string sep) -{ - std::vector ret; - size_t index; - while (true) - { - index = str.find(sep); - if (index == std::string::npos) - break; - ret.push_back(str.substr(0, index)); - str = str.substr(index + 1); - } - ret.push_back(str); - return ret; -} \ No newline at end of file diff --git a/ModelLoader.h b/ModelLoader.h deleted file mode 100644 index 89ebe71..0000000 --- a/ModelLoader.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include "Header.h" - -string replace(string str, string toReplace, string replacement); -vector split(string str, string sep); -inline string toLower(string data) -{ - std::transform(data.begin(), data.end(), data.begin(), ::tolower); - return data; -} diff --git a/Player.cpp b/Player.cpp index 34748f4..85417f5 100644 --- a/Player.cpp +++ b/Player.cpp @@ -15,7 +15,7 @@ Player::~Player() delete left; } -void Player::Draw_Player(void) +void Player::Display(void) { if (right != nullptr) { diff --git a/Player.h b/Player.h index 84aa8de..8359528 100644 --- a/Player.h +++ b/Player.h @@ -17,7 +17,7 @@ public: float rotY = 0; } eyes; - void Draw_Player(void); + void Display(void); private: int level; int xp; diff --git a/SettingsState.cpp b/SettingsState.cpp new file mode 100644 index 0000000..6378ddf --- /dev/null +++ b/SettingsState.cpp @@ -0,0 +1,12 @@ +#include "SettingsState.h" + + + +SettingsState::SettingsState() +{ +} + + +SettingsState::~SettingsState() +{ +} diff --git a/SettingsState.h b/SettingsState.h new file mode 100644 index 0000000..4469361 --- /dev/null +++ b/SettingsState.h @@ -0,0 +1,11 @@ +#pragma once +#include "Header.h" +#include "State.h" + +class SettingsState : public State +{ +public: + SettingsState(); + ~SettingsState(); +}; + diff --git a/State.cpp b/State.cpp index 7015cb2..ea5090f 100644 --- a/State.cpp +++ b/State.cpp @@ -10,3 +10,31 @@ State::State() State::~State() { } + +void State::Entry() +{ +} + +void State::Exit() +{ +} + +void State::Idle(float delta) +{ +} + +void State::Display() +{ +} + +void State::Keyboard(bool keys[255]) +{ +} + +void State::MouseMove(int x, int y, int dx, int dy) +{ +} + +void State::MouseClick(int button, int type, int x, int y) +{ +} diff --git a/State.h b/State.h index b6e8c3c..7136f3a 100644 --- a/State.h +++ b/State.h @@ -6,5 +6,21 @@ class State public: State(); ~State(); + + virtual void Entry(); + virtual void Exit(); + + virtual void Idle(float delta); + virtual void Display(); + + virtual void Keyboard(bool keys[255]); + virtual void MouseMove(int x, int y, int dx, int dy); + virtual void MouseClick(int button, int type, int x, int y); }; +#include "InitState.h" +#include "LoadingState.h" +#include "MenuState.h" +#include "SettingsState.h" +#include "WorldState.h" + diff --git a/StateHandler.cpp b/StateHandler.cpp index 5861068..8c7027b 100644 --- a/StateHandler.cpp +++ b/StateHandler.cpp @@ -1,12 +1,32 @@ #include "StateHandler.h" - - StateHandler::StateHandler() { + StateList.push_back(new InitState()); //INIT_STATE + StateList.push_back(new LoadingState()); //LOADING_STATE + StateList.push_back(new MenuState()); //MENU_STATE + StateList.push_back(new SettingsState()); //SETTINGS_STATE + StateList.push_back(new WorldState()); //WORLD_STATE + + CurrentState = INIT_STATE; } StateHandler::~StateHandler() { } + +void StateHandler::Navigate(EState state) +{ + if (CurrentState == state) + return; + + StateList.at(CurrentState)->Exit(); + CurrentState = state; + StateList.at(CurrentState)->Entry(); +} + +State* StateHandler::GetCurrentState() +{ + return StateList.at(CurrentState); +} diff --git a/StateHandler.h b/StateHandler.h index 24673c9..712b1d7 100644 --- a/StateHandler.h +++ b/StateHandler.h @@ -1,10 +1,19 @@ #pragma once #include "Header.h" +#include "State.h" class StateHandler { public: + enum EState { INIT_STATE = 0, LOADING_STATE = 1, MENU_STATE = 2, SETTINGS_STATE = 3, WORLD_STATE = 4 }; + StateHandler(); ~StateHandler(); + + void Navigate(EState state); + State* GetCurrentState(); +private: + EState CurrentState; + vector StateList; }; diff --git a/WorldState.h b/WorldState.h index d110f22..9249110 100644 --- a/WorldState.h +++ b/WorldState.h @@ -1,7 +1,8 @@ #pragma once #include "Header.h" +#include "State.h" -class WorldState +class WorldState : public State { public: WorldState(); diff --git a/models/HANDVAT.png b/models/HANDVAT.png new file mode 100644 index 0000000000000000000000000000000000000000..b56b296ed09af438fe6639a451f03054b1dd10e7 GIT binary patch literal 1411 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i28yg*QRD=q7>k44ofy`glX(f`u%tWs zIx;Y9?C1WI$O=@=5a1KyT5k-L83m&uFhWCMZBpPbpw~GIJR*x382Ao@Fyrz36)8YL zi4xa{lHmNblJdl&REC1Y%)Ao4ywnl}6Fmbx%N*l6KVSxX;pyTSQW5v|AR{kO$Dsw^ k{d4)*Sw?7J4qtDZXN4YQV3cKKmIC?F)78&qol`;+0PuA#iU0rr literal 0 HcmV?d00001 diff --git a/models/TextureZwaard.mtl b/models/TextureZwaard.mtl new file mode 100644 index 0000000..6328409 --- /dev/null +++ b/models/TextureZwaard.mtl @@ -0,0 +1,134 @@ +newmtl initialShadingGroup +illum 4 +Kd 0.22 0.22 0.22 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl lambert2SG +illum 4 +Kd 0.50 0.32 0.25 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl lambert3SG +illum 4 +Kd 0.45 0.45 0.45 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl lambert4SG +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl lambert5SG +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__lambert3SG +illum 4 +Kd 0.45 0.45 0.45 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__lambert4SG +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__lambert4SG1 +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__lambert4SG2 +illum 4 +Kd 0.00 0.00 0.00 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +map_Kd ZWAARD.png +Ni 1.00 +newmtl pasted__lambert5SG +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__lambert5SG1 +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__lambert5SG2 +illum 4 +Kd 0.00 0.00 0.00 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +map_Kd HANDVAT.png +Ni 1.00 +newmtl pasted__pasted__lambert4SG +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert4SG1 +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert4SG2 +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert4SG3 +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert5SG +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert5SG1 +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert5SG2 +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__lambert5SG3 +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__pasted__lambert4SG +illum 4 +Kd 0.12 0.12 0.12 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +newmtl pasted__pasted__pasted__lambert5SG +illum 4 +Kd 0.10 0.05 0.02 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 diff --git a/models/TextureZwaard.obj b/models/TextureZwaard.obj new file mode 100644 index 0000000..88776bb --- /dev/null +++ b/models/TextureZwaard.obj @@ -0,0 +1,436 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib TextureZwaard.mtl +g default +v -2.214711 4.435681 -1.922955 +v -2.214711 4.829163 -1.922955 +v -2.214711 4.829163 -2.316437 +v -2.214711 4.435681 -2.316437 +v -1.821229 4.435681 -2.316437 +v -1.821229 4.829163 -2.316437 +v -1.821229 4.829163 -1.922955 +v -1.821229 4.435681 -1.922955 +v -1.908670 5.978167 -2.010395 +v -2.127271 5.978167 -2.010395 +v -1.908670 5.978167 -2.228996 +v -2.127271 5.978167 -2.228996 +v -2.127271 4.523121 -3.000496 +v -1.908670 4.523121 -3.000496 +v -2.127271 4.741723 -2.990724 +v -1.908670 4.741723 -2.990724 +v -1.908670 4.523121 -1.238895 +v -2.127271 4.523121 -1.238895 +v -1.908670 4.741723 -1.248667 +v -2.127271 4.741723 -1.248667 +v -2.017970 5.567809 -1.922955 +v -1.870414 5.567809 -1.972140 +v -2.017970 6.121793 -1.972140 +v -2.165526 5.567809 -1.972140 +v -2.017970 4.829163 -1.922955 +v -1.821229 5.567809 -2.119696 +v -1.870414 5.567809 -2.267251 +v -1.870414 6.121793 -2.119696 +v -1.821229 4.829163 -2.119696 +v -2.017970 6.306454 -2.119696 +v -2.017970 6.121793 -2.267251 +v -2.165526 6.121793 -2.119696 +v -2.214711 5.567809 -2.119696 +v -2.165526 5.567809 -2.267251 +v -2.214711 4.829163 -2.119696 +v -2.017970 5.567809 -2.316437 +v -2.017970 4.829163 -2.316437 +v -2.017970 4.435681 -2.756189 +v -2.017970 4.484866 -3.086004 +v -1.870414 4.484866 -2.756189 +v -2.017970 4.435681 -2.316437 +v -2.165526 4.484866 -2.756189 +v -2.214711 4.632422 -2.756189 +v -2.165526 4.632422 -3.086004 +v -2.214711 4.632422 -2.316437 +v -2.165526 4.779978 -2.734202 +v -2.017970 4.632422 -3.195942 +v -2.017970 4.779978 -3.064016 +v -1.870414 4.632422 -3.086004 +v -1.821229 4.632422 -2.756189 +v -1.870414 4.779978 -2.734202 +v -1.821229 4.632422 -2.316437 +v -2.017970 4.829163 -2.668239 +v -2.116341 4.829163 -2.316437 +v -1.919600 4.829163 -2.316437 +v -2.017970 4.435681 -1.483202 +v -1.870414 4.484866 -1.483202 +v -2.017970 4.484866 -1.153388 +v -2.165526 4.484866 -1.483202 +v -2.017970 4.435681 -1.922955 +v -1.821229 4.632422 -1.483202 +v -1.870414 4.779978 -1.505190 +v -1.870414 4.632422 -1.153388 +v -1.821229 4.632422 -1.922955 +v -2.017970 4.632422 -1.043449 +v -2.017970 4.779978 -1.175375 +v -2.165526 4.632422 -1.153388 +v -2.214711 4.632422 -1.483202 +v -2.165526 4.779978 -1.505190 +v -2.214711 4.632422 -1.922955 +v -2.017970 4.829163 -1.571153 +v -1.919600 4.829163 -1.922955 +v -2.116341 4.829163 -1.922955 +v -2.145140 1.194092 -2.004379 +v -1.894884 1.194092 -2.004379 +v -2.145140 4.476328 -2.004379 +v -1.894884 4.476328 -2.004379 +v -2.145140 4.476328 -2.254635 +v -1.894884 4.476328 -2.254635 +v -2.145140 1.194092 -2.254635 +v -1.894884 1.194092 -2.254635 +v -2.020800 1.194092 -1.837458 +v -2.020800 1.194092 -2.421667 +v -2.020800 4.476328 -2.421667 +v -2.020800 4.476328 -1.837458 +v -2.020800 0.395449 -2.130295 +v -2.020012 0.395449 -2.129507 +v -2.020800 0.395449 -2.128719 +vt 0.375000 0.175791 +vt 0.375000 0.183595 +vt 0.375000 0.191400 +vt 0.250000 0.191400 +vt 0.125000 0.191400 +vt 0.125000 0.183595 +vt 0.125000 0.175791 +vt 0.875000 0.175791 +vt 0.875000 0.183595 +vt 0.875000 0.191400 +vt 0.750000 0.191400 +vt 0.625000 0.191400 +vt 0.625000 0.183595 +vt 0.625000 0.175791 +vt 0.500000 0.191400 +vt 0.562500 0.191400 +vt 0.625000 0.220700 +vt 0.500000 0.220700 +vt 0.875000 0.220700 +vt 0.750000 0.220700 +vt 0.375000 0.375000 +vt 0.375000 0.250000 +vt 0.500000 0.273925 +vt 0.500000 0.375000 +vt 0.375000 0.220700 +vt 0.250000 0.220700 +vt 0.375000 0.529300 +vt 0.375000 0.500000 +vt 0.500000 0.476075 +vt 0.500000 0.529300 +vt -1.#IND00 -1.#IND00 +vt 0.375000 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.051075 +vt -1.#IND00 -1.#IND00 +vt 0.125000 0.000000 +vt 0.250000 0.000000 +vt -1.#IND00 -1.#IND00 +vt 0.375000 0.875000 +vt 0.375000 0.750000 +vt 0.500000 0.765928 +vt 0.500000 0.875000 +vt -1.#IND00 -1.#IND00 +vt 0.625000 0.000000 +vt 0.750000 0.000000 +vt -1.#IND00 -1.#IND00 +vt 0.562500 0.647850 +vt 0.625000 0.647850 +vt 0.625000 0.698925 +vt 0.500000 0.688710 +vt 0.500000 0.147850 +vt 0.625000 0.147850 +vt -1.#IND00 -1.#IND00 +vt 0.500000 0.198925 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt 0.375000 0.375000 +vt 0.375000 0.250000 +vt 0.500000 0.268481 +vt 0.500000 0.375000 +vt -1.#IND00 -1.#IND00 +vt 0.375000 0.147850 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt 0.375000 0.551075 +vt 0.375000 0.500000 +vt 0.500000 0.484072 +vt 0.500000 0.561290 +vt 0.375000 0.102150 +vt 0.625000 0.138970 +vt 0.500000 0.161821 +vt 0.625000 0.250000 +vt 0.437500 0.191400 +vt 0.875000 0.250000 +vt 0.750000 0.250000 +vt 0.625000 0.375000 +vt 0.625000 0.500000 +vt 0.250000 0.250000 +vt 0.125000 0.250000 +vt 0.125000 0.220700 +vt 0.625000 0.529300 +vt 0.625000 0.558600 +vt 0.562500 0.558600 +vt 0.500000 0.558600 +vt 0.437500 0.558600 +vt 0.375000 0.558600 +vt 0.625000 0.102150 +vt 0.500000 0.102150 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt 0.625000 0.750000 +vt 0.625000 0.875000 +vt 0.625000 1.000000 +vt 0.500000 1.000000 +vt 0.375000 1.000000 +vt 0.875000 0.000000 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt 0.375000 0.698925 +vt 0.375000 0.647850 +vt 0.437500 0.647850 +vt 0.500000 0.647850 +vt 0.625000 0.250000 +vt 0.875000 0.250000 +vt 0.750000 0.250000 +vt 0.625000 0.375000 +vt 0.625000 0.500000 +vt 0.250000 0.250000 +vt 0.125000 0.250000 +vt -1.#IND00 -1.#IND00 +vt -1.#IND00 -1.#IND00 +vt 0.625000 0.551075 +vt 0.625000 0.602150 +vt 0.562500 0.602150 +vt 0.500000 0.602150 +vt 0.437500 0.602150 +vt 0.375000 0.602150 +vt 0.499213 0.250000 +vt 0.499213 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.499213 0.500000 +vt 0.625000 0.500000 +vt 0.499213 0.750000 +vt 0.625000 0.750000 +vt 0.500000 0.875471 +vt 0.499213 0.875361 +vt 0.499213 0.874686 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.375000 0.000000 +vt 0.375000 0.250000 +vt 0.125000 0.250000 +vt 0.375000 0.750000 +vt 0.375000 1.000000 +vt 0.375000 0.500000 +vt 0.625000 1.000000 +vt 0.499213 1.000000 +vn -0.706849 -0.706849 0.027027 +vn -0.999778 -0.000000 0.021082 +vn -0.916167 0.161747 0.366710 +vn -0.999853 0.017156 0.000000 +vn -0.916167 0.161747 -0.366710 +vn -0.999778 0.000000 -0.021082 +vn -0.706848 -0.706849 -0.027027 +vn 0.706849 -0.706848 -0.027027 +vn 0.999778 -0.000000 -0.021082 +vn 0.916167 0.161747 -0.366710 +vn 0.999853 0.017156 0.000000 +vn 0.916167 0.161747 0.366710 +vn 0.999778 0.000000 0.021082 +vn 0.706849 -0.706848 0.027027 +vn 0.000000 0.296282 0.955101 +vn 0.165279 0.343682 0.924427 +vn 0.705454 0.068331 0.705454 +vn -0.000000 0.059769 0.998212 +vn 0.705454 0.068331 -0.705454 +vn 0.998212 0.059770 0.000000 +vn -0.926131 0.377203 0.000000 +vn -0.699145 0.149633 0.699147 +vn -0.000000 0.377204 0.926130 +vn -0.000000 1.000000 -0.000000 +vn -0.705454 0.068331 0.705454 +vn -0.998212 0.059770 0.000000 +vn -0.705454 0.068331 -0.705454 +vn -0.699146 0.149633 -0.699146 +vn 0.000000 0.377204 -0.926130 +vn -0.000000 0.059769 -0.998212 +vn -0.702552 -0.702552 -0.113318 +vn -0.680278 -0.680278 -0.272843 +vn -0.000000 -0.871334 -0.490690 +vn 0.000000 -0.995011 -0.099770 +vn -0.764530 0.632514 -0.124178 +vn -0.647141 0.717488 -0.257720 +vn -0.867188 0.029145 -0.497127 +vn -0.994694 0.006104 -0.102697 +vn -0.000000 0.901897 -0.431952 +vn 0.000000 0.041614 -0.999134 +vn 0.702553 -0.702552 -0.113318 +vn 0.680279 -0.680278 -0.272842 +vn 0.867188 0.029145 -0.497127 +vn 0.994694 0.006104 -0.102697 +vn 0.165279 0.343682 -0.924427 +vn 0.764531 0.632513 -0.124177 +vn -0.000000 0.994023 -0.109172 +vn 0.000000 -0.999780 0.020984 +vn 0.702552 -0.702552 0.113318 +vn 0.000000 -0.995011 0.099770 +vn 0.764531 0.632513 0.124177 +vn 0.994694 0.006104 0.102697 +vn -0.867188 0.029145 0.497128 +vn -0.680278 -0.680278 0.272843 +vn -0.000000 -0.871334 0.490690 +vn -0.000000 0.041614 0.999134 +vn -0.702552 -0.702552 0.113318 +vn -0.994694 0.006104 0.102697 +vn -0.764530 0.632514 0.124178 +vn -0.647140 0.717488 0.257721 +vn -0.000000 0.901897 0.431952 +vn 0.000000 0.994023 0.109172 +vn 0.000000 -0.999780 -0.020984 +vn 0.699145 0.149633 0.699147 +vn -0.165279 0.343682 0.924427 +vn 0.699146 0.149633 -0.699145 +vn 0.926130 0.377204 -0.000000 +vn -0.000000 0.296282 -0.955101 +vn -0.165279 0.343682 -0.924427 +vn 0.647141 0.717488 -0.257720 +vn 0.680279 -0.680278 0.272842 +vn 0.647141 0.717488 0.257720 +vn 0.867188 0.029145 0.497128 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.798332 0.000000 0.602218 +vn 0.798332 0.000000 0.602218 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.798524 0.000000 -0.601963 +vn 0.798524 0.000000 -0.601963 +vn 0.967785 -0.251777 0.000042 +vn -0.485721 -0.462486 0.741742 +vn -0.485344 -0.462668 -0.741875 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.935019 -0.191988 -0.298128 +vn -0.934995 -0.191995 0.298198 +vn -0.802147 0.000000 -0.597126 +vn -0.802147 0.000000 -0.597126 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.801957 0.000000 0.597382 +vn -0.801957 0.000000 0.597382 +vn 0.003575 -0.342600 -0.939475 +vn 0.932888 -0.193820 -0.303570 +vn 0.932863 -0.193827 0.303641 +vn 0.003576 -0.342485 0.939516 +s 1 +g polySurface10 +usemtl pasted__lambert5SG2 +f 1/1/1 70/2/2 2/3/3 35/4/4 3/5/5 45/6/6 4/7/7 +f 5/8/8 52/9/9 6/10/10 29/11/11 7/12/12 64/13/13 8/14/14 +f 25/15/15 72/16/16 7/12/12 22/17/17 21/18/18 +f 29/11/11 6/10/10 27/19/19 26/20/20 +f 32/21/21 10/22/22 23/23/23 30/24/24 +f 35/4/4 2/3/3 24/25/25 33/26/26 +f 34/27/27 12/28/28 31/29/29 36/30/30 +f 42/31/31 13/32/32 39/33/33 38/34/34 +f 46/35/35 15/36/36 44/37/37 43/38/38 +f 44/39/37 15/40/36 48/41/39 47/42/40 +f 40/43/41 14/44/42 49/45/43 50/46/44 +f 55/47/45 6/48/10 51/49/46 53/50/47 +f 60/51/48 8/52/14 57/53/49 56/54/50 +f 64/55/13 7/56/12 62/57/51 61/58/52 +f 67/59/53 18/60/54 58/61/55 65/62/56 +f 70/63/2 1/64/1 59/65/57 68/66/58 +f 69/67/59 20/68/60 66/69/61 71/70/62 +f 1/1/1 4/71/7 41/72/63 5/8/8 8/52/14 60/73/48 +f 22/17/17 9/74/64 23/23/23 21/18/18 +f 23/23/23 10/22/22 24/25/25 21/18/18 +f 24/25/25 2/3/3 73/75/65 25/15/15 21/18/18 +f 27/19/19 11/76/66 28/77/67 26/20/20 +f 28/77/67 9/74/64 22/17/17 26/20/20 +f 22/17/17 7/12/12 29/11/11 26/20/20 +f 23/23/23 9/74/64 28/78/67 30/24/24 +f 28/78/67 11/79/66 31/29/29 30/24/24 +f 31/29/29 12/28/28 32/21/21 30/24/24 +f 24/25/25 10/22/22 32/80/21 33/26/26 +f 32/80/21 12/81/28 34/82/27 33/26/26 +f 34/82/27 3/5/5 35/4/4 33/26/26 +f 31/29/29 11/79/66 27/83/19 36/30/30 +f 27/83/19 6/84/10 55/85/45 37/86/68 36/30/30 +f 37/86/68 54/87/69 3/88/5 34/27/27 36/30/30 +f 39/33/33 14/44/42 40/43/41 38/34/34 +f 40/43/41 5/89/8 41/90/63 38/34/34 +f 41/90/63 4/71/7 42/31/31 38/34/34 +f 44/37/37 13/32/32 42/31/31 43/38/38 +f 42/31/31 4/71/7 45/91/6 43/38/38 +f 45/91/6 3/92/5 46/35/35 43/38/38 +f 48/41/39 16/93/70 49/94/43 47/42/40 +f 49/94/43 14/95/42 39/96/33 47/42/40 +f 39/96/33 13/97/32 44/39/37 47/42/40 +f 49/45/43 16/98/70 51/99/46 50/46/44 +f 51/99/46 6/100/10 52/101/9 50/46/44 +f 52/101/9 5/89/8 40/43/41 50/46/44 +f 51/49/46 16/93/70 48/41/39 53/50/47 +f 48/41/39 15/40/36 46/102/35 53/50/47 +f 46/102/35 3/103/5 54/104/69 53/50/47 +f 54/104/69 37/105/68 55/47/45 53/50/47 +f 57/53/49 17/106/71 58/61/55 56/54/50 +f 58/61/55 18/60/54 59/65/57 56/54/50 +f 59/65/57 1/64/1 60/51/48 56/54/50 +f 62/57/51 19/107/72 63/108/73 61/58/52 +f 63/108/73 17/106/71 57/53/49 61/58/52 +f 57/53/49 8/52/14 64/55/13 61/58/52 +f 58/61/55 17/106/71 63/109/73 65/62/56 +f 63/109/73 19/110/72 66/69/61 65/62/56 +f 66/69/61 20/68/60 67/59/53 65/62/56 +f 59/65/57 18/60/54 67/111/53 68/66/58 +f 67/111/53 20/112/60 69/113/59 68/66/58 +f 69/113/59 2/114/3 70/63/2 68/66/58 +f 66/69/61 19/110/72 62/115/51 71/70/62 +f 62/115/51 7/116/12 72/117/16 71/70/62 +f 72/117/16 25/118/15 73/119/65 71/70/62 +f 73/119/65 2/120/3 69/67/59 71/70/62 +s 10 +usemtl pasted__lambert4SG2 +f 85/121/74 82/122/75 75/123/76 77/124/77 +s 11 +f 84/125/78 85/121/79 77/124/80 79/126/81 +s 12 +f 83/127/82 84/125/83 79/126/84 81/128/85 +s 13 +f 87/129/86 88/130/87 86/131/88 +s off +f 75/123/89 81/132/90 79/133/91 77/124/92 +f 80/134/93 74/135/94 76/136/95 78/137/96 +s 13 +f 80/138/97 86/131/88 88/130/87 74/139/98 +s 12 +f 78/140/99 84/125/83 83/127/82 80/138/100 +s 11 +f 76/136/101 85/121/79 84/125/78 78/140/102 +s 10 +f 74/135/103 82/122/75 85/121/74 76/136/104 +s 13 +f 80/138/97 83/127/105 86/131/88 +f 81/128/106 87/129/86 86/131/88 83/127/105 +f 75/141/107 87/129/86 81/128/106 +f 82/142/108 88/130/87 87/129/86 75/141/107 +f 74/139/98 88/130/87 82/142/108 diff --git a/models/ZWAARD.png b/models/ZWAARD.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7467e551a49be7c2b72d58e46b89ba91a55144 GIT binary patch literal 1411 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i28yg*QRD=q7>k44ofy`glX(f`u%tWs zIx;Y9?C1WI$O=@=5a1Ky+R)Gdlo|!2AuuvS;7y(UUZBr83p^r=85sBugD~Uq{1quc zL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J*;z(rSPo-fn`ea{WMGtKWR?PX($m$?Wt~$(69D?PFGK(U literal 0 HcmV?d00001