Basic LOD system

This commit is contained in:
karl 2020-01-15 12:06:20 +01:00
parent a043847bad
commit c1c62a9b94
8 changed files with 711 additions and 13 deletions

View File

@ -7,7 +7,7 @@ find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED) find_package(glfw3 REQUIRED)
find_package(glm 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}) include_directories(${OPENGL_INCLUDE_DIRS})

View File

@ -0,0 +1,18 @@
//
// Created by karl on 15.01.20.
//
#ifndef ECSGAME_LODOBJMESH_H
#define ECSGAME_LODOBJMESH_H
#include <utility>
#include <vector>
#include "ObjMesh.h"
struct LODObjMesh {
explicit LODObjMesh(std::vector<ObjMesh> meshes) : meshes(std::move(meshes)) {}
std::vector<ObjMesh> meshes;
};
#endif //ECSGAME_LODOBJMESH_H

View File

@ -9,7 +9,21 @@
#include "../../Util/OBJ_Loader.h" #include "../../Util/OBJ_Loader.h"
struct ObjMesh : public Mesh { 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: private:
static std::vector<float> getVerticesFromFile(const std::string &path) { static std::vector<float> getVerticesFromFile(const std::string &path) {

View File

@ -30,19 +30,19 @@ struct Transform {
matrix = glm::rotate(matrix, glm::radians(degrees), axis); 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); 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); 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); 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); return matrix * glm::vec4(1.0, 0.0, 0.0, 0.0);
} }
}; };

View File

@ -12,6 +12,7 @@
#include "../../Rendering/Shader.h" #include "../../Rendering/Shader.h"
#include "../Components/ObjMesh.h" #include "../Components/ObjMesh.h"
#include "../Components/Texture.h" #include "../Components/Texture.h"
#include "../Components/LODObjMesh.h"
using namespace ECS; using namespace ECS;
@ -36,12 +37,38 @@ public:
// TODO: Is it possible to do get ObjMeshes in the Mesh loop above implicitly via polymorphism? // TODO: Is it possible to do get ObjMeshes in the Mesh loop above implicitly via polymorphism?
pWorld->each<ObjMesh, Transform>([&](Entity *ent, ComponentHandle<ObjMesh> mesh, ComponentHandle<Transform> transform) { pWorld->each<ObjMesh, Transform>([&](Entity *ent, ComponentHandle<ObjMesh> mesh, ComponentHandle<Transform> 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 // ObjMesh with textures
pWorld->each<ObjMesh, Transform, Texture>([&](Entity *ent, ComponentHandle<ObjMesh> mesh, ComponentHandle<Transform> transform, ComponentHandle<Texture> texture) { pWorld->each<ObjMesh, Transform, Texture>([&](Entity *ent, ComponentHandle<ObjMesh> mesh, ComponentHandle<Transform> transform, ComponentHandle<Texture> 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<LODObjMesh, Transform, Texture>([&](Entity *ent, ComponentHandle<LODObjMesh> lodMesh, ComponentHandle<Transform> transform, ComponentHandle<Texture> 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 // TODO: Separate lists for transparent and non-transparent RenderObjects. The non-transparent list is
@ -69,9 +96,6 @@ public:
unsigned int texture_id; unsigned int texture_id;
Mesh mesh; Mesh mesh;
}; };
private:
float gravityAmount;
}; };
#endif //ECSGAME_RENDERSYSTEM_H #endif //ECSGAME_RENDERSYSTEM_H

View File

@ -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

632
Resources/MonkeySimple.obj Normal file
View File

@ -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

View File

@ -81,13 +81,13 @@ int main() {
Entity *player = world->create(); Entity *player = world->create();
player->assign<Transform>(); player->assign<Transform>();
player->assign<Movement>(glm::vec3(1.f, 1.f, 1.f)); player->assign<Movement>(glm::vec3(2.f, 2.f, 2.f));
player->assign<Camera>(70.0f, 640, 480, 0.1f, 100.0f); player->assign<Camera>(70.0f, 640, 480, 0.1f, 100.0f);
player->assign<MouseLook>(0.1); player->assign<MouseLook>(0.1);
Entity *box2 = world->create(); Entity *box2 = world->create();
box2->assign<Transform>(); box2->assign<Transform>();
box2->assign<ObjMesh>("Resources/Monkey.obj"); box2->assign<LODObjMesh>(std::vector{ObjMesh("Resources/Monkey.obj", ObjMesh::Settings(0.0, 8.0)), ObjMesh("Resources/MonkeySimple.obj", ObjMesh::Settings(8.0, 100.0))});
box2->assign<Texture>("Resources/tex.png", Texture::Settings(true, true)); box2->assign<Texture>("Resources/tex.png", Texture::Settings(true, true));
box2->get<Transform>()->translate(glm::vec3(0.0f, 0.0f, -5.0f)); box2->get<Transform>()->translate(glm::vec3(0.0f, 0.0f, -5.0f));