From 49389870632e61f55a26061b6a1dee824c21f32e Mon Sep 17 00:00:00 2001 From: kazu Date: Tue, 24 Jul 2018 10:26:27 +0200 Subject: [PATCH] worked on mapview 3d stuff --- IndoorMap.pro | 1 + MainController.cpp | 4 +-- mapview/2D/MV2DElementFloorObstacleObject.cpp | 4 +-- mapview/3D/MapView3D.cpp | 1 + mapview/3D/floorplan/FloorplanRenderer.cpp | 2 +- .../3D/floorplan/FloorplanRendererModel.cpp | 26 +++++++++---------- mapview/3D/floorplan/FloorplanRendererModel.h | 8 +++--- 7 files changed, 24 insertions(+), 22 deletions(-) diff --git a/IndoorMap.pro b/IndoorMap.pro index 659ea41..b6707c5 100644 --- a/IndoorMap.pro +++ b/IndoorMap.pro @@ -18,6 +18,7 @@ DEFINES += WITH_DEBUG_LOG unix { LIBS += -lstdc++fs + QMAKE_CXXFLAGS += -Werror=return-type } win32 { diff --git a/MainController.cpp b/MainController.cpp index 6753aad..5c07923 100644 --- a/MainController.cpp +++ b/MainController.cpp @@ -28,7 +28,7 @@ #include "mapview/3D/grid/GridRenderer.h" -#include +#include @@ -105,7 +105,7 @@ MainController::MainController() { //Ray3D::OBJPool::get().init("/mnt/vm/paper/diss/code/IndoorMap/res/mdl/"); //Ray3D::OBJPool::get().init("/apps/paper/diss/code/IndoorMap/res/mdl/"); - Ray3D::OBJPool::get().init({ + Floorplan3D::OBJPool::get().init({ "/mnt/vm/paper/diss/code/IndoorMap/res/mdl/", "/apps/paper/diss/code/IndoorMap/res/mdl/", }); diff --git a/mapview/2D/MV2DElementFloorObstacleObject.cpp b/mapview/2D/MV2DElementFloorObstacleObject.cpp index 1ee73cc..5bd8584 100644 --- a/mapview/2D/MV2DElementFloorObstacleObject.cpp +++ b/mapview/2D/MV2DElementFloorObstacleObject.cpp @@ -2,7 +2,7 @@ #include "MapViewElementHelper.h" #include -#include +#include #include "../../UIHelper.h" @@ -70,7 +70,7 @@ void MV2DElementFloorObstacleObject::paint(Painter& p) { // for (const Cache::Line& l : e.lines) { // p.drawLine(l.p1, l.p2); // } - const Ray3D::Obstacle3D obs = Ray3D::OBJPool::get().getObject(fo->file).rotated_deg(fo->rot).translated(fo->pos); + const Floorplan3D::Obstacle3D obs = Floorplan3D::OBJPool::get().getObject(fo->file).rotated_deg(fo->rot).translated(fo->pos); for (const Triangle3& tria : obs.triangles) { if (tria.p1.xy() != tria.p2.xy()) { p.drawLine( tria.p1.xy(), tria.p2.xy() ); diff --git a/mapview/3D/MapView3D.cpp b/mapview/3D/MapView3D.cpp index d0db423..389a43d 100644 --- a/mapview/3D/MapView3D.cpp +++ b/mapview/3D/MapView3D.cpp @@ -84,6 +84,7 @@ MapView3D::MapView3D(QWidget *parent) : QOpenGLWidget(parent) { floorplanRendererModel->getMesh().exportOBJsimple("/tmp/map.obj"); floorplanRendererModel->getMesh().exportOBJcomplex("/tmp/map_complex", "map_complex"); floorplanRendererModel->getMesh().exportPLY("/tmp/map.ply"); + QMessageBox::information(this, "Export", "3D Model exported to /tmp/* as .obj and .ply"); }); diff --git a/mapview/3D/floorplan/FloorplanRenderer.cpp b/mapview/3D/floorplan/FloorplanRenderer.cpp index 45f3567..5383c2e 100644 --- a/mapview/3D/floorplan/FloorplanRenderer.cpp +++ b/mapview/3D/floorplan/FloorplanRenderer.cpp @@ -13,7 +13,7 @@ #include "../misc/Shader.h" #include "../misc/TriangleData.h" -#include +#include #include "RenderTriangle.h" diff --git a/mapview/3D/floorplan/FloorplanRendererModel.cpp b/mapview/3D/floorplan/FloorplanRendererModel.cpp index da26f0f..5156069 100644 --- a/mapview/3D/floorplan/FloorplanRendererModel.cpp +++ b/mapview/3D/floorplan/FloorplanRendererModel.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include "RenderTriangle.h" @@ -37,18 +37,18 @@ const std::vector mats = { }; -int FloorplanRendererModel::getMaterial(const Ray3D::Obstacle3D& o) const { +int FloorplanRendererModel::getMaterial(const Floorplan3D::Obstacle3D& o) const { - if (o.type == Ray3D::Obstacle3D::Type::ERROR) {return 0;} + if (o.type == Floorplan3D::Obstacle3D::Type::ERROR) {return 0;} - if (o.type == Ray3D::Obstacle3D::Type::GROUND_OUTDOOR) {return 1;} - if (o.type == Ray3D::Obstacle3D::Type::GROUND_INDOOR) {return 2;} - if (o.type == Ray3D::Obstacle3D::Type::STAIR) {return 3;} - if (o.type == Ray3D::Obstacle3D::Type::HANDRAIL) {return 4;} - if (o.type == Ray3D::Obstacle3D::Type::OBJECT) {return 12;} + if (o.type == Floorplan3D::Obstacle3D::Type::GROUND_OUTDOOR) {return 1;} + if (o.type == Floorplan3D::Obstacle3D::Type::GROUND_INDOOR) {return 2;} + if (o.type == Floorplan3D::Obstacle3D::Type::STAIR) {return 3;} + if (o.type == Floorplan3D::Obstacle3D::Type::HANDRAIL) {return 4;} + if (o.type == Floorplan3D::Obstacle3D::Type::OBJECT) {return 12;} - if (o.type == Ray3D::Obstacle3D::Type::DOOR && o.mat == Floorplan::Material::GLASS) {return 5;} - if (o.type == Ray3D::Obstacle3D::Type::DOOR) {return 6;} + if (o.type == Floorplan3D::Obstacle3D::Type::DOOR && o.mat == Floorplan::Material::GLASS) {return 5;} + if (o.type == Floorplan3D::Obstacle3D::Type::DOOR) {return 6;} if (o.mat == Floorplan::Material::CONCRETE) {return 7;} if (o.mat == Floorplan::Material::GLASS) {return 8;} @@ -66,7 +66,7 @@ FloorplanRendererModel::FloorplanRendererModel() { ; } -Ray3D::FloorplanMesh& FloorplanRendererModel::getMesh() { +Floorplan3D::FloorplanMesh& FloorplanRendererModel::getMesh() { return mesh; } @@ -91,10 +91,10 @@ void FloorplanRendererModel::rebuild(Floorplan::IndoorMap* im) { // rebuild the mesh try { - Ray3D::ModelFactory fac(im); + Floorplan3D::Builder fac(im); fac.exportDoors = showDoors; mesh = fac.getMesh(); - for (const Ray3D::Obstacle3D& obs : mesh.elements) { + for (const Floorplan3D::Obstacle3D& obs : mesh.elements) { const int matID = getMaterial(obs); const Material& mat = mats[matID]; for (const Triangle3& tria : obs.triangles) { diff --git a/mapview/3D/floorplan/FloorplanRendererModel.h b/mapview/3D/floorplan/FloorplanRendererModel.h index 6dc32f0..db946ab 100644 --- a/mapview/3D/floorplan/FloorplanRendererModel.h +++ b/mapview/3D/floorplan/FloorplanRendererModel.h @@ -2,7 +2,7 @@ #define FLOORPLANRENDERERMODEL_H #include -#include +#include #include "RenderTriangle.h" @@ -14,12 +14,12 @@ class FloorplanRendererModel { private: Floorplan::IndoorMap* im; - Ray3D::FloorplanMesh mesh; + Floorplan3D::FloorplanMesh mesh; RenderTriangle triaSolid; RenderTriangle triaTransp; - int getMaterial(const Ray3D::Obstacle3D& o) const; + int getMaterial(const Floorplan3D::Obstacle3D& o) const; public: @@ -29,7 +29,7 @@ public: /** ctor */ FloorplanRendererModel(); - Ray3D::FloorplanMesh& getMesh(); + Floorplan3D::FloorplanMesh& getMesh(); const RenderTriangle& getTriaSolid();