diff --git a/CMakeLists.txt b/CMakeLists.txt index 63bfc4a..f49c297 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ find_package(OpenGL REQUIRED) find_package(glfw3 REQUIRED) find_package(glm REQUIRED) -add_executable(ecsgame Util/glad.c Util/OBJ_Loader.h Rendering/Shader.cpp Rendering/Shader.h main.cpp ECS/Components/Transform.h ECS/Components/Movement.h ECS/Events/InputEvent.h ECS/Events/MouseMoveEvent.h ECS/Systems/GravitySystem.h ECS/Systems/PositionDebugSystem.h ECS/Systems/KeyboardMovementSystem.h ECS/Components/Camera.h ECS/Systems/RenderSystem.h ECS/Components/Mesh.h ECS/Systems/MouseLookSystem.h ECS/Components/MouseLook.h ECS/Components/ObjMesh.h Util/stb_setup.cpp ECS/Components/Texture.h) +add_executable(ecsgame Util/glad.c Util/OBJ_Loader.h Rendering/Shader.cpp Rendering/Shader.h main.cpp ECS/Components/Transform.h ECS/Components/Movement.h ECS/Events/InputEvent.h ECS/Events/MouseMoveEvent.h ECS/Systems/GravitySystem.h ECS/Systems/PositionDebugSystem.h ECS/Systems/KeyboardMovementSystem.h ECS/Components/Camera.h ECS/Systems/RenderSystem.h ECS/Components/Mesh.h ECS/Systems/MouseLookSystem.h ECS/Components/MouseLook.h ECS/Components/ObjMesh.h Util/stb_setup.cpp ECS/Components/Texture.h ECS/Components/LODObjMesh.h) include_directories(${OPENGL_INCLUDE_DIRS}) diff --git a/ECS/Components/LODObjMesh.h b/ECS/Components/LODObjMesh.h new file mode 100644 index 0000000..460ceec --- /dev/null +++ b/ECS/Components/LODObjMesh.h @@ -0,0 +1,18 @@ +// +// Created by karl on 15.01.20. +// + +#ifndef ECSGAME_LODOBJMESH_H +#define ECSGAME_LODOBJMESH_H + +#include +#include +#include "ObjMesh.h" + +struct LODObjMesh { + explicit LODObjMesh(std::vector meshes) : meshes(std::move(meshes)) {} + + std::vector meshes; +}; + +#endif //ECSGAME_LODOBJMESH_H diff --git a/ECS/Components/ObjMesh.h b/ECS/Components/ObjMesh.h index ec248df..3b1f035 100644 --- a/ECS/Components/ObjMesh.h +++ b/ECS/Components/ObjMesh.h @@ -9,7 +9,21 @@ #include "../../Util/OBJ_Loader.h" struct ObjMesh : public Mesh { - explicit ObjMesh(const std::string &path) : Mesh(getVerticesFromFile(path), getIndicesFromFile(path)) {} + struct Settings { + Settings(float minDistanceForRender, float maxDistanceForRender) : minDistanceForRender( + minDistanceForRender), maxDistanceForRender(maxDistanceForRender) {} + + float minDistanceForRender = 0.0; + float maxDistanceForRender = 1000.0; + }; + + explicit ObjMesh(const std::string &path, const Settings &settings) : Mesh(getVerticesFromFile(path), getIndicesFromFile(path)), + minDistance(settings.minDistanceForRender), + maxDistance(settings.maxDistanceForRender) {} + + float minDistance; + + float maxDistance; private: static std::vector getVerticesFromFile(const std::string &path) { diff --git a/ECS/Components/Transform.h b/ECS/Components/Transform.h index 1b48678..9db515c 100644 --- a/ECS/Components/Transform.h +++ b/ECS/Components/Transform.h @@ -30,19 +30,19 @@ struct Transform { matrix = glm::rotate(matrix, glm::radians(degrees), axis); } - glm::vec3 getPosition() { + glm::vec3 getPosition() const { return matrix * glm::vec4(0.0f, 0.0f, 0.0f, 1.0f); } - glm::vec3 forward() { + glm::vec3 forward() const { return matrix * glm::vec4(0.0, 0.0, -1.0, 0.0); } - glm::vec3 up() { + glm::vec3 up() const { return matrix * glm::vec4(0.0, 1.0, 0.0, 0.0); } - glm::vec3 right() { + glm::vec3 right() const { return matrix * glm::vec4(1.0, 0.0, 0.0, 0.0); } }; diff --git a/ECS/Systems/RenderSystem.h b/ECS/Systems/RenderSystem.h index 82fb20f..0711de7 100644 --- a/ECS/Systems/RenderSystem.h +++ b/ECS/Systems/RenderSystem.h @@ -12,6 +12,7 @@ #include "../../Rendering/Shader.h" #include "../Components/ObjMesh.h" #include "../Components/Texture.h" +#include "../Components/LODObjMesh.h" using namespace ECS; @@ -36,12 +37,38 @@ public: // TODO: Is it possible to do get ObjMeshes in the Mesh loop above implicitly via polymorphism? pWorld->each([&](Entity *ent, ComponentHandle mesh, ComponentHandle transform) { - renderObjects.emplace_back(RenderObject(transform->matrix, 0, mesh.get())); + // Add the object to the renderObjects to draw if the distance is within the min and max distance of the mesh + glm::vec3 cameraPos = cameraTransform->getPosition(); + glm::vec3 objPos = transform->getPosition(); + float distance = glm::distance(cameraPos, objPos); + + if (distance > mesh->minDistance && distance < mesh->maxDistance) { + renderObjects.emplace_back(RenderObject(transform->matrix, 0, mesh.get())); + } }); // ObjMesh with textures pWorld->each([&](Entity *ent, ComponentHandle mesh, ComponentHandle transform, ComponentHandle texture) { - renderObjects.emplace_back(RenderObject(transform->matrix, texture->id, mesh.get())); + // Add the object to the renderObjects to draw if the distance is within the min and max distance of the mesh + glm::vec3 cameraPos = cameraTransform->getPosition(); + glm::vec3 objPos = transform->getPosition(); + float distance = glm::distance(cameraPos, objPos); + + if (distance > mesh->minDistance && distance < mesh->maxDistance) { + renderObjects.emplace_back(RenderObject(transform->matrix, texture->id, mesh.get())); + } + }); + + pWorld->each([&](Entity *ent, ComponentHandle lodMesh, ComponentHandle transform, ComponentHandle texture) { + glm::vec3 cameraPos = cameraTransform->getPosition(); + glm::vec3 objPos = transform->getPosition(); + float distance = glm::distance(cameraPos, objPos); + + for (const auto &mesh : lodMesh->meshes) { + if (distance > mesh.minDistance && distance < mesh.maxDistance) { + renderObjects.emplace_back(RenderObject(transform->matrix, texture->id, mesh)); + } + } }); // TODO: Separate lists for transparent and non-transparent RenderObjects. The non-transparent list is @@ -69,9 +96,6 @@ public: unsigned int texture_id; Mesh mesh; }; - -private: - float gravityAmount; }; #endif //ECSGAME_RENDERSYSTEM_H diff --git a/Resources/MonkeySimple.mtl b/Resources/MonkeySimple.mtl new file mode 100644 index 0000000..f231bdf --- /dev/null +++ b/Resources/MonkeySimple.mtl @@ -0,0 +1,10 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl None +Ns 500 +Ka 0.8 0.8 0.8 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 diff --git a/Resources/MonkeySimple.obj b/Resources/MonkeySimple.obj new file mode 100644 index 0000000..5d335d1 --- /dev/null +++ b/Resources/MonkeySimple.obj @@ -0,0 +1,632 @@ +# Blender v2.80 (sub 75) OBJ File: '' +# www.blender.org +mtllib MonkeySimple.mtl +o Suzanne +v 0.546875 0.054688 0.578125 +v -0.546875 0.054688 0.578125 +v -0.348823 -0.039891 0.626154 +v 0.348823 -0.039891 0.626154 +v 0.243136 0.183168 0.809604 +v 0.156250 0.054688 0.648438 +v -0.156250 0.054688 0.648438 +v -0.065623 0.241473 0.664332 +v 0.065623 0.241473 0.664332 +v 0.293751 0.363527 0.805224 +v 0.156250 0.437500 0.648438 +v -0.156250 0.437500 0.648438 +v 0.351562 0.515625 0.617188 +v -0.351562 0.515625 0.617188 +v -0.293751 0.363527 0.805224 +v -0.467091 0.308394 0.768123 +v 0.546875 0.437500 0.578125 +v -0.546875 0.437500 0.578125 +v 0.633263 0.242030 0.566494 +v -0.633263 0.242030 0.566494 +v 0.467091 0.308394 0.768123 +v -0.243136 0.183168 0.809604 +v 0.411605 0.129821 0.794655 +v -0.411605 0.129821 0.794655 +v 0.000000 0.372944 0.789694 +v 0.000000 -0.769082 0.715764 +v 0.000000 -0.187500 0.796875 +v 0.000000 0.455016 0.615114 +v 0.000000 0.739405 -0.758502 +v 0.000000 -0.382812 -0.351562 +v -0.226815 -0.192583 0.533658 +v 0.226815 -0.192583 0.533658 +v -0.356999 -0.930792 0.570588 +v 0.356999 -0.930792 0.570588 +v 0.586132 -0.069318 0.571588 +v 0.832894 0.398588 0.625095 +v -0.238492 0.773072 0.711296 +v 0.261609 0.481956 0.761877 +v 0.224125 0.132533 0.757452 +v -0.261609 0.481956 0.761877 +v -0.096071 -0.811170 0.703592 +v 0.000000 -0.195312 0.750000 +v 0.000000 -0.140625 0.742188 +v 0.094944 -0.120279 0.791976 +v -0.586132 -0.069318 0.571588 +v -0.832894 0.398588 0.625095 +v -0.254704 0.640816 0.854056 +v 0.254704 0.640816 0.854056 +v -0.094944 -0.120279 0.791976 +v 0.000000 -0.302549 0.784118 +v 0.127176 -0.248204 0.758767 +v -0.127176 -0.248204 0.758767 +v 0.096071 -0.811170 0.703592 +v 0.000000 -0.906041 0.681977 +v -0.324415 0.390499 0.806824 +v -0.548006 0.301844 0.681778 +v -0.543159 0.212734 0.683209 +v -0.414048 0.075581 0.705376 +v 0.197297 0.296692 0.761588 +v -0.197297 0.296692 0.761588 +v 0.324415 0.390499 0.806824 +v 0.414048 0.075581 0.705376 +v 0.543159 0.212734 0.683209 +v 0.548006 0.301844 0.681778 +v -0.224125 0.132533 0.757452 +v 0.109375 0.460938 0.609375 +v -0.109375 0.460938 0.609375 +v 0.238492 0.773072 0.711296 +v -0.457458 0.528564 0.474708 +v -0.711654 0.400774 0.307327 +v -0.785346 0.119346 0.417886 +v 0.785346 0.119346 0.417886 +v 0.000000 0.976525 0.190772 +v 0.000000 -0.087682 -0.771844 +v 0.000000 -0.955036 0.406793 +v 0.000000 -0.486100 0.298559 +v 0.854750 0.356817 -0.188387 +v -0.852752 0.400749 -0.446254 +v -0.664512 -0.122739 -0.118988 +v 0.533910 0.047078 -0.538381 +v -0.533910 0.047078 -0.538381 +v -0.214052 -0.410230 0.341908 +v 0.325481 -0.912528 0.409040 +v -0.325481 -0.912528 0.409040 +v 0.214052 -0.410230 0.341908 +v 0.453125 0.867188 -0.382812 +v -0.453125 0.867188 -0.382812 +v -0.476077 0.899132 0.128827 +v 0.476077 0.899132 0.128827 +v 0.457458 0.528564 0.474708 +v 0.711654 0.400774 0.307327 +v -0.781498 0.576058 0.095848 +v 0.781498 0.576058 0.095848 +v 0.770823 0.623203 -0.342437 +v -0.770823 0.623203 -0.342437 +v -0.394325 -0.238686 -0.333531 +v 0.394325 -0.238686 -0.333531 +v -0.908821 -0.067690 -0.196000 +v -1.381379 0.178077 -0.486387 +v -1.144385 0.493109 -0.352791 +v 1.207970 0.310146 -0.440908 +v 1.144385 0.493109 -0.352791 +v 0.908821 -0.067690 -0.196000 +v -1.147014 0.048217 -0.437880 +v -0.962401 0.305884 -0.351058 +v 0.736780 0.072512 -0.234252 +v 0.664512 -0.122739 -0.118988 +v -0.736780 0.072512 -0.234252 +v -0.854750 0.356817 -0.188387 +v -0.864912 0.016082 -0.314259 +v 0.962401 0.305884 -0.351058 +v 1.147014 0.048217 -0.437880 +v 0.864912 0.016082 -0.314259 +v -1.207970 0.310146 -0.440908 +v -1.227002 0.480829 -0.552827 +v 1.227002 0.480829 -0.552827 +v 1.381379 0.178077 -0.486387 +v -0.825112 -0.141955 -0.351496 +v 0.825112 -0.141955 -0.351496 +v 0.852752 0.400749 -0.446254 +vt 0.900047 0.600711 +vt 0.865294 0.596428 +vt 0.920244 0.524371 +vt 0.863045 0.814502 +vt 0.897955 0.811764 +vt 0.914742 0.888926 +vt 0.798506 0.569552 +vt 0.853018 0.521562 +vt 0.795130 0.838386 +vt 0.847458 0.888748 +vt 0.860099 0.630901 +vt 0.859385 0.779832 +vt 0.842259 0.702752 +vt 0.791018 0.645443 +vt 0.896663 0.634707 +vt 0.896082 0.777653 +vt 0.844752 0.707260 +vt 0.921180 0.713713 +vt 0.968213 0.770220 +vt 0.968392 0.573812 +vt 0.613919 0.156910 +vt 0.662732 0.229131 +vt 0.537280 0.191053 +vt 0.374310 0.231491 +vt 0.423476 0.157362 +vt 0.500867 0.191082 +vt 0.701444 0.312420 +vt 0.716667 0.255171 +vt 0.424750 0.406746 +vt 0.336822 0.319015 +vt 0.434765 0.379876 +vt 0.521282 0.351496 +vt 0.608285 0.376192 +vt 0.619392 0.402270 +vt 0.582120 0.273218 +vt 0.457513 0.274759 +vt 0.461276 0.311337 +vt 0.527109 0.076693 +vt 0.518927 0.067033 +vt 0.550889 0.061904 +vt 0.510745 0.076681 +vt 0.486988 0.061843 +vt 0.544940 0.168019 +vt 0.493063 0.168121 +vt 0.519132 0.185382 +vt 0.519841 0.200843 +vt 0.517577 0.190607 +vt 0.519017 0.160549 +vt 0.647267 0.283770 +vt 0.619457 0.263699 +vt 0.391580 0.287347 +vt 0.419367 0.266052 +vt 0.435100 0.343509 +vt 0.389280 0.303332 +vt 0.432040 0.329077 +vt 0.579480 0.309446 +vt 0.608931 0.325978 +vt 0.606436 0.340309 +vt 0.968392 0.645333 +vt 0.770919 0.306725 +vt 0.558254 0.053877 +vt 0.636784 0.083229 +vt 0.479647 0.053791 +vt 0.400621 0.082778 +vt 0.318792 0.259643 +vt 0.175905 0.137223 +vt 0.112803 0.039739 +vt 0.226368 0.098615 +vt 0.806925 0.103471 +vt 0.805584 0.010786 +vt 0.916973 0.056771 +vt 0.783131 0.156451 +vt 0.827740 0.210975 +vt 0.248340 0.155313 +vt 0.203432 0.216899 +vt 0.874203 0.325258 +vt 0.819308 0.278589 +vt 0.861794 0.236707 +vt 0.208596 0.287729 +vt 0.147220 0.341845 +vt 0.160019 0.241216 +vt 0.815858 0.445381 +vt 0.763011 0.431216 +vt 0.786267 0.369211 +vt 0.279331 0.457858 +vt 0.219260 0.477186 +vt 0.249207 0.387964 +vt 0.826814 0.463153 +vt 0.207578 0.498306 +vt 0.262597 0.316840 +vt 0.840546 0.202788 +vt 0.854987 0.141773 +vt 0.196555 0.864744 +vt 0.161809 0.747616 +vt 0.198911 0.798981 +vt 0.225263 0.743995 +vt 0.532373 0.749055 +vt 0.462517 0.691697 +vt 0.595488 0.754506 +vt 0.274563 0.817146 +vt 0.357746 0.622754 +vt 0.350761 0.724799 +vt 0.296771 0.688391 +vt 0.443165 0.731721 +vt 0.407791 0.726649 +vt 0.315148 0.729004 +vt 0.337300 0.863005 +vt 0.232656 0.176633 +vt 0.481254 0.820560 +vt 0.557519 0.870067 +vt 0.557052 0.804584 +vt 0.661965 0.735554 +vt 0.707492 0.759884 +vt 0.741958 0.591463 +vt 0.042009 0.548905 +vt 0.106331 0.582808 +vt 0.095969 0.726496 +vt 0.492015 0.636113 +vt 0.658213 0.585676 +vt 0.268788 0.632175 +vt 0.498072 0.552315 +vt 0.264218 0.550140 +vt 0.791018 0.762238 +vt 0.918898 0.699697 +vt 0.965038 0.841671 +vt 0.650016 0.299280 +vt 0.518926 0.083741 +vt 0.553209 0.433063 +vt 0.523031 0.433628 +vt 0.492809 0.434538 +vt 0.692106 0.388274 +vt 0.350292 0.396229 +vt 0.530189 0.019143 +vt 0.647032 0.020893 +vt 0.391239 0.020125 +vt 0.507714 0.019143 +vt 0.232648 0.003484 +vt 0.996800 0.204807 +vt 0.173127 0.195258 +vt 0.006842 0.199644 +vt 0.915360 0.259804 +vt 0.927090 0.385070 +vt 0.087610 0.412904 +vt 0.098965 0.266968 +vt 0.402979 0.624712 +vt 0.417620 0.864486 +vt 0.796858 0.178006 +vt 0.049526 0.748824 +vn 0.7428 -0.1333 0.6561 +vn -0.7428 -0.1333 0.6561 +vn 0.4662 -0.7042 0.5356 +vn -0.4662 -0.7042 0.5356 +vn -0.1472 -0.6689 0.7286 +vn 0.1472 -0.6689 0.7286 +vn -0.6578 -0.3748 0.6534 +vn -0.5858 0.1836 0.7894 +vn 0.5858 0.1836 0.7894 +vn 0.6197 0.3437 0.7056 +vn 0.2249 0.7902 0.5701 +vn 0.7809 0.3130 0.5406 +vn 0.0882 -0.0006 0.9961 +vn -0.0882 -0.0006 0.9961 +vn 0.2307 0.0725 0.9703 +vn -0.2307 0.0725 0.9703 +vn 0.2635 -0.8856 0.3824 +vn -0.2635 -0.8856 0.3824 +vn 0.7728 -0.4578 0.4396 +vn -0.4988 0.6633 0.5579 +vn -0.6693 0.5056 0.5444 +vn 0.4154 -0.0886 0.9053 +vn 0.1842 0.0400 0.9821 +vn -0.1842 0.0400 0.9821 +vn -0.1403 -0.0020 0.9901 +vn 0.2396 -0.4398 0.8655 +vn -0.2396 -0.4398 0.8655 +vn 0.4103 -0.1114 0.9051 +vn -0.4103 -0.1114 0.9051 +vn -1.0000 0.0000 0.0000 +vn 0.4501 0.6780 0.5812 +vn 0.2654 -0.1791 0.9474 +vn -0.4490 -0.0823 0.8898 +vn 0.4490 -0.0823 0.8898 +vn 0.4368 -0.2727 0.8572 +vn -0.4368 -0.2727 0.8572 +vn -0.5522 0.6411 0.5329 +vn -0.4258 0.1464 0.8929 +vn 0.3750 0.6732 0.6373 +vn 0.9294 0.1043 -0.3539 +vn 0.9670 0.1922 -0.1669 +vn -0.9670 0.1922 -0.1669 +vn -0.3239 -0.7792 -0.5366 +vn -0.4353 -0.6552 -0.6174 +vn 0.3094 -0.7782 -0.5465 +vn 0.9268 -0.3735 -0.0402 +vn -0.9268 -0.3735 -0.0402 +vn 0.7284 0.6829 0.0557 +vn -0.7284 0.6829 0.0557 +vn -0.3972 0.4292 -0.8112 +vn 0.3972 0.4292 -0.8112 +vn -0.0296 0.9219 0.3863 +vn 0.0296 0.9219 0.3863 +vn -0.9139 0.3314 0.2344 +vn 0.9588 -0.0435 0.2806 +vn -0.9588 -0.0435 0.2806 +vn 0.9521 0.3056 0.0097 +vn -0.9521 0.3056 0.0097 +vn 0.9444 0.3254 0.0481 +vn 0.0792 -0.9153 0.3949 +vn -0.0792 -0.9153 0.3949 +vn 0.5050 -0.8512 0.1428 +vn -0.5050 -0.8512 0.1428 +vn 0.9534 -0.2289 0.1963 +vn -0.9534 -0.2289 0.1963 +vn 0.6299 -0.6316 -0.4519 +vn 0.1246 -0.4653 0.8763 +vn -0.2242 -0.0409 0.9737 +vn -0.4948 0.8660 -0.0723 +vn -0.3311 -0.3136 0.8900 +vn -0.1739 0.4521 0.8749 +vn 0.5481 0.7649 0.3383 +vn -0.5481 0.7649 0.3383 +vn -0.5828 -0.3594 0.7288 +vn -0.9254 -0.3751 -0.0552 +vn 0.7170 -0.6970 -0.0076 +vn 0.1406 0.8318 0.5370 +vn 0.3435 0.0037 0.9391 +vn -0.3435 0.0037 0.9391 +vn 0.5088 -0.0621 0.8586 +vn -0.5088 -0.0621 0.8586 +vn -0.4080 -0.0844 0.9091 +vn 0.8184 0.4850 0.3082 +vn -0.5307 0.8039 -0.2685 +vn 0.1606 0.9728 0.1670 +vn -0.2397 -0.1551 -0.9584 +vn -0.0865 -0.2554 -0.9629 +vn 0.0865 -0.2554 -0.9629 +vn 0.4483 -0.1759 -0.8764 +vn -0.4483 -0.1759 -0.8764 +vn 0.7536 -0.3115 0.5789 +vn -0.7536 -0.3115 0.5789 +vn -0.2566 -0.6836 0.6833 +vn 0.2566 -0.6836 0.6833 +vn 0.6578 -0.3748 0.6534 +vn -0.6197 0.3437 0.7056 +vn -0.2249 0.7902 0.5701 +vn -0.3750 0.6732 0.6373 +vn 0.1760 -0.3207 0.9307 +vn -0.7809 0.3130 0.5406 +vn 0.8829 0.1775 0.4347 +vn -0.8829 0.1775 0.4347 +vn -0.7728 -0.4578 0.4396 +vn 0.4988 0.6633 0.5579 +vn 0.6693 0.5056 0.5444 +vn -0.1760 -0.3207 0.9307 +vn 0.3346 -0.2364 0.9122 +vn -0.3346 -0.2364 0.9122 +vn 0.2188 -0.2871 0.9326 +vn -0.4154 -0.0886 0.9053 +vn -0.2188 -0.2871 0.9326 +vn 0.1710 -0.1225 0.9776 +vn 0.1403 -0.0020 0.9901 +vn -0.1710 -0.1225 0.9776 +vn -0.7658 0.6228 -0.1606 +vn -0.4501 0.6780 0.5812 +vn 0.1282 -0.1093 0.9857 +vn -0.1282 -0.1093 0.9857 +vn -0.2654 -0.1791 0.9474 +vn 0.8974 0.1156 0.4258 +vn -0.8974 0.1156 0.4258 +vn 0.0181 -0.2395 0.9707 +vn -0.0181 -0.2395 0.9707 +vn -0.0030 -0.6803 0.7329 +vn 0.0030 -0.6803 0.7329 +vn 0.5522 0.6411 0.5329 +vn 0.4258 0.1464 0.8929 +vn 0.7658 0.6228 -0.1606 +vn 0.4174 0.8573 -0.3012 +vn -0.4174 0.8573 -0.3012 +vn 0.1186 -0.1632 -0.9794 +vn -0.9294 0.1043 -0.3539 +vn -0.1186 -0.1632 -0.9794 +vn 0.0367 -0.9970 0.0675 +vn -0.0367 -0.9970 0.0675 +vn 0.3493 -0.9258 -0.1444 +vn 0.9576 0.1568 -0.2417 +vn -0.9576 0.1568 -0.2417 +vn 0.3239 -0.7792 -0.5366 +vn 0.4353 -0.6552 -0.6174 +vn -0.3094 -0.7782 -0.5465 +vn -0.3493 -0.9258 -0.1444 +vn 0.3642 -0.0152 -0.9312 +vn -0.3642 -0.0152 -0.9312 +vn 0.0079 0.9834 -0.1812 +vn -0.0079 0.9834 -0.1812 +vn 0.6223 0.5076 0.5959 +vn 0.4657 0.4984 -0.7312 +vn -0.4657 0.4984 -0.7312 +vn 0.4822 0.5100 -0.7123 +vn -0.4822 0.5100 -0.7123 +vn 0.6134 0.7860 -0.0766 +vn -0.6134 0.7860 -0.0766 +vn -0.6223 0.5076 0.5959 +vn 0.1648 0.6426 0.7483 +vn -0.1648 0.6426 0.7483 +vn 0.9139 0.3314 0.2344 +vn -0.9444 0.3254 0.0481 +vn -0.6299 -0.6316 -0.4519 +vn -0.1246 -0.4653 0.8763 +vn 0.2242 -0.0409 0.9737 +vn 0.4948 0.8660 -0.0723 +vn 0.3311 -0.3136 0.8900 +vn 0.1739 0.4521 0.8749 +vn 0.5828 -0.3594 0.7288 +vn 0.9254 -0.3751 -0.0552 +vn -0.7170 -0.6970 -0.0076 +vn -0.1406 0.8318 0.5370 +vn 0.4080 -0.0844 0.9091 +vn 0.2938 -0.9144 0.2785 +vn -0.2938 -0.9144 0.2785 +vn 0.5174 -0.8464 0.1257 +vn -0.5174 -0.8464 0.1257 +vn -0.8184 0.4850 0.3082 +vn 0.5307 0.8039 -0.2685 +vn -0.1606 0.9728 0.1670 +vn 0.2397 -0.1551 -0.9584 +vn -0.4266 -0.8767 -0.2222 +vn 0.4266 -0.8767 -0.2222 +usemtl None +s off +f 21/1/1 23/2/1 19/3/1 +f 24/4/2 16/5/2 20/6/2 +f 23/2/3 4/7/3 1/8/3 +f 3/9/4 24/4/4 2/10/4 +f 23/2/5 5/11/5 4/7/5 +f 22/12/6 24/4/6 3/9/6 +f 9/13/7 6/14/7 5/11/7 +f 5/11/8 10/15/8 9/13/8 +f 15/16/9 22/12/9 8/17/9 +f 15/16/10 8/17/10 12/18/10 +f 15/16/11 12/18/11 14/19/11 +f 19/3/12 17/20/12 21/1/12 +f 23/2/13 10/15/13 5/11/13 +f 22/12/14 15/16/14 24/4/14 +f 23/2/15 21/1/15 10/15/15 +f 15/16/16 16/5/16 24/4/16 +f 32/21/17 35/22/17 44/23/17 +f 45/24/18 31/25/18 49/26/18 +f 36/27/19 35/22/19 72/28/19 +f 37/29/20 46/30/20 47/31/20 +f 25/32/21 48/33/21 68/34/21 +f 44/23/22 35/22/22 39/35/22 +f 39/35/23 25/32/23 44/23/23 +f 25/32/24 65/36/24 49/26/24 +f 65/36/25 25/32/25 60/37/25 +f 53/38/26 54/39/26 34/40/26 +f 54/39/27 41/41/27 33/42/27 +f 51/43/28 53/38/28 34/40/28 +f 41/41/29 52/44/29 33/42/29 +f 27/45/30 43/46/30 42/47/30 +f 27/45/31 43/46/31 49/26/31 +f 51/43/32 44/23/32 50/48/32 +f 43/46/33 44/23/33 25/32/33 +f 49/26/34 43/46/34 25/32/34 +f 35/22/35 63/49/35 62/50/35 +f 57/51/36 45/24/36 58/52/36 +f 40/53/37 56/54/37 55/55/37 +f 59/56/38 61/57/38 38/58/38 +f 13/59/39 10/15/39 21/1/39 17/20/39 +f 72/28/40 91/60/40 36/27/40 +f 34/40/41 83/61/41 85/62/41 +f 84/63/42 33/42/42 82/64/42 +f 31/25/43 45/24/43 71/65/43 +f 81/66/44 74/67/44 96/68/44 +f 97/69/45 30/70/45 74/71/45 +f 72/28/46 107/72/46 77/73/46 +f 79/74/47 71/65/47 109/75/47 +f 89/76/48 93/77/48 94/78/48 +f 92/79/49 88/80/49 95/81/49 +f 66/82/50 68/83/50 90/84/50 +f 37/85/51 67/86/51 69/87/51 +f 66/82/52 90/84/52 28/88/52 +f 69/87/53 67/86/53 28/89/53 +f 71/65/54 70/90/54 109/75/54 +f 77/73/55 93/77/55 91/60/55 +f 92/79/56 109/75/56 70/90/56 +f 77/73/57 94/78/57 93/77/57 +f 95/81/58 109/75/58 92/79/58 +f 94/78/59 77/73/59 120/91/59 +f 72/28/60 97/69/60 107/72/60 +f 96/68/61 71/65/61 79/74/61 +f 72/28/62 32/21/62 97/69/62 +f 31/25/63 71/65/63 96/68/63 +f 32/21/64 85/62/64 97/69/64 +f 96/68/65 82/64/65 31/25/65 +f 97/69/66 80/92/66 107/72/66 +f 100/93/67 99/94/67 114/95/67 +f 114/95/68 99/94/68 104/96/68 +f 112/97/69 103/98/69 117/99/69 +f 105/100/70 100/93/70 114/95/70 +f 79/101/71 108/102/71 98/103/71 +f 103/98/72 113/104/72 106/105/72 +f 110/106/73 98/103/73 108/102/73 +f 109/107/74 100/93/74 108/102/74 +f 79/74/75 109/75/75 108/108/75 +f 106/105/76 111/109/76 102/110/76 +f 112/97/77 113/104/77 103/98/77 +f 113/104/78 101/111/78 111/109/78 +f 114/95/79 110/106/79 105/100/79 +f 113/104/80 111/109/80 106/105/80 +f 105/100/81 110/106/81 108/102/81 +f 114/95/82 104/96/82 110/106/82 +f 117/99/83 116/112/83 102/113/83 +f 102/113/84 116/112/84 77/114/84 +f 109/115/85 78/116/85 115/117/85 +f 119/118/86 120/119/86 116/112/86 +f 116/112/87 117/99/87 119/118/87 +f 99/94/88 115/117/88 118/120/88 +f 120/119/89 119/118/89 80/121/89 +f 118/120/90 78/116/90 81/122/90 +f 19/3/91 23/2/91 1/8/91 +f 2/10/92 24/4/92 20/6/92 +f 4/7/93 5/11/93 6/14/93 +f 7/123/94 22/12/94 3/9/94 +f 8/17/95 22/12/95 7/123/95 +f 10/15/96 11/124/96 9/13/96 +f 10/15/97 13/59/97 11/124/97 +f 14/19/98 18/125/98 16/5/98 15/16/98 +f 38/58/99 64/126/99 36/27/99 48/33/99 +f 20/6/100 16/5/100 18/125/100 +f 32/21/101 51/43/101 34/40/101 +f 33/42/102 52/44/102 31/25/102 +f 46/30/103 71/65/103 45/24/103 +f 68/34/104 48/33/104 36/27/104 +f 25/32/105 37/29/105 47/31/105 +f 40/53/106 47/31/106 46/30/106 56/54/106 +f 64/126/107 63/49/107 35/22/107 36/27/107 +f 56/54/108 46/30/108 45/24/108 57/51/108 +f 59/56/109 38/58/109 48/33/109 25/32/109 +f 49/26/110 65/36/110 45/24/110 +f 60/37/111 25/32/111 47/31/111 40/53/111 +f 26/127/112 53/38/112 51/43/112 50/48/112 +f 39/35/113 59/56/113 25/32/113 +f 26/127/114 50/48/114 52/44/114 41/41/114 +f 66/128/115 28/129/115 25/32/115 68/34/115 +f 27/45/116 44/23/116 43/46/116 +f 27/45/117 50/48/117 44/23/117 +f 49/26/118 50/48/118 27/45/118 +f 52/44/119 50/48/119 49/26/119 +f 32/21/120 44/23/120 51/43/120 +f 52/44/121 49/26/121 31/25/121 +f 26/127/122 54/39/122 53/38/122 +f 41/41/123 54/39/123 26/127/123 +f 39/35/124 35/22/124 62/50/124 +f 58/52/125 45/24/125 65/36/125 +f 38/58/126 61/57/126 64/126/126 +f 60/37/127 40/53/127 55/55/127 +f 25/32/128 28/129/128 67/130/128 37/29/128 +f 90/131/129 68/34/129 36/27/129 91/60/129 +f 69/132/130 70/90/130 46/30/130 37/29/130 +f 83/61/131 75/133/131 76/134/131 85/62/131 +f 71/65/132 46/30/132 70/90/132 +f 84/63/133 82/64/133 76/135/133 75/136/133 +f 75/136/134 83/61/134 34/40/134 54/39/134 +f 33/42/135 84/63/135 75/136/135 54/39/135 +f 85/62/136 76/134/136 30/70/136 97/69/136 +f 32/21/137 34/40/137 85/62/137 +f 82/64/138 33/42/138 31/25/138 +f 32/21/139 72/28/139 35/22/139 +f 80/92/140 97/69/140 74/71/140 +f 96/68/141 74/67/141 30/137/141 +f 30/137/142 76/135/142 82/64/142 96/68/142 +f 74/71/143 29/138/143 120/91/143 80/92/143 +f 74/67/144 81/66/144 78/139/144 29/140/144 +f 86/141/145 29/138/145 73/142/145 89/76/145 +f 73/143/146 29/140/146 87/144/146 88/80/146 +f 91/60/147 93/77/147 89/76/147 90/84/147 +f 29/138/148 86/141/148 120/91/148 +f 78/139/149 87/144/149 29/140/149 +f 120/91/150 86/141/150 94/78/150 +f 95/81/151 87/144/151 78/139/151 +f 86/141/152 89/76/152 94/78/152 +f 95/81/153 88/80/153 87/144/153 +f 88/80/154 92/79/154 70/90/154 69/87/154 +f 73/142/155 28/88/155 90/84/155 89/76/155 +f 73/143/156 88/80/156 69/87/156 28/89/156 +f 72/28/157 77/73/157 91/60/157 +f 95/81/158 78/139/158 109/75/158 +f 96/68/159 79/74/159 81/66/159 +f 102/110/160 101/111/160 117/99/160 +f 101/111/161 112/97/161 117/99/161 +f 104/96/162 99/94/162 98/103/162 +f 111/109/163 101/111/163 102/110/163 +f 107/145/164 103/98/164 106/105/164 +f 77/146/165 106/105/165 102/110/165 +f 107/72/166 106/147/166 77/73/166 +f 108/102/167 100/93/167 105/100/167 +f 104/96/168 98/103/168 110/106/168 +f 101/111/169 113/104/169 112/97/169 +f 103/98/170 107/145/170 119/118/170 +f 118/120/171 79/101/171 98/103/171 +f 117/99/172 103/98/172 119/118/172 +f 118/120/173 98/103/173 99/94/173 +f 99/94/174 100/148/174 115/117/174 +f 100/148/175 109/115/175 115/117/175 +f 77/114/176 116/112/176 120/119/176 +f 118/120/177 115/117/177 78/116/177 +f 107/145/178 80/121/178 119/118/178 +f 118/120/179 81/122/179 79/101/179 diff --git a/main.cpp b/main.cpp index 7d9f06e..9c3c6cb 100644 --- a/main.cpp +++ b/main.cpp @@ -81,13 +81,13 @@ int main() { Entity *player = world->create(); player->assign(); - player->assign(glm::vec3(1.f, 1.f, 1.f)); + player->assign(glm::vec3(2.f, 2.f, 2.f)); player->assign(70.0f, 640, 480, 0.1f, 100.0f); player->assign(0.1); Entity *box2 = world->create(); box2->assign(); - box2->assign("Resources/Monkey.obj"); + box2->assign(std::vector{ObjMesh("Resources/Monkey.obj", ObjMesh::Settings(0.0, 8.0)), ObjMesh("Resources/MonkeySimple.obj", ObjMesh::Settings(8.0, 100.0))}); box2->assign("Resources/tex.png", Texture::Settings(true, true)); box2->get()->translate(glm::vec3(0.0f, 0.0f, -5.0f));