From fc4bd15ba6c54402fe44586af59e19b7c53dd7e4 Mon Sep 17 00:00:00 2001 From: papush! Date: Wed, 5 Jan 2022 15:59:18 +0100 Subject: [PATCH] fix mesh reconstruction --- .../MeshReconstruction/lib/MeshReconstruction.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/external/MeshReconstruction/lib/MeshReconstruction.cpp b/external/MeshReconstruction/lib/MeshReconstruction.cpp index e7a0466..6116829 100644 --- a/external/MeshReconstruction/lib/MeshReconstruction.cpp +++ b/external/MeshReconstruction/lib/MeshReconstruction.cpp @@ -1,6 +1,7 @@ #include "MeshReconstruction.h" #include "Cube.h" #include "Triangulation.h" +#include using namespace MeshReconstruction; using namespace std; @@ -44,8 +45,9 @@ Mesh MeshReconstruction::MarchCube( auto const NumY = static_cast(ceil(domain.size.y / cubeSize.y)); auto const NumZ = static_cast(ceil(domain.size.z / cubeSize.z)); - auto const HalfCubeDiag = cubeSize.Norm() / 2.0; - auto const HalfCubeSize = cubeSize * 0.5; + auto const CubeDiag = cubeSize.Norm(); + // auto const HalfCubeDiag = cubeSize.Norm() * 0.5; + // auto const HalfCubeSize = cubeSize * 0.5; Mesh mesh; @@ -61,9 +63,10 @@ Mesh MeshReconstruction::MarchCube( Vec3 min{ x, y, z }; // Process only if cube lies within narrow band around surface. - auto cubeCenter = min + HalfCubeSize; - double dist = std::fabs(sdf(cubeCenter) - isoLevel); - if (dist > HalfCubeDiag) continue; + // auto cubeCenter = min + HalfCubeSize; + // double dist = std::abs(sdf(cubeCenter) - isoLevel); + double dist = std::abs(sdf(min) - isoLevel); + // if (dist > CubeDiag) continue; Cube cube({ min, cubeSize }, sdf); auto intersect = cube.Intersect(isoLevel);