diff --git a/CMakeLists.txt b/CMakeLists.txt index 58dcbafdf8abb41a1517d4eaaef72a6653f792ae..d14d13ea7c73d582141a1147e41f37e98b8d9698 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -420,7 +420,8 @@ cmake_minimum_required(VERSION 3.0) project(OpenGL_Praktikum) -set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp") +set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp" +) set(INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/src") ##-------------------------------add your source files here------------------------------------------------------------- diff --git a/assets/shaders/vertex.glsl b/assets/shaders/vertex.glsl index b15cfe23675a177254fa5a2bcbedbddc406d17e2..6b7fd5f43270f3c188322babe765a840c97d69c4 100644 --- a/assets/shaders/vertex.glsl +++ b/assets/shaders/vertex.glsl @@ -9,8 +9,12 @@ out mat3 animationMatrix; uniform mat4 model; uniform mat3 animationMatrixFromUniform; +uniform mat4 view; +uniform mat4 projection; + void main(){ colorVS = colorRGB; animationMatrix = animationMatrixFromUniform; - gl_Position = model * vec4(pos.x, pos.y, pos.z, 1.0); + gl_Position = projection * view * model * vec4(pos.x, pos.y, pos.z, 1.0); + //gl_Position = model * vec4(pos.x, pos.y, pos.z, 1.0); } diff --git a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-5ed625bc681e4acff5f2.json b/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-ae6ced8114156d040ca2.json similarity index 98% rename from cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-5ed625bc681e4acff5f2.json rename to cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-ae6ced8114156d040ca2.json index 1e5c861a4852c289c0bd19c232ab00746fe0296f..65abdb00fedefbfcb08226d6b9f228dc996fd517 100644 --- a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-5ed625bc681e4acff5f2.json +++ b/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-ae6ced8114156d040ca2.json @@ -312,7 +312,7 @@ { "directoryIndex" : 0, "id" : "OpenGL_Praktikum::@6890427a1f51a3e7e1df", - "jsonFile" : "target-OpenGL_Praktikum-Debug-758790e1d4c23c530eac.json", + "jsonFile" : "target-OpenGL_Praktikum-Debug-152779872fcd5e3f1e85.json", "name" : "OpenGL_Praktikum", "projectIndex" : 0 }, diff --git a/cmake-build-debug/.cmake/api/v1/reply/index-2025-05-10T19-06-07-0649.json b/cmake-build-debug/.cmake/api/v1/reply/index-2025-05-17T17-00-05-0247.json similarity index 93% rename from cmake-build-debug/.cmake/api/v1/reply/index-2025-05-10T19-06-07-0649.json rename to cmake-build-debug/.cmake/api/v1/reply/index-2025-05-17T17-00-05-0247.json index 41a8a3fb6e5bd7b5557f4a1d6f2a678ff1e7975d..55e6af402cf6f1cbcee19e789498a666e10b1c61 100644 --- a/cmake-build-debug/.cmake/api/v1/reply/index-2025-05-10T19-06-07-0649.json +++ b/cmake-build-debug/.cmake/api/v1/reply/index-2025-05-17T17-00-05-0247.json @@ -26,7 +26,7 @@ "objects" : [ { - "jsonFile" : "codemodel-v2-5ed625bc681e4acff5f2.json", + "jsonFile" : "codemodel-v2-ae6ced8114156d040ca2.json", "kind" : "codemodel", "version" : { @@ -86,7 +86,7 @@ }, "codemodel-v2" : { - "jsonFile" : "codemodel-v2-5ed625bc681e4acff5f2.json", + "jsonFile" : "codemodel-v2-ae6ced8114156d040ca2.json", "kind" : "codemodel", "version" : { diff --git a/cmake-build-debug/.cmake/api/v1/reply/target-OpenGL_Praktikum-Debug-758790e1d4c23c530eac.json b/cmake-build-debug/.cmake/api/v1/reply/target-OpenGL_Praktikum-Debug-152779872fcd5e3f1e85.json similarity index 99% rename from cmake-build-debug/.cmake/api/v1/reply/target-OpenGL_Praktikum-Debug-758790e1d4c23c530eac.json rename to cmake-build-debug/.cmake/api/v1/reply/target-OpenGL_Praktikum-Debug-152779872fcd5e3f1e85.json index 3ed25002196cbb56d519eca24a0cae4860dae2b8..f929c6910715860c5581a652bca0dfde087bb826 100644 --- a/cmake-build-debug/.cmake/api/v1/reply/target-OpenGL_Praktikum-Debug-758790e1d4c23c530eac.json +++ b/cmake-build-debug/.cmake/api/v1/reply/target-OpenGL_Praktikum-Debug-152779872fcd5e3f1e85.json @@ -30,7 +30,7 @@ { "command" : 0, "file" : 0, - "line" : 470, + "line" : 471, "parent" : 0 }, { @@ -45,13 +45,13 @@ { "command" : 1, "file" : 0, - "line" : 476, + "line" : 477, "parent" : 0 }, { "command" : 2, "file" : 0, - "line" : 471, + "line" : 472, "parent" : 0 } ] @@ -143,15 +143,15 @@ [ { "backtrace" : 4, - "id" : "stb::@9a2ae61009350e897074" + "id" : "glfw::@3be6e5b4e7ef208431a5" }, { "backtrace" : 4, - "id" : "glfw::@3be6e5b4e7ef208431a5" + "id" : "glew_s::@717d470b011500e00557" }, { "backtrace" : 4, - "id" : "glew_s::@717d470b011500e00557" + "id" : "stb::@9a2ae61009350e897074" } ], "id" : "OpenGL_Praktikum::@6890427a1f51a3e7e1df", diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index d7abfdddba60a1bcbee1f69e642d7f746e59062d..a079bd81ee1eb79c30622e299e89062803103b37 100644 Binary files a/cmake-build-debug/.ninja_deps and b/cmake-build-debug/.ninja_deps differ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 185ccd3bd0fcd92650d8c182d65efe93dc8ecf32..f23e324f0d5bdda08cdbf3f328c8e5520246be44 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,24 +1,24 @@ # ninja log v5 -3253 7539 7686065174954045 CMakeFiles/OpenGL_Praktikum.dir/framework/OBJLoader.cpp.obj d2f9fcf70f53a76f -11 2397 7686065123684395 CMakeFiles/OpenGL_Praktikum.dir/src/Framework/SceneElements/Transform.cpp.obj 79d1706bd494aca2 6831 8361 7686065183312964 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/win32_tls.c.obj 37adbcd9a1b59fc1 2402 5124 7686065150930272 CMakeFiles/OpenGL_Praktikum.dir/framework/Input.cpp.obj 3aa35e4a541b37cb -17 2775 7686065127464165 CMakeFiles/OpenGL_Praktikum.dir/src/Framework/Assets/ShaderProgram.cpp.obj 636d8f8ef2520675 +3253 7539 7686065174954045 CMakeFiles/OpenGL_Praktikum.dir/framework/OBJLoader.cpp.obj d2f9fcf70f53a76f +11 2397 7686065123684395 CMakeFiles/OpenGL_Praktikum.dir/src/Framework/SceneElements/Transform.cpp.obj 79d1706bd494aca2 9748 9859 7686065198313281 libs/glfw-3.2.1/src/libglfw3.a 7f148bdc7acbce15 -28 3252 7686065132231581 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj ab9d4e71a8c90cb0 +12 2101 7692151093484304 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj ab9d4e71a8c90cb0 +17 2775 7686065127464165 CMakeFiles/OpenGL_Praktikum.dir/src/Framework/Assets/ShaderProgram.cpp.obj 636d8f8ef2520675 3 3331 7686065132987911 CMakeFiles/OpenGL_Praktikum.dir/src/Framework/Assets/AssetManager.cpp.obj a3cf3a9a87bd79b4 -22 3445 7686065134113940 CMakeFiles/OpenGL_Praktikum.dir/framework/OpenGLWindow.cpp.obj 34ea2011e57f2170 7540 9264 7686065192309264 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/win32_window.c.obj f3663704c5e7b483 -8 2508 7686071019642495 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +22 3445 7686065134113940 CMakeFiles/OpenGL_Praktikum.dir/framework/OpenGLWindow.cpp.obj 34ea2011e57f2170 8264 10755 7686065207221889 libs/glew-2.1.0/build/cmake/CMakeFiles/glew_s.dir/__/__/src/glew.c.obj 49302988e0a6d721 -3446 5087 7686065150584678 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/context.c.obj 25e8349415fc9756 +19 2425 7692151096724377 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 6279 7932 7686065179033527 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/window.c.obj 4f7adc10a9b5c100 +3446 5087 7686065150584678 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/context.c.obj 25e8349415fc9756 3713 5273 7686065152431421 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/init.c.obj c23d9b4a554c4f26 -2777 5359 7686065153297237 CMakeFiles/OpenGL_Praktikum.dir/framework/glerror.cpp.obj 283e4f1da4998727 5360 6841 7686065168085346 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/vulkan.c.obj d183a1e3d22ea511 -3331 6279 7686065162499084 CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj 195d9e105c20c9dc -5088 6646 7686065166162948 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/monitor.c.obj 7ef9e67f35f28cd5 +2777 5359 7686065153297237 CMakeFiles/OpenGL_Praktikum.dir/framework/glerror.cpp.obj 283e4f1da4998727 +26 2020 7692151092685063 CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj 195d9e105c20c9dc 8245 9748 7686065197204313 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/input.c.obj e27f20b419f1800e +5088 6646 7686065166162948 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/monitor.c.obj 7ef9e67f35f28cd5 5125 6673 7686065166335158 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/win32_joystick.c.obj 82d66a06693256c5 5273 6831 7686065167859215 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/win32_monitor.c.obj c9b9fd7628118e17 6673 8245 7686065182160366 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/win32_time.c.obj a83aac5291489e @@ -26,8 +26,52 @@ 6842 8491 7686065184420325 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/egl_context.c.obj a926327ff0927a5f 8361 8516 7686065184908185 libs/glew-2.1.0/build/cmake/CMakeFiles/glew_s.dir/__/glew.rc.obj b31ab018f98307f0 8516 8843 7686065188136532 libs/stb/CMakeFiles/stb.dir/stb_image_write.c.obj 3526fea5ed75b7b5 +4 749 7692044051857988 build.ninja e200cd586be24cf3 7932 9454 7686065194250355 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/wgl_context.c.obj 6893a4a99f5b69c5 8492 9494 7686065194635396 libs/stb/CMakeFiles/stb.dir/stb_image.c.obj e492735f915a3aa 9494 9620 7686065195935485 libs/stb/libstb.a 5abafcb88860c9c8 10756 10849 7686065208208944 lib/libglew32d.a bc6e147c3a6b7648 -2508 3061 7686071025109340 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +2425 2989 7692151102308506 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +13 74 7686767474063569 CMakeFiles/OpenGL_Praktikum.dir/src/Game/wajdi.cpp.obj 20b3fc935b3f3aa4 +15 2466 7692151568551477 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2467 3030 7692151574140461 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +12 2083 7692155176160940 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2083 2649 7692155181728914 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +14 2113 7692155970141004 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2113 2700 7692155975890811 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +28 2559 7692157589710965 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2559 3193 7692157596008471 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +9 2460 7692157901324491 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2461 3203 7692157908696680 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +10 2329 7692160653427143 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2329 2961 7692160659691101 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +30 2669 7692161048578145 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2669 3236 7692161054181193 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +27 2496 7692161519427577 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2497 3103 7692161525414993 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +10 2358 7692161639874414 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2358 2908 7692161645318503 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +13 2050 7692162128447673 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2050 2602 7692162133907493 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +9 2270 7692162504786348 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2270 2839 7692162510417811 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +7 2531 7692162707113644 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2531 3075 7692162712493091 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +7 2248 7692163390809165 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2249 2890 7692163397165142 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +34 2492 7692163725432711 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2492 3133 7692163731775177 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +8 2524 7692164167209100 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2525 3114 7692164173068653 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +12 2145 7692164597182390 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2145 2804 7692164603729082 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +10 2415 7692165141355730 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2415 2983 7692165147010564 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +13 2495 7692165303779516 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2496 3156 7692165310294970 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +8 2352 7692165385505571 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2352 2939 7692165391324594 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +7 2256 7692165646149942 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2256 2846 7692165651998118 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +7 2467 7692166031829316 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2468 3028 7692166037380832 OpenGL_Praktikum.exe 9fec4fbaeb613d2c diff --git a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj index 67795678314e5bc83695adb7bc30148796a9ee8b..33a9caa20ea58139195bf02f4eef3cf16a0cf828 100644 Binary files a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj and b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj differ diff --git a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj index 56837564423acbb330ce02e934582afe56c4d7a5..62d8ce2a6fc193e2fe81d1ac8d2508b42698506a 100644 Binary files a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj and b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj differ diff --git a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/wajdi.cpp.obj b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/wajdi.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..384b50926b2501fa191fd04d22ed86788d4d0e45 Binary files /dev/null and b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/Game/wajdi.cpp.obj differ diff --git a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj index cf16ea514f85f045f6ed788138b5392215277ee5..7f2cfba266c50ad06f98a860eda77f62c8ee5905 100644 Binary files a/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj and b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj differ diff --git a/cmake-build-debug/OpenGL_Praktikum.exe b/cmake-build-debug/OpenGL_Praktikum.exe index aa10cb899e3c523ceed59c7156577dfb33fc2d52..67f00af923cacbe390a6ce3e2950ced53075ac60 100644 Binary files a/cmake-build-debug/OpenGL_Praktikum.exe and b/cmake-build-debug/OpenGL_Praktikum.exe differ diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index b3986faf5774a17eb240374fdcf3dced30a6d37e..7d5f7284f62cd711d007f337c4630186f8a8a241 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: May 10 21:06 Mitteleurop�ische Sommerzeit +Start testing: May 17 22:23 Mitteleurop�ische Sommerzeit ---------------------------------------------------------- -End testing: May 10 21:06 Mitteleurop�ische Sommerzeit +End testing: May 17 22:23 Mitteleurop�ische Sommerzeit diff --git a/cmake-build-debug/assets/shaders/vertex.glsl b/cmake-build-debug/assets/shaders/vertex.glsl index b15cfe23675a177254fa5a2bcbedbddc406d17e2..6b7fd5f43270f3c188322babe765a840c97d69c4 100644 --- a/cmake-build-debug/assets/shaders/vertex.glsl +++ b/cmake-build-debug/assets/shaders/vertex.glsl @@ -9,8 +9,12 @@ out mat3 animationMatrix; uniform mat4 model; uniform mat3 animationMatrixFromUniform; +uniform mat4 view; +uniform mat4 projection; + void main(){ colorVS = colorRGB; animationMatrix = animationMatrixFromUniform; - gl_Position = model * vec4(pos.x, pos.y, pos.z, 1.0); + gl_Position = projection * view * model * vec4(pos.x, pos.y, pos.z, 1.0); + //gl_Position = model * vec4(pos.x, pos.y, pos.z, 1.0); } diff --git a/cmake-build-debug/perflog.csv b/cmake-build-debug/perflog.csv index 4f2a82e2a76ec9a93532e77ab3b2eb3c00bda01c..feeaef6cfd6dddf34c1365b7fe0f79aa1dc63c2f 100644 --- a/cmake-build-debug/perflog.csv +++ b/cmake-build-debug/perflog.csv @@ -1,10 +1,50 @@ -6.96119,11.3009,143.654,88.4885 -6.92979,8.0036,144.305,124.944 -6.93685,8.7478,144.158,114.314 -6.9352,10.9572,144.192,91.2642 -7.0332,12.9953,142.183,76.9509 -6.93524,9.5856,144.191,104.323 -6.9374,7.3916,144.146,135.289 -7.03401,13.3142,142.166,75.1078 -6.9315,7.7876,144.269,128.409 -6.93496,7.4632,144.197,133.991 +9.55332,16.1199,104.676,62.0351 +8.37541,17.7173,119.397,56.442 +8.21206,17.0291,121.772,58.723 +11.5022,21.1709,86.94,47.2346 +11.3184,20.3647,88.3515,49.1046 +11.0885,17.6205,90.1838,56.7521 +11.2509,21.0727,88.8817,47.4548 +11.581,20.8078,86.3487,48.0589 +11.1825,17.8693,89.4253,55.9619 +11.3275,20.6107,88.281,48.5185 +10.7088,17.8789,93.3808,55.9319 +11.771,20.5132,84.9544,48.7491 +13.0609,20.7399,76.5641,48.2162 +228.782,6710.84,4.37098,0.149013 +13.6825,25.3838,73.086,39.3952 +10.9025,20.418,91.7217,48.9764 +10.5033,17.9763,95.2086,55.6288 +10.6172,13.605,94.1864,73.5024 +10.7801,17.5242,92.7634,57.0639 +10.6972,17.2651,93.482,57.9203 +10.8364,20.549,92.2819,48.6642 +10.626,17.5531,94.1087,56.97 +10.9303,20.8172,91.4891,48.0372 +11.011,17.7004,90.8185,56.4959 +11.0069,17.5076,90.8523,57.1181 +11.1556,17.2654,89.6411,57.9193 +10.8597,17.9812,92.0838,55.6136 +10.9989,20.5644,90.9185,48.6277 +10.7732,21.0052,92.8228,47.6073 +11.2493,20.7625,88.8945,48.1638 +10.9407,20.8895,91.4019,47.8709 +7.72728,18.2588,129.412,54.7681 +9.30915,13.8221,107.421,72.3479 +10.7099,17.8313,93.3714,56.0812 +10.5412,14.0087,94.8659,71.3842 +10.9238,20.9154,91.5432,47.8117 +10.7064,17.6518,93.4025,56.6514 +10.6996,13.8318,93.4611,72.2972 +10.6992,17.3903,93.4652,57.5033 +10.5488,14.003,94.7974,71.4133 +8.4931,13.8159,117.743,72.3804 +10.7055,18.2899,93.4103,54.675 +10.6145,13.8521,94.2105,72.1912 +12.2765,17.8747,81.4562,55.945 +10.6862,14.2372,93.5789,70.2385 +10.853,17.5068,92.1405,57.1207 +12.9229,14.9633,77.3818,66.8302 +11.5691,26.8532,86.437,37.2395 +10.8311,20.3933,92.3267,49.0357 +14.0504,141.496,71.1726,7.06731 diff --git a/src/Game/Scene.cpp b/src/Game/Scene.cpp index 72654cb4d5c92b8d026c4a45281a59c8f4e5064b..6eaf91907a63fc37cadbd7d3e3d30f93654d7882 100644 --- a/src/Game/Scene.cpp +++ b/src/Game/Scene.cpp @@ -9,7 +9,6 @@ Scene::Scene(OpenGLWindow * window) :m_window(window){ assert(window != nullptr); - } Scene::~Scene(){ @@ -54,6 +53,131 @@ void createAndBind_VBO_VAO_IBO(ObjectBuffer& objectBuffer){ } + +void drawObject(ObjectBuffer& obj){ + glBindVertexArray(obj.vaoID); + glDrawElements(GL_TRIANGLES, obj.indicesLength, GL_UNSIGNED_INT, 0); + glBindVertexArray(0); +} + +glm::vec3 setRotationAxe(float angle,char axe='x'){ + if (axe == 'x') { + return {glm::radians(angle),0.0f,0.0f}; + }else if (axe == 'y'){ + return {0.0f,glm::radians(angle),0.0f}; + }else if(axe == 'z'){ // z + return {0.0f,0.0f,glm::radians(angle)}; + } + + return {0.0f,0.0f,glm::radians(angle)}; +} + + +const glm::mat4 getMatrixHead() { + float ty= (0.375 + gap) + (0.25 * 0.5); // body + 1/2 head + Transform translate,scale; + scale.scale(glm::vec3(0.25, 0.25, roboterBodyHeadThiknessZ)); + translate.translate(glm::vec3(0.0,ty,0.0f)); + return translate.getTransformMatrix() * scale.getTransformMatrix(); +} + +const glm::mat4 getMatrixBody() { + + Transform translate,scale; + scale.scale(glm::vec3(0.5, 0.75, roboterBodyHeadThiknessZ)); + translate.translate(glm::vec3(0.0,0.0 , 0.0f)); + return translate.getTransformMatrix() * scale.getTransformMatrix(); +} + +const glm::mat4 getMatrixLegs(char x) { + + + float legScaleX = 0.1; + float legScaleY = 0.4; + float legX = 0.12 ; + float legY = 0.375f + (0.5 * legScaleY) + gap; // body + leg + gap + + Transform translateR,translateL,scale; + scale.scale(glm::vec3(legScaleX, legScaleY, roboterLegArmShoulderThiknessZ)); + translateR.translate(glm::vec3(legX,-legY , 0.0f)); + translateL.translate(glm::vec3(-legX,-legY , 0.0f)); + + float angleShoulderAndLegs = 20.0f * sin(animationTime * rotationSpeed); + + Transform rotationP; + rotationP.rotateAroundPoint(glm::vec3( 0.0f, (0.5 * legScaleY), 0.0f),setRotationAxe(angleShoulderAndLegs)); + Transform rotationN; + rotationN.rotateAroundPoint(glm::vec3( 0.0f, (0.5 * legScaleY), 0.0f),setRotationAxe(-angleShoulderAndLegs)); + + + if(x == 'l'){ + return translateL.getTransformMatrix() * rotationN.getTransformMatrix() * scale.getTransformMatrix(); + }else if(x == 'r'){ + return translateR.getTransformMatrix() * rotationP.getTransformMatrix() * scale.getTransformMatrix(); + }else{ + throw("please choose R or L"); + } +} + +const glm::mat4 getMatrixShoulders(char x) { + + + float scaleX = 0.1; + float scaleY = 0.3; + + float translateX = (0.5 * 0.5) + (scaleX * 0.5) + gap; // bodyX + shoulder + float translateY = (0.75 * 0.5) - (scaleY * 0.5); // bodyY - shoulderY + float translateZ = 0.0f; + + float angleShoulderAndLegs = 20.0f * sin(animationTime * rotationSpeed); + + Transform translateR,translateL,scale; + scale.scale(glm::vec3(scaleX, scaleY, roboterLegArmShoulderThiknessZ)); + translateR.translate(glm::vec3(translateX,translateY , translateZ)); + translateL.translate(glm::vec3(-translateX,translateY , translateZ)); + + + Transform rotationP; + rotationP.rotateAroundPoint(glm::vec3( translateX, (scaleY * 0.5)+translateY, 0.0f),setRotationAxe(angleShoulderAndLegs)); + + Transform rotationN; + rotationN.rotateAroundPoint(glm::vec3( -translateX, (scaleY * 0.5)+translateY, 0.0f),setRotationAxe(-angleShoulderAndLegs)); + + if(x == 'l'){ + return rotationN.getTransformMatrix() * translateL.getTransformMatrix() * scale.getTransformMatrix(); + }else if(x == 'r'){ + return rotationP.getTransformMatrix() * translateR.getTransformMatrix() * scale.getTransformMatrix(); + }else{ + throw("please choose R or L"); + } +} + +const glm::mat4 getMatrixArms(char x) { + + // shoulder and arm have same value + float scaleY = 0.3; + + float translateY = 1.05 + gap; + + Transform translate; + translate.translate(glm::vec3(0.0, - translateY, 0.0)); + + float rotationSpeedArm = 0.7; + float angle = 60.0f * (sin(animationTime * rotationSpeedArm) + 1) / 2 ; + Transform rotate; + rotate.rotateAroundPoint(glm::vec3( 0.0, 0.5, 0.0f),glm::vec3(glm::radians(-angle),0.0f,0.0f)); + + + if(x == 'l'){ + return getMatrixShoulders('l') * translate.getTransformMatrix() * rotate.getTransformMatrix(); + }else if(x == 'r'){ + return getMatrixShoulders('r') * translate.getTransformMatrix() * rotate.getTransformMatrix(); + }else{ + throw("please choose R or L"); + } +} + + bool Scene::init() { try @@ -73,48 +197,48 @@ bool Scene::init() // define the Vertices obj.vertices = new float[obj.verticesLength] { - 0.5, -0.5, -0.5, 1, 0, 0, - 0.5, -0.5, 0.5, 0, 1, 0, - -0.5, -0.5, 0.5, 0, 0, 1, - -0.5, -0.5, -0.5, 1, 1, 0, - 0.5, 0.5, -0.5, 1, 0, 1, - 0.5, 0.5, 0.5, 0, 1, 1, - -0.5, 0.5, 0.5, 1, 1, 1, - -0.5, 0.5, -0.5, 0.5, 1, 0.5 + 0.5, -0.5, -0.5, 1, 0, 0, + 0.5, -0.5, 0.5, 0, 1, 0, + -0.5, -0.5, 0.5, 0, 0, 1, + -0.5, -0.5, -0.5, 1, 1, 0, + 0.5, 0.5, -0.5, 1, 0, 1, + 0.5, 0.5, 0.5, 0, 1, 1, + -0.5, 0.5, 0.5, 1, 1, 1, + -0.5, 0.5, -0.5, 0.5, 1, 0.5 }; // define the Indices obj.indices = new unsigned int [obj.indicesLength]{ - 1, 2, 3, - 7, 6, 5, - 4, 5, 1, - 5, 6, 2, - 2, 6, 7, - 0, 3, 7, - 0, 1, 3, - 4, 7, 5, - 0, 4, 1, - 1, 5, 2, - 3, 2, 7, - 4, 0, 7 + 1, 2, 3, + 7, 6, 5, + 4, 5, 1, + 5, 6, 2, + 2, 6, 7, + 0, 3, 7, + 0, 1, 3, + 4, 7, 5, + 0, 4, 1, + 1, 5, 2, + 3, 2, 7, + 4, 0, 7 }; createAndBind_VBO_VAO_IBO(obj); + glEnable(GL_CULL_FACE); glFrontFace(GL_CCW); glCullFace(GL_BACK); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Schwarz - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); - glClearDepth(0.0); + glClearDepth(1.0f); + - glDepthMask(GL_FALSE); + //glDepthMask(GL_FALSE); std::cout << "Scene initialization done\n"; return true; @@ -125,47 +249,113 @@ bool Scene::init() } } -void drawObject(ObjectBuffer& obj){ - glBindVertexArray(obj.vaoID); - glDrawElements(GL_TRIANGLES, obj.indicesLength, GL_UNSIGNED_INT, 0); - glBindVertexArray(0); -} - -glm::vec3 setRotationAxe(float angle,char axe='z'){ - if (axe == 'x') { - return {glm::radians(angle),0.0f,0.0f}; - }else if (axe == 'y'){ - return {0.0f,glm::radians(angle),0.0f}; - }else if(axe == 'z'){ // z - return {0.0f,0.0f,glm::radians(angle)}; - } - - return {0.0f,0.0f,glm::radians(angle)}; -} void Scene::render(float dt) { + glClearColor(0.7f, 0.3f, 0.1f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + float animationSpeed = 1.00f; + float colorAnimValue = (sin(animationTime * animationSpeed) + 1.5f) / 2.0f; // → [0, 1] + glm::mat3 animationMatrixFromUniform = glm::mat3( + colorAnimValue + 0.9, 0.0f, 0.0f, + 0.0f, colorAnimValue + 0.2, 0.0f, + 0.0f, 0.0f, colorAnimValue + 0.4 + ); + m_shader->setUniform("animationMatrixFromUniform", animationMatrixFromUniform , false); + + glm::mat4 view = glm::lookAt( + glm::vec3(3.0f, 1.0f, 2.0f), // Kameraposition für bessere Sicht + glm::vec3(0.0f), // Blickpunkt + glm::vec3(0.0f, 1.0f, 0.0f) // Up-Vector + ); + m_shader->setUniform("view", view, false); + + //float angleShoulderAndLegs = 10.0f * sin(animationTime * rotationSpeed); + + // Projektionsmatrix (Perspektive) + glm::mat4 projection = glm::perspective( + glm::radians(45.0f), + 800.0f/600.0f, + 0.1f, + 100.0f + ); + m_shader->setUniform("projection", projection, false); + + + float rotationSpeedAllReboter = 0.05f; + float angleRotation = 360.0f * sin(animationTime * rotationSpeedAllReboter); + Transform rotateRoboter; + rotateRoboter.rotateAroundPoint(glm::vec3( 0.0f, 0.0f, 0.0f), glm::vec3(0.0f,glm::radians(angleRotation),0.0f)); + + // head + m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * getMatrixHead(), false); + drawObject(obj); + + // body + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixBody(), false); + drawObject(obj); + + // Leg R + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixLegs('r'), false); + drawObject(obj); + + // Leg L + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixLegs('l'), false); + drawObject(obj); + + // Shoulder R + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixShoulders('r'), false); + drawObject(obj); + + // Shoulder L + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixShoulders('l'), false); + drawObject(obj); + + // Arm R + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixArms('r'), false); + drawObject(obj); + + // Arm L + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixArms('l'), false); + drawObject(obj); + + + + + + + + + + + + + +/* float gap = 0.04; float gapShoulderArm = 0.01; - float rotationSpeed = 3.0f; + float rotationSpeed = 0.4f; float boxHeight = 0.5f; float boxWidth = 0.5f; float bodyScaleX = 0.5f; // halbieren float bodyScaleY = 0.8f; + float bodyScaleZ = 0.5f; float bodyX = 0.0f; float bodyY = 0.0f; float headScaleXY = bodyScaleX / 2; + float headScaleZ = 0.4; float headX = 0.0f; float headY = (boxHeight*bodyScaleY) + (headScaleXY/2) + gap; float legScaleX = 0.1; float legScaleY = 0.4; + float legScaleZ = 0.25; + float legX = 0.12; float legY = (boxHeight*bodyScaleY) + (legScaleY/2) + gap; float legRotationPointX = legX; @@ -173,13 +363,14 @@ void Scene::render(float dt) float shoulderArmScaleX = 0.1; float shoulderArmScaleY = 0.3; + float shoulderArmScaleZ = 0.25; + float shoulderX = (boxWidth * bodyScaleX) + (boxWidth * shoulderArmScaleX) + gap ; float shoulderY = (boxHeight*bodyScaleY) - (boxHeight * shoulderArmScaleY); float shoulderRotationPointX = shoulderX; float shoulderRotationPointY = (boxHeight*bodyScaleY); // body + gap - // translate to shoulder position and then translate down the size of the shoulder //boxHeight * shoulderArmScaleY is half size of shoulder // we will make the Arms a littel bit different (scaling than rotation than translation) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -188,17 +379,16 @@ void Scene::render(float dt) float armRotationPointX = 0.0f; float armRotationPointY = shoulderArmScaleY * boxHeight; - float angleShoulderAndLegs = 10.0f * sin(animationTime * rotationSpeed); - float angleArm = 10.0f * ((sin(-animationTime * rotationSpeed) + 1.0f) / 2.0f); // sin value is between [0..1] not [-1..1] - float animationSpeed = 3.0f; - float colorAnimValue = (sin(animationTime * animationSpeed) + 1.5f) / 2.0f; // → [0, 1] - glm::mat3 animationMatrixFromUniform = glm::mat3( - colorAnimValue + 0.9, 0.0f, 0.0f, - 0.0f, colorAnimValue + 0.2, 0.0f, - 0.0f, 0.0f, colorAnimValue + 0.4 - ); - m_shader->setUniform("animationMatrixFromUniform", animationMatrixFromUniform , false); + float angleShoulderAndLegs = 360.0f * sin(animationTime * rotationSpeed); + float angleArm = 15.0f * ((sin(-animationTime * rotationSpeed) + 1.0f) / 2.0f); // sin value is between [0..1] not [-1..1] + + + float rotationSpeedAllReboter = 0.001f; + float angleRotation = 0.0f; //* sin(animationTime * rotationSpeedAllReboter); + Transform rotateRoboter; + rotateRoboter.rotateAroundPoint(glm::vec3( 0.0f, 0.0f, 0.0f), glm::vec3(0.0f,glm::radians(angleRotation),0.0f)); + Transform rotateLegLeft; rotateLegLeft.rotateAroundPoint(glm::vec3( -legRotationPointX, -legRotationPointY, 0.0f), setRotationAxe(angleShoulderAndLegs)); @@ -222,63 +412,71 @@ void Scene::render(float dt) //float viewAngle = 60.0; //rotateRobot.rotateAroundPoint(glm::vec3( 0.0,0.0,0.0),setRotationAxe(viewAngle,'y')); + + + + // Body Transform T11,T12; - T12.scale(glm::vec3(bodyScaleX, bodyScaleY, 1.0f)); + T12.scale(glm::vec3(bodyScaleX, bodyScaleY,bodyScaleZ)); T11.translate(glm::vec3(0.0f, 0.0f, 0.0f)); - m_shader->setUniform("model", T11.getTransformMatrix() * T12.getTransformMatrix(), false); - drawObject(obj); + //m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * T11.getTransformMatrix() * T12.getTransformMatrix(), false); + //drawObject(obj); // Head Transform T1,T2; - T2.scale(glm::vec3(headScaleXY, headScaleXY, 1.0f)); + T2.scale(glm::vec3(headScaleXY, headScaleXY, headScaleZ)); T1.translate(glm::vec3(headX,headY , 0.0f)); - m_shader->setUniform("model", T1.getTransformMatrix() * T2.getTransformMatrix(), false); - drawObject(obj); + //m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * T1.getTransformMatrix() * T2.getTransformMatrix(), false); + // drawObject(obj); // Legs Transform T8,T9,T10; - T9.scale(glm::vec3(legScaleX, legScaleY, 1.0f)); + T9.scale(glm::vec3(legScaleX, legScaleY, legScaleZ)); //Left Leg T8.translate(glm::vec3(-legX, -legY, 0.0f)); // translate Left Leg - m_shader->setUniform("model",rotateLegLeft.getTransformMatrix() * T8.getTransformMatrix() * T9.getTransformMatrix(), false); - drawObject(obj); + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * rotateLegLeft.getTransformMatrix() * T8.getTransformMatrix() * T9.getTransformMatrix(), false); + // drawObject(obj); //Right Leg T10.translate(glm::vec3(legX, -legY , 0.0f)); // translate Left Leg - m_shader->setUniform("model",rotateLegRight.getTransformMatrix() * T10.getTransformMatrix() * T9.getTransformMatrix(), false); - drawObject(obj); + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * rotateLegRight.getTransformMatrix() * T10.getTransformMatrix() * T9.getTransformMatrix(), false); + //drawObject(obj); // shoulders & Arms Transform T3,T4,T5,T6,T7; - T5.scale(glm::vec3(shoulderArmScaleX, shoulderArmScaleY, 1.0f)); + T5.scale(glm::vec3(shoulderArmScaleX, shoulderArmScaleY, shoulderArmScaleZ)); //Left shoulder T7.translate(glm::vec3(-shoulderX, shoulderY , 0.0f)); // translate Left Leg - m_shader->setUniform("model", rotateShoulderLeft.getTransformMatrix() * T7.getTransformMatrix() * T5.getTransformMatrix(), false); - drawObject(obj); + m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * rotateShoulderLeft.getTransformMatrix() * T7.getTransformMatrix() * T5.getTransformMatrix(), false); + //drawObject(obj); //Right shoulder T4.translate(glm::vec3(shoulderX, shoulderY , 0.0f)); // translate Left Leg - m_shader->setUniform("model", rotateShoulderRight.getTransformMatrix() * T4.getTransformMatrix() * T5.getTransformMatrix(), false); - drawObject(obj); + m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * rotateShoulderRight.getTransformMatrix() * T4.getTransformMatrix() * T5.getTransformMatrix(), false); + //drawObject(obj); //Left Arm T3.translate(glm::vec3(-ArmX, ArmY , 0.0f)); // translate Left Leg - m_shader->setUniform("model", T3.getTransformMatrix()* rotateHandLeft.getTransformMatrix() * T5.getTransformMatrix(), false); - drawObject(obj); + m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * T3.getTransformMatrix() * rotateShoulderLeft.getTransformMatrix() * rotateHandLeft.getTransformMatrix() * T5.getTransformMatrix(), false); + //drawObject(obj); //Right Arm T6.translate(glm::vec3(ArmX, ArmY , 0.0f)); // translate Left Leg - m_shader->setUniform("model", T6.getTransformMatrix()* rotateHandRight.getTransformMatrix() * T5.getTransformMatrix(), false); - drawObject(obj); + m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * T6.getTransformMatrix()* rotateHandRight.getTransformMatrix() * T5.getTransformMatrix(), false); + //drawObject(obj); + + */ + + } void Scene::update(float dt) { - this->animationTime += dt; + animationTime += dt; } diff --git a/src/Game/Scene.h b/src/Game/Scene.h index 58dbf76853238d30ad38282f0b556f7e1803470b..5a9aa9f6ec158294b669863ed837d31130532c43 100644 --- a/src/Game/Scene.h +++ b/src/Game/Scene.h @@ -6,6 +6,16 @@ #include <AssetManager.h> #include "Transform.h" + +static float roboterBodyHeadThiknessZ = 0.3; +static float roboterLegArmShoulderThiknessZ = 0.2; + +static float animationTime = 0.0f; + +static float rotationSpeed = 2.0f; + +static float gap = 0.03; + struct ObjectBuffer { GLuint vaoID = 0; GLuint vboID = 0; @@ -45,7 +55,6 @@ struct ObjectBuffer { } }; - class Scene { public: @@ -69,7 +78,5 @@ private: AssetManager m_assets; ShaderProgram* m_shader; ObjectBuffer obj; - float animationTime = 0.0f; - };