From 6b765a85cf81bf4b7162e4c9280dd4054581c611 Mon Sep 17 00:00:00 2001 From: vimene Date: Mon, 11 Dec 2023 12:42:46 +0100 Subject: improved mesh definition - In the context of mesh definition, splited indices into vertex index, normal index and vertex data index to be able to specify different normals and vertex data for different faces using the same vertex --- src/o3d/mesh.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'src/o3d/mesh.cpp') diff --git a/src/o3d/mesh.cpp b/src/o3d/mesh.cpp index bf60cc8..2dba328 100644 --- a/src/o3d/mesh.cpp +++ b/src/o3d/mesh.cpp @@ -1,8 +1,8 @@ #include "o3d/mesh.h" #include #include +#include #include "math/vector.h" -#include "o3d/vertex.h" using namespace engine::o3d; @@ -32,16 +32,30 @@ using namespace engine::o3d; Mesh Mesh::plane() { return { { - { engine::math::Vector3(-1.f, 0.f, -1.f), {0.f, 0.f} }, - { engine::math::Vector3(+1.f, 0.f, -1.f), {1.f, 0.f} }, - { engine::math::Vector3(+1.f, 0.f, +1.f), {1.f, 1.f} }, - { engine::math::Vector3(-1.f, 0.f, +1.f), {0.f, 1.f} }, + {-1.f, 0.f, -1.f, 1.f}, + {+1.f, 0.f, -1.f, 1.f}, + {+1.f, 0.f, +1.f, 1.f}, + {-1.f, 0.f, +1.f, 1.f}, }, + { {0.f, 0.f, -1.f} }, { - { 0, 1, 2 }, { 2, 3, 0 }, + {0.f, 0.f}, + {1.f, 0.f}, + {1.f, 1.f}, + {0.f, 1.f}, + }, + { + {{ {{0, 0, 0}}, {{1, 0, 1}}, {{2, 0, 2}} }}, + {{ {{2, 0, 2}}, {{3, 0, 3}}, {{0, 0, 0}} }}, + {{ {{0, 0, 0}}, {{3, 0, 3}}, {{2, 0, 2}} }}, + {{ {{2, 0, 2}}, {{1, 0, 1}}, {{0, 0, 0}} }}, } }; } -Mesh::Mesh(std::vector pts, std::vector> faces) : pts{pts}, faces{faces} { +Mesh::Mesh(std::vector vertices, + std::vector normals, + std::vector vertices_data, + std::vector, 3>> indices) + : vertices{vertices}, normals{normals}, vertices_data{vertices_data}, indices{indices} { } -- cgit v1.2.3