28 auto sv = this->getSparseVolume();
30 if (sv->stateSDFTopology()->isEmpty())
32 printf(
"SparseMarchingCubes: The import is empty! \n");
36 Real isoValue = this->varIsoValue()->getData();
41 auto octree = sv->stateSDFTopology()->getDataPtr();
45 octree->getCellVertices0(ceilVertices);
50 octree->getSignDistanceMLS(ceilVertices, sdfs, normals,
false);
63 uint totalVNum = reduce.
accumulate(voxelVertNum.begin(), voxelVertNum.size());
66 scan.
exclusive(voxelVertNum.begin(), voxelVertNum.size());
80 if (this->stateTriangleSet()->isEmpty()) {
84 auto triSet = this->stateTriangleSet()->getDataPtr();
85 triSet->setPoints(triangleVertices);
86 triSet->setTriangles(triangles);
92 triangleVertices.clear();
static void constructTrianglesForOctree(DArray< Coord > &triangleVertices, DArray< TopologyModule::Triangle > &triangles, DArray< uint > &num, DArray< Coord > &cellVertices, DArray< Real > &sdfs, Real isoValue)