23 Real iso = this->varIsoValue()->getValue();
25 auto levelset = this->inVolume()->constDataPtr();
27 auto& sdf = levelset->getSDF();
29 Coord lowerBound = sdf.lowerBound();
30 Coord upperBound = sdf.upperBound();
32 Real h = sdf.getGridSpacing();
37 int nx = (upperBound[0] - lowerBound[0]) / h;
38 int ny = (upperBound[1] - lowerBound[1]) / h;
39 int nz = (upperBound[2] - lowerBound[2]) / h;
57 int totalVNum = reduce.
accumulate(voxelVertNum.begin(), voxelVertNum.size());
60 scan.
exclusive(voxelVertNum.begin(), voxelVertNum.size());
75 if (this->outTriangleSet()->isEmpty()) {
76 this->outTriangleSet()->allocate();
79 auto triSet = this->outTriangleSet()->getDataPtr();
80 triSet->setPoints(vertices);
81 triSet->setTriangles(triangles);
static void constructTriangles(DArray< Coord > &vertices, DArray< TopologyModule::Triangle > &triangles, DArray< int > &vertNum, DArray3D< Real > &distances, Coord origin, Real isoValue, Real h)