diff --git a/resources/models/cornell-box.mtl b/resources/models/cornell-box.mtl index e1c90b9..58a6337 100644 --- a/resources/models/cornell-box.mtl +++ b/resources/models/cornell-box.mtl @@ -50,7 +50,7 @@ Ks 0.000000 0.000000 0.000000 Ke 0.000000 0.000000 0.000000 Ni 1.000000 d 1.000000 -illum 60 +illum 100000 newmtl rightWall Ns 9.803922 diff --git a/src/util/assetloader.cpp b/src/util/assetloader.cpp index 1c53691..d1f9338 100644 --- a/src/util/assetloader.cpp +++ b/src/util/assetloader.cpp @@ -66,14 +66,16 @@ std::vector LoadTrianglesBasic(std::string path, std::string basePath anz[v] = attrib.normals[3 * idx.normal_index + 2]; } - Material* mat; - if (baseMaterial == nullptr || !baseMaterial) { - tinyobj::material_t material = materials[shapes[s].mesh.material_ids[f]]; + Material* mtl; + if (baseMaterial == nullptr) { + tinyobj::material_t tinyMtl = materials[shapes[s].mesh.material_ids[f]]; bool illum = false; - if (material.illum > 0.0f) illum = true; - mat = new Material({ material.diffuse[0], material.diffuse[1], material.diffuse[2] }, material.illum, 0.0f, 0.0f, 0.0f, false, illum); + if (tinyMtl.illum > 0.0f) illum = true; + // TODO: Weird bug where imported illumination is always equal to 15 + if (illum) tinyMtl.illum = 50; + mtl = new Material({ tinyMtl.diffuse[0], tinyMtl.diffuse[1], tinyMtl.diffuse[2] }, tinyMtl.illum, 0.0f, 0.0f, 0.0f, false, illum); } else { - mat = baseMaterial; + mtl = baseMaterial; } // glm::vec3 normal = getNormal( @@ -92,7 +94,7 @@ std::vector LoadTrianglesBasic(std::string path, std::string basePath {anx[1], any[1], anz[1]}, {anx[2], any[2], anz[2]}, - mat, + mtl, }; triangles.push_back(tmp); diff --git a/test/stanford_dragon_cornell.cpp b/test/stanford_dragon_cornell.cpp index d8ae16a..439251c 100644 --- a/test/stanford_dragon_cornell.cpp +++ b/test/stanford_dragon_cornell.cpp @@ -2,8 +2,8 @@ #include "../src/inferno.hpp" -static const int width = 2000; -static const int height = 2000; +static const int width = 500; +static const int height = 500; int main(int argc, char** argv) { InfernoEngine inferno; @@ -18,15 +18,20 @@ int main(int argc, char** argv) { Sky* sky = new SolidSky({ 0.0f, 0.0f, 0.0f }, 0.0f); scene->sky = sky; - Material* mat = new GlossyMaterial({ 1.2f, 1.2f, 1.2f }, 0.15f, fastDegreetoRadian(25.0f)); - std::vector tris = LoadTrianglesBasic("E://Projects//Inferno//resources//models//dragon-cornell-size.obj", "E://Projects//Inferno//models//resources//", mat); + Material* mat = new GlossyMaterial({ 1.2f, 1.2f, 1.2f }, 0.1f, fastDegreetoRadian(20.0f)); + // std::vector tris = LoadTrianglesBasic("E://Projects//Inferno//resources//models//dragon-cornell-size.obj", "E://Projects//Inferno//resources//models", mat); + // std::vector tris = LoadTrianglesBasic("/home/ben/programming/inferno/resources/models/dragon-cornell-size.obj", "/home/ben/programming/inferno/resources/models/", mat); - Mesh* mesh = new Mesh(tris); - mesh->Translate({ 0.01f, -1.0, -3.6f }); - mesh->Optimise(); - scene->meshs.push_back(mesh); + Sphere sphere1({ 0.0f, -0.6f, -4.0f }, 0.4f, mat); + scene->objects.push_back(&sphere1); - std::vector tris1 = LoadTrianglesBasic("E://Projects//Inferno//resources//models//cornell-box.obj", "E://Projects//Inferno//resources//models//"); + // Mesh* mesh = new Mesh(tris); + // mesh->Translate({ 0.01f, -1.0, -3.6f }); + // mesh->Optimise(); + // scene->meshs.push_back(mesh); + + // std::vector tris1 = LoadTrianglesBasic("E://Projects//Inferno//resources//models//cornell-box.obj", "E://Projects//Inferno//resources//models//"); + std::vector tris1 = LoadTrianglesBasic("/home/ben/programming/inferno/resources/models/cornell-box.obj", "/home/ben/programming/inferno/resources/models/"); Mesh* mesh1 = new Mesh(tris1); mesh1->Translate({ 0.01f, -1.0, -3.6f });