diff options
Diffstat (limited to 'thirdparty/thekla_atlas/nvmesh/param/AtlasBuilder.h')
-rw-r--r-- | thirdparty/thekla_atlas/nvmesh/param/AtlasBuilder.h | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasBuilder.h b/thirdparty/thekla_atlas/nvmesh/param/AtlasBuilder.h deleted file mode 100644 index f25c724f7e..0000000000 --- a/thirdparty/thekla_atlas/nvmesh/param/AtlasBuilder.h +++ /dev/null @@ -1,111 +0,0 @@ -// This code is in the public domain -- castano@gmail.com - -#pragma once -#ifndef NV_MESH_ATLASBUILDER_H -#define NV_MESH_ATLASBUILDER_H - -#include "Atlas.h" - -#include "nvmath/Vector.h" -#include "nvmath/Random.h" -#include "nvmesh/nvmesh.h" - -#include "nvcore/Array.h" -#include "nvcore/BitArray.h" - - - -namespace nv -{ - namespace HalfEdge { class Mesh; } - - struct ChartBuildData; - - struct AtlasBuilder - { - AtlasBuilder(const HalfEdge::Mesh * m); - ~AtlasBuilder(); - - void markUnchartedFaces(const Array<uint> & unchartedFaces); - - void computeShortestPaths(); - - void placeSeeds(float threshold, uint maxSeedCount); - void createRandomChart(float threshold); - - void addFaceToChart(ChartBuildData * chart, uint f, bool recomputeProxy=false); - - bool growCharts(float threshold, uint faceCount); - bool growChart(ChartBuildData * chart, float threshold, uint faceCount); - - void resetCharts(); - - void updateCandidates(ChartBuildData * chart, uint face); - - void updateProxies(); - void updateProxy(ChartBuildData * chart); - - bool relocateSeeds(); - bool relocateSeed(ChartBuildData * chart); - - void updatePriorities(ChartBuildData * chart); - - float evaluatePriority(ChartBuildData * chart, uint face); - float evaluateProxyFitMetric(ChartBuildData * chart, uint face); - float evaluateDistanceToBoundary(ChartBuildData * chart, uint face); - float evaluateDistanceToSeed(ChartBuildData * chart, uint face); - float evaluateRoundnessMetric(ChartBuildData * chart, uint face, float newBoundaryLength, float newChartArea); - float evaluateStraightnessMetric(ChartBuildData * chart, uint face); - - float evaluateNormalSeamMetric(ChartBuildData * chart, uint f); - float evaluateTextureSeamMetric(ChartBuildData * chart, uint f); - float evaluateSeamMetric(ChartBuildData * chart, uint f); - - float evaluateChartArea(ChartBuildData * chart, uint f); - float evaluateBoundaryLength(ChartBuildData * chart, uint f); - Vector3 evaluateChartNormalSum(ChartBuildData * chart, uint f); - Vector3 evaluateChartCentroidSum(ChartBuildData * chart, uint f); - - Vector3 computeChartCentroid(const ChartBuildData * chart); - - - void fillHoles(float threshold); - void mergeCharts(); - - // @@ Cleanup. - struct Candidate { - uint face; - ChartBuildData * chart; - float metric; - }; - - const Candidate & getBestCandidate() const; - void removeCandidate(uint f); - void updateCandidate(ChartBuildData * chart, uint f, float metric); - - void mergeChart(ChartBuildData * owner, ChartBuildData * chart, float sharedBoundaryLength); - - - uint chartCount() const { return chartArray.count(); } - const Array<uint> & chartFaces(uint i) const; - - const HalfEdge::Mesh * mesh; - uint facesLeft; - Array<int> faceChartArray; - Array<ChartBuildData *> chartArray; - Array<float> shortestPaths; - - Array<float> edgeLengths; - Array<float> faceAreas; - - Array<Candidate> candidateArray; // - Array<uint> faceCandidateArray; // Map face index to candidate index. - - MTRand rand; - - SegmentationSettings settings; - }; - -} // nv namespace - -#endif // NV_MESH_ATLASBUILDER_H |