diff --git a/README.md b/README.md index 991f6e7..62de481 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,11 @@ $ make run Bedienung über Keyboard :D - WASD - R & F für Hoch & Runter - - 1,2,3,4,5 für Verschiedene Kamerapositionen + - 1,2,3,4,5,6 für Verschiedene Kamerapositionen + - 1: Vor den Tafeln + - 2-4: Verschiedene Sitzplätze + - 5: Vogelperspektive + - 6: Close-Up vom Normal Map Demo Cube ## TODO LIST diff --git a/scene-graph.scg b/scene-graph.scg index 1060df4..457a837 100644 --- a/scene-graph.scg +++ b/scene-graph.scg @@ -47,6 +47,7 @@ model 11 file ../obj/cube/cube.obj texture ../texture/crate/texture.jpg normal ../texture/crate/normal.jpg +shininess 100 # Reihe 1 # diff --git a/src/main.c b/src/main.c index e28048e..069ce03 100644 --- a/src/main.c +++ b/src/main.c @@ -74,6 +74,9 @@ void handleInputs(double deltaTime) { if (glfwGetKey(window, GLFW_KEY_5) == GLFW_PRESS) { cameraPosition = (vec3){-10.6f, 22.1f, -4.5f}; } + if (glfwGetKey(window, GLFW_KEY_6) == GLFW_PRESS) { + cameraPosition = (vec3){3.574698f, 0.966039f, 3.852249f}; + } if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) { cameraPosition.z += deltaTime * 10; } @@ -144,7 +147,7 @@ void renderNode(SceneNode* node) { glUniformMatrix3fv(glGetUniformLocation(program, "normalModelView"), 1, GL_FALSE, (GLfloat*)&normalModelView); // SET MATERIAL DATA - glUniform1f(glGetUniformLocation(program, "shininess"), 60.0f * 4.0f); + glUniform1f(glGetUniformLocation(program, "shininess"), node->model->shininess * 4.0f); // BIND TEXTURES diff --git a/src/sceneGraph.c b/src/sceneGraph.c index 0621e5f..ecf3376 100644 --- a/src/sceneGraph.c +++ b/src/sceneGraph.c @@ -21,6 +21,7 @@ #define KEYWORD_DEFINE_TEXTURE_FILE "texture" #define KEYWORD_DEFINE_SECONDARY_TEXTURE_FILE "texture2" #define KEYWORD_DEFINE_NORMAL_MAP_FILE "normal" +#define KEYWORD_DEFINE_SHININESS "shininess" #define KEYWORD_USE_MODEL "use" #define KEYWORD_DEFINE_PARENT "parent" @@ -202,6 +203,7 @@ SceneNode* loadSceneGraphFromFile(char* path) { models[currentModel].texture = -1; models[currentModel].secondaryTexture = -1; models[currentModel].normalMap = -1; + models[currentModel].shininess = 10.0f; continue; } if (strcmp(keyword, KEYWORD_DEFINE_OBJ_FILE) == 0) { @@ -224,6 +226,10 @@ SceneNode* loadSceneGraphFromFile(char* path) { loadTexture(filepathBuffer, &models[currentModel].normalMap); continue; } + if (strcmp(keyword, KEYWORD_DEFINE_SHININESS) == 0) { + sscanf(buf, KEYWORD_DEFINE_SHININESS " %f", &models[currentModel].shininess); + continue; + } if (strcmp(keyword, KEYWORD_DEFINE_NODE) == 0) { diff --git a/src/sceneGraph.h b/src/sceneGraph.h index aeaca63..7af51a6 100644 --- a/src/sceneGraph.h +++ b/src/sceneGraph.h @@ -16,6 +16,7 @@ typedef struct { GLuint texture; GLuint secondaryTexture; GLuint normalMap; + GLfloat shininess; } Model; struct SceneNode {