KrisLibrary  1.0.0
Voxelize.h
1 #ifndef MESHING_VOXELIZE_H
2 #define MESHING_VOXELIZE_H
3 
4 #include "TriMesh.h"
5 #include "TriMeshTopology.h"
6 #include <KrisLibrary/math3d/Segment3D.h>
7 #include <KrisLibrary/structs/array3d.h>
8 
14 namespace Meshing {
15 
20 void GetSegmentCells(const Segment3D& s,vector<IntTriple>& cells);
21 
26 void GetSegmentCells(const Segment3D& s,int m,int n,int p,const AABB3D& bb,vector<IntTriple>& cells);
27 
32 void GetTriangleCells(const Triangle3D& tri,vector<IntTriple>& cells);
33 
38 void GetTriangleCells(const Triangle3D& tri,int m,int n,int p,const AABB3D& bb,vector<IntTriple>& cells);
39 
47 void SurfaceOccupancyGrid(const TriMesh& m,Array3D<bool>& occupied,AABB3D& bb);
48 
55 void VolumeOccupancyGrid_FloodFill(const TriMesh& m,Array3D<bool>& occupied,AABB3D& bb,const IntTriple& seed,bool seedOccupied);
56 
62 void VolumeOccupancyGrid_CenterShooting(const TriMesh& m,Array3D<bool>& occupied,AABB3D& bb,int shootDirection=0);
63 
75 void SweepVisibilityGrid(const TriMesh& m,int direction,Array3D<bool>& visible,AABB3D& bb,bool singleSided=true);
76 
86 void FastMarchingMethod(const TriMeshWithTopology& m,Array3D<Real>& distance,Array3D<Vector3>& gradient,AABB3D& bb,vector<IntTriple>& surfaceCells);
87 
88 
93 void FastMarchingMethod_Fill(const TriMeshWithTopology& m,Array3D<Real>& distance,Array3D<Vector3>& gradient,AABB3D& bb,vector<IntTriple>& surfaceCells);
94 
95 
99 void DensityEstimate_CenterShooting(const TriMesh& m,Array3D<Real>& density,AABB3D& bb,int shootDirection=0);
100 
104 void DensityEstimate_RandomShooting(const TriMesh& m,Array3D<Real>& density,AABB3D& bb,int numSamples,int shootDirection=0);
105 
112  void DensityEstimate_FloodFill(const TriMeshWithTopology& m,Array3D<Real>& density,AABB3D& bb,const IntTriple& seed);
113 
118 void DensityEstimate_FMM(const TriMeshWithTopology& m,Array3D<Real>& density,AABB3D& bb);
119 
124 void DensityEstimate_FMM(const Array3D<Real>& distance,const Array3D<Vector3>& gradient,const AABB3D& bb,Array3D<Real>& density);
125 
126 
127 } //namespace Meshing
128 
129 #endif
A lightweight integer 3-tuple class.
Definition: IntTriple.h:9
The namespace for all classes/functions in the Meshing package.
Definition: AnyGeometry.h:10
void DensityEstimate_RandomShooting(const TriMesh &m, Array3D< Real > &density, AABB3D &bb, int numSamples, int shootDirection)
Estimates the object&#39;s density filling the grid using a shooting method.
Definition: Voxelize.cpp:1084
void FastMarchingMethod(const TriMeshWithTopology &m, Array3D< Real > &distance, Array3D< Vector3 > &gradient, AABB3D &bb, vector< IntTriple > &surfaceCells)
Fills in a distance field on a 3D grid (occupied,bb) using the fast marching method initialized at th...
Definition: Voxelize.cpp:1544
void DensityEstimate_CenterShooting(const TriMesh &m, Array3D< Real > &density, AABB3D &bb, int shootDirection)
Estimates the object&#39;s density filling the grid using a shooting method.
Definition: Voxelize.cpp:1003
void VolumeOccupancyGrid_CenterShooting(const TriMesh &m, Array3D< bool > &occupied, AABB3D &bb, int shootDirection)
Sets cells of a boolean 3D grid (occupied,bb) to true if the cell&#39;s center is in the interior of the ...
Definition: Voxelize.cpp:918
void VolumeOccupancyGrid_FloodFill(const TriMesh &m, Array3D< bool > &occupied, AABB3D &bb, const IntTriple &seed, bool seedOccupied)
Sets cells of a boolean 3D grid (occupied,bb) to true if the cell&#39;s center is in the interior of the ...
Definition: Voxelize.cpp:718
void DensityEstimate_FMM(const TriMeshWithTopology &m, Array3D< Real > &density, AABB3D &bb)
Fills in a density estimate on a 3D grid (occupied,bb) using the FMM distance measurement.
Definition: Voxelize.cpp:1961
void SweepVisibilityGrid(const TriMesh &m, int direction, Array3D< bool > &visible, AABB3D &bb, bool singleSided)
From one "visible" side of the grid, sweeps the visibility across the volume until a mesh surface is ...
Definition: Voxelize.cpp:1176
void SurfaceOccupancyGrid(const TriMesh &m, Array3D< bool > &occupied, AABB3D &bb)
Sets cells of a boolean 3D grid (occupied,bb) that overlap the surface of m to true.
Definition: Voxelize.cpp:672
void GetTriangleCells(const Triangle2D &t, vector< IntPair > &cells)
Returns a list of cells that the triangle overlaps, given an infinite unit grid.
Definition: Rasterize.cpp:299
void FastMarchingMethod_Fill(const TriMeshWithTopology &m, Array3D< Real > &distance, Array3D< Vector3 > &gradient, AABB3D &bb, vector< IntTriple > &surfaceCells)
Same as FastMarchingMethod but constrains start points to the exterior of the mesh (sometimes avoids ...
Definition: Voxelize.cpp:1745
void DensityEstimate_FloodFill(const TriMeshWithTopology &m, Array3D< Real > &density, AABB3D &bb, const IntTriple &seed)
Fills in a density estimate on a 3D grid (occupied,bb) using a flood fill to determine inside/outside...
Definition: Voxelize.cpp:825
void GetSegmentCells(const Segment2D &s, vector< IntPair > &cells)
Returns a list of cells that the segment overlaps, given an infinite unit grid.
Definition: Rasterize.cpp:54
A three-dimensional m x n x parray.
Definition: array3d.h:31