diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | resources/objects/cube.mtl | 12 | ||||
-rw-r--r-- | resources/objects/cube.obj | 26 | ||||
-rw-r--r-- | yage/experimental/camera3d.h | 13 | ||||
-rw-r--r-- | yage/experimental/loader.cpp | 45 | ||||
-rw-r--r-- | yage/experimental/loader.h | 19 |
6 files changed, 113 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7958a646..ec0988b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ set(CMAKE_CXX_STANDARD 14) # find other libraries from source set(EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") # GLFW3 set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) diff --git a/resources/objects/cube.mtl b/resources/objects/cube.mtl new file mode 100644 index 00000000..379df14c --- /dev/null +++ b/resources/objects/cube.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material +Ns 96.078431 +Ka 1.000000 1.000000 1.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/resources/objects/cube.obj b/resources/objects/cube.obj new file mode 100644 index 00000000..82519cf5 --- /dev/null +++ b/resources/objects/cube.obj @@ -0,0 +1,26 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +mtllib cube.mtl +o Cube +v 1.000000 -1.000000 -1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +v -1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 -0.999999 +v 0.999999 1.000000 1.000001 +v -1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 1//1 2//1 3//1 4//1 +f 5//2 8//2 7//2 6//2 +f 1//3 5//3 6//3 2//3 +f 2//4 6//4 7//4 3//4 +f 3//5 7//5 8//5 4//5 +f 5//6 1//6 4//6 8//6 diff --git a/yage/experimental/camera3d.h b/yage/experimental/camera3d.h index efd96dc0..6a712a17 100644 --- a/yage/experimental/camera3d.h +++ b/yage/experimental/camera3d.h @@ -1,8 +1,15 @@ #ifndef YAGE_EXPERIMENTAL_CAMERA3D_H #define YAGE_EXPERIMENTAL_CAMERA3D_H -class Camera3D { - -} +#include <glm/glm.hpp> + +class Camera3D +{ +public: + Camera3D() = default; + +private: + glm::mat4 +}; #endif diff --git a/yage/experimental/loader.cpp b/yage/experimental/loader.cpp new file mode 100644 index 00000000..a13af1f2 --- /dev/null +++ b/yage/experimental/loader.cpp @@ -0,0 +1,45 @@ +#include "loader.h" + +#include "../core/exception.h" + +#include <fstream> +#include <sstream> + +namespace yage +{ + +void load_obj(std::string filename, std::vector<glm::vec4> &vertices, + std::vector<glm::vec3> &normals, std::vector<GLushort> &elements) +{ + std::ifstream in(filename, std::ios::in); + + if (!in.is_open()) { + throw FileLoadException("Could not load obj file '" + filename + "'"); + } + + std::string line; + + while (getline(in, line)) { + if (line.substr(0, 2) == "v ") { + std::istringstream s(line.substr(2)); + glm::vec4 v; + s >> v.x >> v.y >> v.z; + v.w = 1.f; + vertices.push_back(v); + } else if (line.substr(0, 2) == "f ") { + std::istringstream s(line.substr(2)); + GLushort a, b, c; + s >> a >> b >> c; + a--, b--, c--; + elements.push_back(a); + elements.push_back(b); + elements.push_back(c); + } else { + // do nothing otherwise + } + } + + normals.resize() +} + +} // namespace yage diff --git a/yage/experimental/loader.h b/yage/experimental/loader.h new file mode 100644 index 00000000..9f076bb1 --- /dev/null +++ b/yage/experimental/loader.h @@ -0,0 +1,19 @@ +#ifndef YAGE_EXPERIMENTAL_LOADER_H +#define YAGE_EXPERIMENTAL_LOADER_H + +#include <string> +#include <vector> + +#include <glad/glad.h> +#include <glm/glm.hpp> + +namespace yage +{ + +extern void load_obj(std::string filename, std::vector<glm::vec4> &vertices, + std::vector<glm::vec3> &normals, + std::vector<GLushort> &elements); + +} // namespace yage + +#endif |