diff --git a/assets/shaders/fragment.glsl b/assets/shaders/fragment.glsl index c3c844785bab8e3acfc43e5fccac4290175d0a6b..40664ab349e88a6b3f6c082d65deeb88d19deda8 100644 --- a/assets/shaders/fragment.glsl +++ b/assets/shaders/fragment.glsl @@ -1,12 +1,45 @@ #version 330 core -in vec3 colorVS; -in mat3 animationMatrix; +uniform vec3 lightColor = vec3(1.0, 0.95, 0.8); +uniform vec3 matSpecular = vec3(1.0, 1.0, 1.0); // Metall (chrom) +uniform float matShininess = 20.0f; out vec4 color; +in vec3 normal; +in vec3 lightDir; +in vec3 colorVS; +in vec3 viewDir; + + void main() { - //vec3 animatedColor = animationMatrix * colorVS; - vec3 animatedColor = colorVS; - color = vec4(animatedColor, 1.0); + + + // normalize everything necessary + vec3 N = normalize(normal); + vec3 L = normalize(lightDir); + + // diffuse component + float cosa = max(0.0, dot(N,L)); + vec3 diffuseTerm = colorVS * lightColor; + + color = vec4( diffuseTerm * cosa, 1.0); + + // specular component// + vec3 V = normalize(viewDir); + vec3 R = normalize(reflect(-L,N)); + float cosBeta = max(0.0, dot(R,V)); + float cosBetak = pow(cosBeta, matShininess); + vec3 specularTerm = matSpecular * lightColor; + + color += vec4(specularTerm * cosBetak, 1.0); + + // ambient component // + float ambientStrength = 0.2; + vec3 ambientColor = colorVS; // this could also be a global ambient color + vec3 ambientTerm = ambientColor * lightColor * ambientStrength; + + color += vec4(ambientTerm, 1.0); + + } \ No newline at end of file diff --git a/assets/shaders/vertex.glsl b/assets/shaders/vertex.glsl index ae9fab182511a6b9c1ab6edfc176383338aa322a..1683b9feb18a666bef3ee0c12c846c6c6213ee62 100644 --- a/assets/shaders/vertex.glsl +++ b/assets/shaders/vertex.glsl @@ -1,21 +1,36 @@ #version 330 core -layout (location = 0) in vec3 pos; -layout (location = 1) in vec3 normalVector; +layout (location = 0) in vec3 vertex; +layout (location = 1) in vec3 vertex_normal; layout (location = 2) in vec3 colorRGB; -out vec3 colorVS; -out mat3 animationMatrix; uniform mat4 model; -uniform mat3 animationMatrixFromUniform; - uniform mat4 view; uniform mat4 projection; +uniform vec3 lightPos; + +out vec3 normal, lightDir; +out vec3 colorVS; +out vec3 viewDir; + void main(){ + + gl_Position = projection * view * model * vec4(vertex, 1.0); colorVS = colorRGB; - animationMatrix = animationMatrixFromUniform; - 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); + + // compute normal in view space // + vec4 n = vec4(vertex_normal, 1.0); + mat4 normalMat = transpose(inverse(view * model)); + normal = (normalMat * n).xyz; + + // compute light direction in view space // + vec4 lp = vec4(view * vec4(lightPos, 1.0)); + vec4 P = view * model * vec4(vertex, 1.0); + lightDir = (lp - P).xyz; + + // specular term // + viewDir = -P.xyz; + } diff --git a/cmake-build-debug/.cmake/api/v1/reply/index-2025-05-17T20-39-09-0612.json b/cmake-build-debug/.cmake/api/v1/reply/index-2025-05-24T21-03-31-0508.json similarity index 100% rename from cmake-build-debug/.cmake/api/v1/reply/index-2025-05-17T20-39-09-0612.json rename to cmake-build-debug/.cmake/api/v1/reply/index-2025-05-24T21-03-31-0508.json diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 65bba35204b291e48cb8059f43d68b961d0e2624..fdb2f96383c882bb30b43e4edd8d70ca9bdba33b 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 14fb1364a7d7c15cca7628e95edc99003935205f..1962e810587bdbc4c8443aebf53635b1904fb680 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,24 +1,24 @@ # ninja log v5 -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 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 -12 2101 7692151093484304 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj ab9d4e71a8c90cb0 +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 +9748 9859 7686065198313281 libs/glfw-3.2.1/src/libglfw3.a 7f148bdc7acbce15 +7 2060 7697234848507880 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Window.cpp.obj ab9d4e71a8c90cb0 3 3331 7686065132987911 CMakeFiles/OpenGL_Praktikum.dir/src/Framework/Assets/AssetManager.cpp.obj a3cf3a9a87bd79b4 -7540 9264 7686065192309264 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/win32_window.c.obj f3663704c5e7b483 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 3053 7698237175403412 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 8264 10755 7686065207221889 libs/glew-2.1.0/build/cmake/CMakeFiles/glew_s.dir/__/__/src/glew.c.obj 49302988e0a6d721 -13 2314 7692174810008034 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 +6279 7932 7686065179033527 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/window.c.obj 4f7adc10a9b5c100 3713 5273 7686065152431421 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/init.c.obj c23d9b4a554c4f26 -5360 6841 7686065168085346 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/vulkan.c.obj d183a1e3d22ea511 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 +5360 6841 7686065168085346 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/vulkan.c.obj d183a1e3d22ea511 +15 1972 7697234847628145 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 +8245 9748 7686065197204313 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/input.c.obj e27f20b419f1800e 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,12 +26,12 @@ 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 7692175495458573 build.ninja e200cd586be24cf3 7932 9454 7686065194250355 libs/glfw-3.2.1/src/CMakeFiles/glfw.dir/wgl_context.c.obj 6893a4a99f5b69c5 +4 749 7698238114480087 build.ninja e200cd586be24cf3 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 -2314 2919 7692174815999842 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +3054 3592 7698237180744957 OpenGL_Praktikum.exe 9fec4fbaeb613d2c 13 74 7686767474063569 CMakeFiles/OpenGL_Praktikum.dir/src/Game/wajdi.cpp.obj 20b3fc935b3f3aa4 -7 2285 7692176035625664 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 -2285 2829 7692176041012060 OpenGL_Praktikum.exe 9fec4fbaeb613d2c +7 2102 7698238845718646 CMakeFiles/OpenGL_Praktikum.dir/src/Game/Scene.cpp.obj a89dc091bea583c7 +2102 2648 7698238851109538 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 a87506cd21085f47f45684ef51393fe98b44c1db..63a2c27e8568a05ca937ab514696958491ba2322 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 62d8ce2a6fc193e2fe81d1ac8d2508b42698506a..bbcbb4fde271c50f124c8ae4d08a9f18d920dedc 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/main.cpp.obj b/cmake-build-debug/CMakeFiles/OpenGL_Praktikum.dir/src/main.cpp.obj index 7f2cfba266c50ad06f98a860eda77f62c8ee5905..5f1349e1ed295db658a846143a0829eb9b2909fa 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/CMakeFiles/clion-Debug-log.txt b/cmake-build-debug/CMakeFiles/clion-Debug-log.txt index dd7ee5ebb141e2d427ca62f5b1e9c5e02283f225..a4bde58d101a71462de2c7b611fbd6e0828d6f55 100644 --- a/cmake-build-debug/CMakeFiles/clion-Debug-log.txt +++ b/cmake-build-debug/CMakeFiles/clion-Debug-log.txt @@ -69,6 +69,6 @@ CMake Deprecation Warning at libs/stb/CMakeLists.txt:1 (cmake_minimum_required): CMake that the project does not need compatibility with older versions. --- Configuring done (0.5s) +-- Configuring done (0.3s) -- Generating done (0.1s) -- Build files have been written to: C:/Users/saifa/Desktop/Visual Computing/repo/cmake-build-debug diff --git a/cmake-build-debug/OpenGL_Praktikum.exe b/cmake-build-debug/OpenGL_Praktikum.exe index e3f961f4d26983c718940fc3e6e35a0d50994984..4875a48f7e872f8d1279930258b404c7cc90b0c9 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 7f07e21bd5aa7e12b5f990fe135f89e0f79265e2..f746dd521baac5b18189a964efd3f6eaffc6069d 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: May 17 22:40 Mitteleurop�ische Sommerzeit +Start testing: May 24 23:04 Mitteleurop�ische Sommerzeit ---------------------------------------------------------- -End testing: May 17 22:40 Mitteleurop�ische Sommerzeit +End testing: May 24 23:04 Mitteleurop�ische Sommerzeit diff --git a/cmake-build-debug/assets/shaders/fragment.glsl b/cmake-build-debug/assets/shaders/fragment.glsl index c3c844785bab8e3acfc43e5fccac4290175d0a6b..40664ab349e88a6b3f6c082d65deeb88d19deda8 100644 --- a/cmake-build-debug/assets/shaders/fragment.glsl +++ b/cmake-build-debug/assets/shaders/fragment.glsl @@ -1,12 +1,45 @@ #version 330 core -in vec3 colorVS; -in mat3 animationMatrix; +uniform vec3 lightColor = vec3(1.0, 0.95, 0.8); +uniform vec3 matSpecular = vec3(1.0, 1.0, 1.0); // Metall (chrom) +uniform float matShininess = 20.0f; out vec4 color; +in vec3 normal; +in vec3 lightDir; +in vec3 colorVS; +in vec3 viewDir; + + void main() { - //vec3 animatedColor = animationMatrix * colorVS; - vec3 animatedColor = colorVS; - color = vec4(animatedColor, 1.0); + + + // normalize everything necessary + vec3 N = normalize(normal); + vec3 L = normalize(lightDir); + + // diffuse component + float cosa = max(0.0, dot(N,L)); + vec3 diffuseTerm = colorVS * lightColor; + + color = vec4( diffuseTerm * cosa, 1.0); + + // specular component// + vec3 V = normalize(viewDir); + vec3 R = normalize(reflect(-L,N)); + float cosBeta = max(0.0, dot(R,V)); + float cosBetak = pow(cosBeta, matShininess); + vec3 specularTerm = matSpecular * lightColor; + + color += vec4(specularTerm * cosBetak, 1.0); + + // ambient component // + float ambientStrength = 0.2; + vec3 ambientColor = colorVS; // this could also be a global ambient color + vec3 ambientTerm = ambientColor * lightColor * ambientStrength; + + color += vec4(ambientTerm, 1.0); + + } \ No newline at end of file diff --git a/cmake-build-debug/assets/shaders/vertex.glsl b/cmake-build-debug/assets/shaders/vertex.glsl index ae9fab182511a6b9c1ab6edfc176383338aa322a..1683b9feb18a666bef3ee0c12c846c6c6213ee62 100644 --- a/cmake-build-debug/assets/shaders/vertex.glsl +++ b/cmake-build-debug/assets/shaders/vertex.glsl @@ -1,21 +1,36 @@ #version 330 core -layout (location = 0) in vec3 pos; -layout (location = 1) in vec3 normalVector; +layout (location = 0) in vec3 vertex; +layout (location = 1) in vec3 vertex_normal; layout (location = 2) in vec3 colorRGB; -out vec3 colorVS; -out mat3 animationMatrix; uniform mat4 model; -uniform mat3 animationMatrixFromUniform; - uniform mat4 view; uniform mat4 projection; +uniform vec3 lightPos; + +out vec3 normal, lightDir; +out vec3 colorVS; +out vec3 viewDir; + void main(){ + + gl_Position = projection * view * model * vec4(vertex, 1.0); colorVS = colorRGB; - animationMatrix = animationMatrixFromUniform; - 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); + + // compute normal in view space // + vec4 n = vec4(vertex_normal, 1.0); + mat4 normalMat = transpose(inverse(view * model)); + normal = (normalMat * n).xyz; + + // compute light direction in view space // + vec4 lp = vec4(view * vec4(lightPos, 1.0)); + vec4 P = view * model * vec4(vertex, 1.0); + lightDir = (lp - P).xyz; + + // specular term // + viewDir = -P.xyz; + } diff --git a/cmake-build-debug/glerrorlog.txt b/cmake-build-debug/glerrorlog.txt new file mode 100644 index 0000000000000000000000000000000000000000..35c34714e37abec441e2e87d7c54d69bc61258e3 --- /dev/null +++ b/cmake-build-debug/glerrorlog.txt @@ -0,0 +1,26 @@ +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation +An OpenGL error occured at file: "C:/Users/saifa/Desktop/Visual Computing/repo/src/Framework/Assets/ShaderProgram.h", line: 225: +invalid operation diff --git a/cmake-build-debug/perflog.csv b/cmake-build-debug/perflog.csv index 3a93ccc2dea11c913df920445740a7ac3b959af3..504f807572df83b98c88ed9022ebb2dad23a06dd 100644 --- a/cmake-build-debug/perflog.csv +++ b/cmake-build-debug/perflog.csv @@ -1,23 +1,348 @@ -9.63027,16.5575,103.839,60.3956 -14.0531,18.8094,71.1589,53.1649 -10.7378,16.14,93.1292,61.9579 -10.7157,17.5091,93.3211,57.1132 -10.7615,20.3542,92.924,49.1299 -11.4212,20.9038,87.5568,47.8382 -10.7757,17.5094,92.8014,57.1122 -10.9347,17.496,91.4521,57.1559 -10.8413,20.7932,92.2395,48.0926 -10.8569,17.7613,92.107,56.3022 -11.0058,20.7413,90.8613,48.213 -10.8398,20.4669,92.2524,48.8594 -10.8514,17.7736,92.154,56.2632 -10.9272,20.9221,91.5149,47.7963 -10.8534,17.694,92.1368,56.5163 -11.1691,20.8271,89.5329,48.0144 -11.0069,17.3086,90.8518,57.7747 -10.9379,17.5873,91.4255,56.8592 -9.37321,20.5845,106.687,48.5802 -11.0787,20.9632,90.2631,47.7026 -11.0809,17.6249,90.2452,56.7379 -11.629,21.1175,85.9919,47.3541 -12.4808,16.7333,80.1231,59.7611 +7.11189,15.7292,140.61,63.576 +7.04252,12.0832,141.995,82.7595 +7.65093,23.8558,130.703,41.9185 +6.93657,8.3827,144.163,119.293 +6.93379,7.4675,144.221,133.914 +6.9443,8.2295,144.003,121.514 +6.92817,7.3797,144.338,135.507 +7.03151,11.5717,142.217,86.4177 +6.93904,7.6593,144.112,130.56 +7.03106,15.4264,142.226,64.8239 +7.45846,11.9655,134.076,83.5736 +6.92395,7.5951,144.426,131.664 +6.9363,7.7955,144.169,128.279 +7.13119,12.9061,140.229,77.4827 +6.93437,7.8861,144.209,126.805 +7.59948,13.1039,131.588,76.3132 +7.11621,19.1577,140.524,52.1983 +6.92573,7.6035,144.389,131.518 +7.22996,12.9634,138.313,77.1403 +7.34176,13.2812,136.207,75.2944 +7.44424,13.0365,134.332,76.7077 +6.93463,7.7292,144.204,129.379 +7.23117,12.5557,138.29,79.6451 +6.93836,8.1849,144.126,122.176 +7.13244,12.4507,140.204,80.3168 +6.93678,9.0351,144.159,110.679 +7.13029,12.4909,140.247,80.0583 +6.93328,7.6231,144.232,131.18 +6.98051,9.8854,143.256,101.159 +6.89212,7.711,145.093,129.685 +6.93565,7.699,144.183,129.887 +8.33683,22.9105,119.95,43.6481 +6.98565,13.7267,143.151,72.8507 +6.93513,7.5397,144.193,132.631 +7.33919,13.9469,136.255,71.7005 +34.6576,450.521,28.8537,2.21965 +6.94425,7.8211,144.004,127.859 +6.92882,7.7466,144.325,129.089 +6.93924,10.0321,144.108,99.68 +6.93277,9.433,144.242,106.011 +6.93686,7.6381,144.157,130.923 +6.93732,7.4863,144.148,133.577 +6.9449,7.9778,143.991,125.348 +6.92538,10.2432,144.396,97.6257 +6.93476,7.7496,144.201,129.039 +6.94084,7.4265,144.075,134.653 +6.9328,8.3317,144.242,120.024 +6.96858,9.2808,143.501,107.749 +7.41657,19.1138,134.833,52.3182 +7.12913,11.8005,140.27,84.7422 +6.93572,10.298,144.181,97.1062 +6.9341,7.3171,144.215,136.666 +6.94599,7.7631,143.968,128.815 +6.93031,7.3176,144.294,136.657 +7.22743,22.015,138.362,45.4236 +7.59977,19.8386,131.583,50.4068 +7.77241,13.8214,128.66,72.3516 +9.48954,26.0351,105.379,38.4097 +9.4864,22.3046,105.414,44.8338 +7.38971,12.9808,135.323,77.0369 +7.44388,19.5797,134.339,51.0733 +7.08366,10.642,141.17,93.9673 +7.29019,16.2238,137.171,61.6378 +6.93167,10.8445,144.265,92.2126 +7.46573,21.1678,133.945,47.2416 +7.43091,17.7581,134.573,56.3123 +6.93704,10.8212,144.154,92.4112 +7.03104,11.2699,142.226,88.7319 +7.34042,12.4098,136.232,80.5815 +6.93165,10.5912,144.266,94.418 +6.94247,9.5863,144.041,104.316 +7.22862,28.757,138.339,34.7741 +6.93681,7.4792,144.158,133.704 +7.14162,12.6089,140.024,79.3091 +7.0211,12.4413,142.428,80.3775 +6.93803,7.449,144.133,134.246 +7.33758,12.4555,136.285,80.2858 +6.93216,7.4921,144.255,133.474 +7.94851,69.3008,125.81,14.4298 +7.42733,30.2772,134.638,33.0282 +6.93632,7.4984,144.169,133.362 +6.93534,7.6129,144.189,131.356 +6.93704,7.5347,144.154,132.719 +6.93658,7.3741,144.163,135.61 +7.04699,12.6886,141.905,78.8109 +8.02154,75.6884,124.664,13.2121 +7.34159,18.2428,136.21,54.8161 +6.93419,7.4823,144.213,133.649 +7.2338,13.1841,138.24,75.8489 +7.15293,12.5685,139.803,79.564 +8.14088,15.02,122.837,66.5779 +6.93578,7.507,144.18,133.209 +7.13369,11.8591,140.18,84.3234 +6.93469,7.4857,144.202,133.588 +6.93481,7.8564,144.2,127.285 +6.93638,9.1826,144.167,108.902 +6.93611,7.5444,144.173,132.549 +6.93651,9.0269,144.165,110.78 +7.03326,12.7766,142.182,78.2681 +6.93485,9.1489,144.199,109.303 +7.05455,12.9883,141.752,76.9924 +7.53249,14.1706,132.758,70.5686 +6.96168,9.1371,143.644,109.444 +7.00702,12.9217,142.714,77.3892 +6.93461,7.4712,144.204,133.847 +6.93771,9.6919,144.14,103.179 +6.93665,9.288,144.162,107.666 +7.04992,11.5882,141.846,86.2947 +7.01417,13.0133,142.569,76.8445 +6.93791,10.2855,144.136,97.2242 +7.03017,12.3738,142.244,80.8159 +6.93889,7.3544,144.115,135.973 +6.9335,7.5999,144.227,131.581 +6.93869,7.3362,144.119,136.31 +6.96091,9.3704,143.659,106.719 +7.00608,11.6532,142.733,85.8133 +6.93702,9.8448,144.154,101.576 +6.93431,7.4701,144.211,133.867 +6.93935,7.6756,144.106,130.283 +6.93282,9.3128,144.241,107.379 +7.2346,12.6605,138.225,78.9858 +6.93465,7.62,144.203,131.234 +7.16959,12.5066,139.478,79.9578 +7.09794,11.3481,140.886,88.1205 +6.93558,7.4522,144.184,134.189 +6.93579,7.4083,144.18,134.984 +6.93413,7.4308,144.214,134.575 +7.33852,12.9746,136.267,77.0737 +7.12515,12.9296,140.348,77.3419 +7.03882,15.362,142.069,65.0957 +6.93588,7.589,144.178,131.77 +6.93707,9.4657,144.153,105.645 +7.03196,11.9814,142.208,83.4627 +7.03294,12.2453,142.188,81.664 +7.23573,11.7912,138.203,84.809 +6.93321,9.6993,144.233,103.1 +6.93885,8.9507,144.116,111.723 +6.93429,10.5494,144.211,94.7921 +6.93417,10.6159,144.213,94.1983 +6.93787,7.7869,144.137,128.421 +6.93512,9.6526,144.194,103.599 +6.96314,9.033,143.613,110.705 +7.10445,11.6793,140.757,85.6216 +6.9343,7.5361,144.211,132.695 +6.97151,9.3374,143.441,107.096 +7.09563,17.6337,140.932,56.7096 +6.93664,10.6209,144.162,94.154 +6.93691,10.0547,144.156,99.456 +6.93513,10.4508,144.193,95.6865 +6.94221,7.7139,144.046,129.636 +6.92999,8.9132,144.3,112.193 +7.03456,11.0155,142.155,90.7812 +6.93452,9.8878,144.206,101.135 +6.94456,7.697,143.998,129.921 +6.92772,8.3509,144.348,119.748 +6.9343,7.3617,144.211,135.838 +6.93812,8.5697,144.131,116.69 +6.93556,8.8975,144.184,112.391 +6.93328,10.3615,144.232,96.5111 +7.13482,12.0643,140.158,82.8892 +6.93361,7.757,144.225,128.916 +6.9365,7.9135,144.165,126.366 +7.05932,11.8165,141.657,84.6274 +7.02808,11.5588,142.286,86.5142 +7.01194,11.7754,142.614,84.9228 +7.03167,12.4791,142.214,80.134 +7.36049,19.0967,135.861,52.3651 +6.9198,7.4922,144.513,133.472 +6.9394,7.5414,144.105,132.601 +6.93403,8.0571,144.216,124.114 +6.94321,7.8277,144.026,127.751 +6.92798,7.5983,144.342,131.608 +7.1662,12.5796,139.544,79.4938 +7.00198,12.1613,142.817,82.2281 +7.03077,11.7055,142.232,85.4299 +6.93648,7.5059,144.165,133.229 +7.23425,12.5735,138.231,79.5323 +7.03302,12.5993,142.186,79.3695 +6.93638,8.4913,144.167,117.768 +6.93564,7.6214,144.183,131.209 +6.93502,7.3877,144.196,135.36 +7.15321,11.2875,139.797,88.5936 +6.91707,7.5222,144.57,132.94 +6.93741,7.8255,144.146,127.787 +7.14773,11.9319,139.905,83.8089 +7.12012,12.1748,140.447,82.1369 +7.05264,11.5655,141.791,86.4641 +7.21152,12.5192,138.667,79.8773 +6.93559,9.3286,144.184,107.197 +6.93712,8.956,144.152,111.657 +7.13151,13.5162,140.223,73.9853 +6.93585,9.0867,144.179,110.051 +7.23405,13.6255,138.235,73.3918 +6.93439,7.398,144.209,135.172 +6.97039,9.4138,143.464,106.227 +7.30565,19.1289,136.88,52.2769 +7.12684,17.1368,140.315,58.354 +6.93798,7.7519,144.134,129.001 +6.93535,7.9171,144.189,126.309 +6.93499,7.9421,144.196,125.911 +6.93755,8.1031,144.143,123.41 +6.93707,8.2933,144.153,120.579 +6.93525,9.5245,144.191,104.992 +7.03552,10.9619,142.136,91.2251 +6.93356,7.5795,144.226,131.935 +7.03183,11.4654,142.211,87.2189 +6.93664,9.2716,144.162,107.856 +7.13152,12.0298,140.223,83.1269 +6.93126,7.7653,144.274,128.778 +6.93977,7.2918,144.097,137.14 +6.93471,7.5487,144.202,132.473 +7.1326,11.8131,140.201,84.6518 +7.03292,11.9261,142.188,83.8497 +7.33638,12.5438,136.307,79.7207 +6.93625,9.3157,144.17,107.346 +6.93614,9.5098,144.172,105.155 +7.2344,13.1073,138.229,76.2934 +7.03199,11.6739,142.207,85.6612 +7.1306,12.0732,140.241,82.8281 +6.93798,7.5297,144.134,132.807 +6.93436,8.68,144.209,115.207 +7.03142,11.6787,142.219,85.626 +7.55724,12.3287,132.324,81.1116 +6.93604,7.6812,144.174,130.188 +7.15431,12.5088,139.776,79.9437 +7.21235,20.1725,138.651,49.5724 +7.13067,13.6437,140.239,73.2939 +6.93537,7.4263,144.188,134.657 +7.33803,22.2399,136.276,44.9642 +7.13054,19.8559,140.242,50.3629 +11.1712,23.5877,89.5157,42.395 +8.00422,14.9555,124.934,66.865 +7.21797,13.23,138.543,75.5858 +6.93408,10.8694,144.215,92.0014 +6.94037,10.2162,144.085,97.8838 +6.93827,10.3724,144.128,96.4097 +7.61677,15.7476,131.289,63.5017 +7.38388,17.2942,135.43,57.8229 +7.13559,11.5043,140.143,86.924 +7.02608,12.9884,142.327,76.9918 +6.94156,8.1491,144.06,122.713 +7.24605,14.6957,138.006,68.0471 +7.44252,34.361,134.363,29.1028 +7.54031,12.2747,132.62,81.4684 +7.05188,12.1184,141.806,82.5191 +7.11893,13.3665,140.47,74.8139 +7.0444,11.2625,141.957,88.7902 +6.91937,10.7848,144.522,92.7231 +7.08555,11.0857,141.132,90.2063 +7.08097,10.7729,141.224,92.8255 +6.98529,10.7609,143.158,92.929 +6.98163,10.8448,143.233,92.2101 +7.05652,11.8517,141.713,84.3761 +6.92307,10.8995,144.445,91.7473 +6.92627,10.6721,144.378,93.7023 +6.93545,8.749,144.187,114.299 +6.93762,8.3102,144.142,120.334 +6.93285,8.3754,144.241,119.397 +7.35759,27.2521,135.914,36.6944 +6.91618,8.1641,144.588,122.487 +6.93742,8.2767,144.146,120.821 +6.93276,8.1199,144.243,123.154 +6.94361,8.3645,144.017,119.553 +6.93282,8.1314,144.241,122.98 +6.94957,10.9842,143.894,91.0399 +7.21845,11.61,138.534,86.1326 +7.45013,17.7174,134.226,56.4417 +7.02952,11.2863,142.257,88.603 +6.95545,11.0727,143.772,90.3122 +7.10884,11.7227,140.67,85.3046 +7.04424,11.4855,141.96,87.0663 +6.92743,11.4837,144.354,87.0799 +7.13217,10.9614,140.21,91.2292 +6.93722,10.7452,144.15,93.0648 +7.35847,13.2636,135.898,75.3943 +6.91647,8.6317,144.582,115.852 +6.93592,8.2163,144.177,121.709 +7.34025,20.2121,136.235,49.4753 +6.93822,8.5987,144.129,116.297 +6.93305,8.6406,144.237,115.733 +7.46695,13.1032,133.923,76.3172 +6.91594,8.5361,144.593,117.15 +6.93765,8.2027,144.141,121.911 +7.23202,12.8952,138.274,77.5482 +6.93891,10.5529,144.115,94.7607 +7.92631,20.8009,126.162,48.0748 +7.3955,11.5525,135.217,86.5614 +7.84393,19.0465,127.487,52.5031 +7.23003,11.5839,138.312,86.3267 +7.67753,15.2377,130.25,65.6267 +7.50533,11.8949,133.239,84.0696 +7.85494,15.5496,127.308,64.3103 +6.93712,11.1451,144.152,89.7255 +8.23092,20.8709,121.493,47.9136 +7.58944,13.3116,131.762,75.1224 +7.95031,33.6252,125.781,29.7396 +6.92815,8.8168,144.339,113.42 +6.94134,8.0297,144.064,124.538 +6.93741,8.1369,144.146,122.897 +6.94695,8.1202,143.948,123.15 +6.93168,8.8352,144.265,113.184 +7.32559,12.6949,136.508,78.7718 +6.93653,8.5384,144.164,117.118 +6.93624,9.3745,144.17,106.672 +6.9375,9.2926,144.144,107.613 +7.14531,11.3809,139.952,87.8665 +7.11356,10.9476,140.577,91.3442 +7.44958,26.4755,134.236,37.7708 +7.13275,11.2141,140.198,89.1735 +7.28986,11.4754,137.177,87.1429 +7.17396,12.2079,139.393,81.9142 +7.2842,11.4947,137.283,86.9966 +7.08139,11.4938,141.215,87.0034 +7.79065,26.0983,128.359,38.3167 +7.04127,14.3031,142.02,69.9149 +6.92458,8.596,144.413,116.333 +6.95336,8.5295,143.815,117.24 +7.21954,12.7913,138.513,78.1781 +6.93438,8.084,144.209,123.701 +7.58342,12.5052,131.867,79.9667 +7.00767,11.3921,142.701,87.7801 +6.94674,8.5902,143.953,116.412 +7.43262,15.181,134.542,65.8718 +7.46799,12.7709,133.905,78.303 +7.11245,11.9268,140.599,83.8448 +8.44566,19.9369,118.404,50.1582 +7.61637,16.9122,131.296,59.1289 +7.7239,15.1625,129.468,65.9522 +7.33665,11.4489,136.302,87.3446 +7.48366,18.2788,133.625,54.7082 +7.10324,14.7499,140.781,67.7971 +7.03565,11.0676,142.133,90.3538 +8.57876,15.5977,116.567,64.112 +7.39183,11.7294,135.284,85.2559 +7.72863,14.4056,129.389,69.4174 +6.93615,8.5242,144.172,117.313 +7.61538,18.5973,131.313,53.7712 +6.97805,10.9517,143.306,91.31 +7.49202,17.7671,133.475,56.2838 +7.82243,20.6435,127.838,48.4414 +7.48573,19.1003,133.587,52.3552 +7.12345,22.7698,140.381,43.9178 +6.93516,8.7437,144.193,114.368 +7.25997,17.9205,137.742,55.802 +7.3203,18.9605,136.607,52.7412 +8.30118,21.8097,120.465,45.8512 +7.17863,13.5141,139.302,73.9968 +7.62589,15.2288,131.132,65.6651 diff --git a/src/Game/Scene.cpp b/src/Game/Scene.cpp index dc3c4b329cd9a25d99440adbc2eaefd2e86e424b..7ce0a73ef2735377726c2b827b2650f2594d15b4 100644 --- a/src/Game/Scene.cpp +++ b/src/Game/Scene.cpp @@ -59,7 +59,6 @@ void createAndBind_VBO_VAO_IBO(ObjectBuffer& objectBuffer){ } - void drawObject(ObjectBuffer& obj){ glBindVertexArray(obj.vaoID); glDrawArrays(GL_TRIANGLES,0,obj.verticesLength); @@ -79,6 +78,21 @@ glm::vec3 setRotationAxe(float angle,char axe='x'){ } +const glm::mat4 getMatrixSun() { + + float translateX = 1.0; + float translateY = 1.0; + float sunRotationSpeed = 0.1; + float angleRotation = animationTime * 360.0f * sunRotationSpeed; + + Transform translate,rotation,scale; + translate.translate(glm::vec3(translateX,translateY,0.0f)); + rotation.rotateAroundPoint(glm::vec3( 0.0f,0.0f, 0.0f),setRotationAxe(angleRotation,'y')); + scale.scale(glm::vec3(0.2, 0.2, 0.2)); + + return rotation.getTransformMatrix() * translate.getTransformMatrix() * scale.getTransformMatrix(); +} + const glm::mat4 getMatrixHead() { float ty= (0.375 + gap) + (0.25 * 0.5); // body + 1/2 head Transform translate,scale; @@ -88,7 +102,6 @@ const glm::mat4 getMatrixHead() { } 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)); @@ -97,7 +110,6 @@ const glm::mat4 getMatrixBody() { const glm::mat4 getMatrixLegs(char x) { - float legScaleX = 0.1; float legScaleY = 0.4; float legX = 0.12 ; @@ -132,7 +144,7 @@ const glm::mat4 getMatrixShoulders(char x) { 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 translateY = (0.75 * 0.5) - (scaleY * 0.5) ; // bodyY - shoulderY float translateZ = 0.0f; float angleShoulderAndLegs = 20.0f * sin(animationTime * rotationSpeed); @@ -162,20 +174,21 @@ const glm::mat4 getMatrixArms(char x) { // shoulder and arm have same value float scaleY = 0.3; - - float translateY = 1.05 + gap; + float gapArm = 0.1; + //float translateY = 1.05 + gap; + float translateY = (0.5 *2) + gapArm; // Transform translate; - translate.translate(glm::vec3(0.0, - translateY, 0.0)); + translate.translate(glm::vec3(0.0, -translateY, 0.0)); float rotationSpeedArm = 0.7; - float angle = 60.0f * (sin(animationTime * rotationSpeedArm) + 1) / 2 ; + float angle = 50.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(); + return getMatrixShoulders('l') * translate.getTransformMatrix() * rotate.getTransformMatrix(); }else if(x == 'r'){ return getMatrixShoulders('r') * translate.getTransformMatrix() * rotate.getTransformMatrix(); }else{ @@ -299,8 +312,8 @@ void Scene::render(float dt) glClearColor(0.0f, 0.0f, 0.0f, 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] + float animationSpeed = 10.00f; + float colorAnimValue = (sin(animationTime * animationSpeed) + 1.5f) / 2.0f; glm::mat3 animationMatrixFromUniform = glm::mat3( colorAnimValue + 0.9, 0.0f, 0.0f, 0.0f, colorAnimValue + 0.2, 0.0f, @@ -309,213 +322,65 @@ void Scene::render(float dt) 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(x_eye, y_eye, z_eye), // Kameraposition für bessere Sicht + glm::vec3(0.0f,0.0f,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, + 800.0f/800.0f, 0.1f, 100.0f ); m_shader->setUniform("projection", projection, false); + // sun + m_shader->setUniform("model", getMatrixSun(), false); + + glm::vec3 sunPos = glm::vec3(getMatrixSun()[3]); + m_shader->setUniform("lightPos", sunPos); + + drawObject(obj); + + - 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); + m_shader->setUniform("model", getMatrixHead(), false); drawObject(obj); // body - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixBody(), false); + m_shader->setUniform("model",getMatrixBody(), false); drawObject(obj); // Leg R - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixLegs('r'), false); + m_shader->setUniform("model",getMatrixLegs('r'), false); drawObject(obj); // Leg L - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixLegs('l'), false); + m_shader->setUniform("model", getMatrixLegs('l'), false); drawObject(obj); // Shoulder R - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixShoulders('r'), false); + m_shader->setUniform("model", getMatrixShoulders('r'), false); drawObject(obj); // Shoulder L - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixShoulders('l'), false); + m_shader->setUniform("model", getMatrixShoulders('l'), false); drawObject(obj); // Arm R - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixArms('r'), false); + m_shader->setUniform("model", getMatrixArms('r'), false); drawObject(obj); // Arm L - m_shader->setUniform("model",rotateRoboter.getTransformMatrix() * getMatrixArms('l'), false); + m_shader->setUniform("model", getMatrixArms('l'), false); drawObject(obj); - - - - - - - - - - - - -/* - float gap = 0.04; - float gapShoulderArm = 0.01; - - 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; - float legRotationPointY = gap + (boxHeight*bodyScaleY); // body + gap - - 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) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - float ArmY = (shoulderY - ( 2 * (boxHeight * shoulderArmScaleY) ) ) - gapShoulderArm; - float ArmX = (boxWidth * bodyScaleX) + (boxWidth * shoulderArmScaleX) + gapShoulderArm ; - float armRotationPointX = 0.0f; - float armRotationPointY = shoulderArmScaleY * boxHeight; - - - 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)); - - Transform rotateLegRight; - rotateLegRight.rotateAroundPoint(glm::vec3( legRotationPointX, -legRotationPointY, 0.0f), setRotationAxe(-angleShoulderAndLegs)); - - Transform rotateShoulderLeft; - rotateShoulderLeft.rotateAroundPoint(glm::vec3( -shoulderRotationPointX, shoulderRotationPointY, 0.0f), setRotationAxe(angleShoulderAndLegs)); - - Transform rotateShoulderRight; - rotateShoulderRight.rotateAroundPoint(glm::vec3( shoulderRotationPointX, shoulderRotationPointY, 0.0f), setRotationAxe(-angleShoulderAndLegs)); - - Transform rotateHandLeft; - rotateHandLeft.rotateAroundPoint(glm::vec3( -armRotationPointX, armRotationPointY, 0.0f), setRotationAxe(angleArm)); - - Transform rotateHandRight; - rotateHandRight.rotateAroundPoint(glm::vec3( armRotationPointX, armRotationPointY, 0.0f), setRotationAxe(-angleArm)); - - //Transform rotateRobot; - //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,bodyScaleZ)); - T11.translate(glm::vec3(0.0f, 0.0f, 0.0f)); - //m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * T11.getTransformMatrix() * T12.getTransformMatrix(), false); - //drawObject(obj); - - // Head - Transform T1,T2; - T2.scale(glm::vec3(headScaleXY, headScaleXY, headScaleZ)); - T1.translate(glm::vec3(headX,headY , 0.0f)); - //m_shader->setUniform("model", rotateRoboter.getTransformMatrix() * T1.getTransformMatrix() * T2.getTransformMatrix(), false); - // drawObject(obj); - - // Legs - Transform T8,T9,T10; - T9.scale(glm::vec3(legScaleX, legScaleY, legScaleZ)); - - //Left Leg - T8.translate(glm::vec3(-legX, -legY, 0.0f)); // translate Left Leg - 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",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, shoulderArmScaleZ)); - - //Left shoulder - T7.translate(glm::vec3(-shoulderX, shoulderY , 0.0f)); // translate Left Leg - 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", 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",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", rotateRoboter.getTransformMatrix() * T6.getTransformMatrix()* rotateHandRight.getTransformMatrix() * T5.getTransformMatrix(), false); - //drawObject(obj); - - */ - - - } void Scene::update(float dt) @@ -531,6 +396,28 @@ OpenGLWindow * Scene::getWindow() void Scene::onKey(Key key, Action action, Modifier modifier) { + if (key == Key::Down) { + // Merke ob "Down" gedrückt ist oder losgelassen wurde + downPressed = (action != Action::Up); + return; + } + + // Nur auf Key Press oder Repeat reagieren + if (action != Action::Down && action != Action::Repeat) + return; + + float step = downPressed ? -0.1f : 0.1f; + + if (key == Key::Left) + x_eye += step; + else if (key == Key::Up) + y_eye += step; + else if (key == Key::Right) + z_eye += step; + + + + std::cout << "Camera Eye: (" << x_eye << ", " << y_eye << ", " << z_eye << ")\n"; } diff --git a/src/Game/Scene.h b/src/Game/Scene.h index 5a9aa9f6ec158294b669863ed837d31130532c43..84f05e92905d58c574c5b80e7ea5a060d4381c1a 100644 --- a/src/Game/Scene.h +++ b/src/Game/Scene.h @@ -14,7 +14,7 @@ static float animationTime = 0.0f; static float rotationSpeed = 2.0f; -static float gap = 0.03; +static float gap = 0.05; struct ObjectBuffer { GLuint vaoID = 0; @@ -78,5 +78,9 @@ private: AssetManager m_assets; ShaderProgram* m_shader; ObjectBuffer obj; + + float x_eye,y_eye,z_eye; + bool downPressed = false; + };