mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 10:35:42 +00:00
Marching Cubes now generates vertices when merge duplicates is enabled.
This commit is contained in:
parent
f699c98602
commit
c00fb53b54
@ -64,6 +64,7 @@ int GetHexahedronClassification(const T& values, const U isoValue)
|
|||||||
(values[7] > isoValue) << 7);
|
(values[7] > isoValue) << 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
class ClassifyCell : public vtkm::worklet::WorkletMapPointToCell
|
class ClassifyCell : public vtkm::worklet::WorkletMapPointToCell
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -101,6 +102,7 @@ public:
|
|||||||
|
|
||||||
/// \brief Compute the weights for each edge that is used to generate
|
/// \brief Compute the weights for each edge that is used to generate
|
||||||
/// a point in the resulting iso-surface
|
/// a point in the resulting iso-surface
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
class EdgeWeightGenerate : public vtkm::worklet::WorkletMapPointToCell
|
class EdgeWeightGenerate : public vtkm::worklet::WorkletMapPointToCell
|
||||||
{
|
{
|
||||||
typedef vtkm::Vec< vtkm::Id2, 3 > Vec3Id2;
|
typedef vtkm::Vec< vtkm::Id2, 3 > Vec3Id2;
|
||||||
@ -222,7 +224,7 @@ private:
|
|||||||
ScatterType Scatter;
|
ScatterType Scatter;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
class ApplyToField : public vtkm::worklet::WorkletMapField
|
class ApplyToField : public vtkm::worklet::WorkletMapField
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -355,11 +357,8 @@ vtkm::filter::DataSetResult MarchingCubes::DoExecute(const vtkm::cont::DataSet&
|
|||||||
//Now that we have the edge interpolation finished we can generate the
|
//Now that we have the edge interpolation finished we can generate the
|
||||||
//following:
|
//following:
|
||||||
//1. Coordinates ( with option to do point merging )
|
//1. Coordinates ( with option to do point merging )
|
||||||
//2. Normals
|
//
|
||||||
//todo: We need to run the coords through out policy and determine
|
//
|
||||||
//what the output coordinate type should be. We have two problems here
|
|
||||||
//1. What is the type? float32/float64
|
|
||||||
//2. What is the storage backing
|
|
||||||
vtkm::cont::DataSet output;
|
vtkm::cont::DataSet output;
|
||||||
vtkm::cont::ArrayHandle< vtkm::Vec< vtkm::Float32,3> > vertices;
|
vtkm::cont::ArrayHandle< vtkm::Vec< vtkm::Float32,3> > vertices;
|
||||||
|
|
||||||
@ -414,6 +413,16 @@ vtkm::filter::DataSetResult MarchingCubes::DoExecute(const vtkm::cont::DataSet&
|
|||||||
vtkm::cont::CellSetSingleType< > outputCells( triangleTag );
|
vtkm::cont::CellSetSingleType< > outputCells( triangleTag );
|
||||||
outputCells.Fill( connectivity );
|
outputCells.Fill( connectivity );
|
||||||
output.AddCellSet( outputCells );
|
output.AddCellSet( outputCells );
|
||||||
|
|
||||||
|
|
||||||
|
ApplyToField applyToField;
|
||||||
|
vtkm::worklet::DispatcherMapField<ApplyToField,
|
||||||
|
DeviceAdapter> applyFieldDispatcher(applyToField);
|
||||||
|
applyFieldDispatcher.Invoke(unqiueIds,
|
||||||
|
this->InterpolationWeights,
|
||||||
|
vtkm::filter::ApplyPolicy(coords, policy),
|
||||||
|
vertices);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user