VTK-m  2.1
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
vtkm::filter::contour::AbstractContour Class Referenceabstract

Contour filter interface. More...

#include <AbstractContour.h>

Inheritance diagram for vtkm::filter::contour::AbstractContour:
vtkm::filter::Filter vtkm::filter::contour::Contour vtkm::filter::contour::ContourFlyingEdges vtkm::filter::contour::ContourMarchingCells vtkm::filter::contour::Slice vtkm::filter::contour::SliceMultiple

Public Member Functions

void SetNumberOfIsoValues (vtkm::Id num)
 
vtkm::Id GetNumberOfIsoValues () const
 
void SetIsoValue (vtkm::Float64 v)
 Set a field value on which to extract a contour. More...
 
void SetIsoValue (vtkm::Id index, vtkm::Float64 v)
 Set a field value on which to extract a contour. More...
 
void SetIsoValues (const std::vector< vtkm::Float64 > &values)
 Set multiple iso values at once. More...
 
vtkm::Float64 GetIsoValue (vtkm::Id index=0) const
 Return a value used to contour the mesh. More...
 
void SetGenerateNormals (bool flag)
 Set whether normals should be generated. More...
 
bool GetGenerateNormals () const
 Get whether normals should be generated. More...
 
void SetAddInterpolationEdgeIds (bool flag)
 Set whether to append the ids of the intersected edges to the vertices of the isosurface triangles. More...
 
bool GetAddInterpolationEdgeIds () const
 Get whether to append the ids of the intersected edges to the vertices of the isosurface triangles. More...
 
void SetComputeFastNormals (bool flag)
 Set whether the fast path should be used for normals computation. More...
 
bool GetComputeFastNormals () const
 Get whether the fast path should be used for normals computation. More...
 
void SetNormalArrayName (const std::string &name)
 Set the name of the field for the generated normals. More...
 
const std::string & GetNormalArrayName () const
 Get the name of the field for the generated normals. More...
 
void SetMergeDuplicatePoints (bool on)
 Set whether the points generated should be unique for every triangle or will duplicate points be merged together. More...
 
bool GetMergeDuplicatePoints ()
 Get whether the points generated should be unique for every triangle or will duplicate points be merged together. More...
 
- Public Member Functions inherited from vtkm::filter::Filter
 Filter ()
 
virtual ~Filter ()
 
vtkm::cont::DataSet Execute (const vtkm::cont::DataSet &input)
 Executes the filter on the input and produces a result dataset. More...
 
vtkm::cont::PartitionedDataSet Execute (const vtkm::cont::PartitionedDataSet &input)
 Executes the filter on the input PartitionedDataSet and produces a result PartitionedDataSet. More...
 
void SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (vtkm::filter::FieldSelection &&fieldsToPass)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass, vtkm::filter::FieldSelection::Mode mode)
 
void SetFieldsToPass (std::initializer_list< std::string > fields, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (std::initializer_list< std::pair< std::string, vtkm::cont::Field::Association >> fields, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (const std::string &fieldname, vtkm::cont::Field::Association association, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (const std::string &fieldname, vtkm::filter::FieldSelection::Mode mode)
 Specify which fields get passed from input to output. More...
 
const vtkm::filter::FieldSelectionGetFieldsToPass () const
 Specify which fields get passed from input to output. More...
 
vtkm::filter::FieldSelectionGetFieldsToPass ()
 Specify which fields get passed from input to output. More...
 
void SetPassCoordinateSystems (bool flag)
 Specify whether to always pass coordinate systems. More...
 
bool GetPassCoordinateSystems () const
 Specify whether to always pass coordinate systems. More...
 
void SetOutputFieldName (const std::string &name)
 Specifies the name of the output field generated. More...
 
const std::string & GetOutputFieldName () const
 Specifies the name of the output field generated. More...
 
void SetActiveField (const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any)
 Specifies a field to operate on. More...
 
void SetActiveField (vtkm::IdComponent index, const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any)
 Specifies a field to operate on. More...
 
const std::string & GetActiveFieldName (vtkm::IdComponent index=0) const
 Specifies a field to operate on. More...
 
vtkm::cont::Field::Association GetActiveFieldAssociation (vtkm::IdComponent index=0) const
 Specifies a field to operate on. More...
 
void SetActiveCoordinateSystem (vtkm::Id coord_idx)
 Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet. More...
 
void SetActiveCoordinateSystem (vtkm::IdComponent index, vtkm::Id coord_idx)
 Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet. More...
 
vtkm::Id GetActiveCoordinateSystemIndex (vtkm::IdComponent index=0) const
 Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet. More...
 
void SetUseCoordinateSystemAsField (bool val)
 Specifies whether to use point coordinates as the input field. More...
 
void SetUseCoordinateSystemAsField (vtkm::IdComponent index, bool val)
 Specifies whether to use point coordinates as the input field. More...
 
bool GetUseCoordinateSystemAsField (vtkm::IdComponent index=0) const
 Specifies whether to use point coordinates as the input field. More...
 
vtkm::IdComponent GetNumberOfActiveFields () const
 Return the number of active fields currently set. More...
 
virtual bool CanThread () const
 Returns whether the filter can execute on partitions in concurrent threads. More...
 
void SetThreadsPerCPU (vtkm::Id numThreads)
 
void SetThreadsPerGPU (vtkm::Id numThreads)
 
vtkm::Id GetThreadsPerCPU () const
 
vtkm::Id GetThreadsPerGPU () const
 
bool GetRunMultiThreadedFilter () const
 
void SetRunMultiThreadedFilter (bool val)
 
void SetInvoker (vtkm::cont::Invoker inv)
 Specify the vtkm::cont::Invoker to be used to execute worklets by this filter instance. More...
 

Protected Member Functions

void ExecuteGenerateNormals (vtkm::cont::DataSet &output, const vtkm::cont::ArrayHandle< vtkm::Vec3f > &normals)
 
template<typename WorkletType >
void ExecuteAddInterpolationEdgeIds (vtkm::cont::DataSet &output, WorkletType &worklet)
 
virtual vtkm::cont::DataSet DoExecute (const vtkm::cont::DataSet &result)=0
 
- Protected Member Functions inherited from vtkm::filter::Filter
vtkm::cont::DataSet CreateResult (const vtkm::cont::DataSet &inDataSet) const
 Create the output data set for DoExecute. More...
 
vtkm::cont::DataSet CreateResultField (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::Field &resultField) const
 Create the output data set for DoExecute More...
 
vtkm::cont::DataSet CreateResultField (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, vtkm::cont::Field::Association resultFieldAssociation, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const
 Create the output data set for DoExecute More...
 
vtkm::cont::DataSet CreateResultFieldPoint (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const
 Create the output data set for DoExecute More...
 
vtkm::cont::DataSet CreateResultFieldCell (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const
 Create the output data set for DoExecute More...
 
vtkm::cont::PartitionedDataSet CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::PartitionedDataSet CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::DataSet CreateResult (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::DataSet CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const vtkm::cont::CoordinateSystem &resultCoordSystem, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::DataSet CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const std::string &coordsName, const vtkm::cont::UnknownArrayHandle &coordsData, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
const vtkm::cont::FieldGetFieldFromDataSet (const vtkm::cont::DataSet &input) const
 Retrieve an input field from a vtkm::cont::DataSet object. More...
 
const vtkm::cont::FieldGetFieldFromDataSet (vtkm::IdComponent index, const vtkm::cont::DataSet &input) const
 Retrieve an input field from a vtkm::cont::DataSet object. More...
 
virtual vtkm::cont::PartitionedDataSet DoExecutePartitions (const vtkm::cont::PartitionedDataSet &inData)
 
template<typename Functor , typename... Args>
void CastAndCallScalarField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input scalar field. More...
 
template<typename Functor , typename... Args>
void CastAndCallScalarField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input scalar field. More...
 
template<vtkm::IdComponent VecSize, typename Functor , typename... Args>
void CastAndCallVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input vector field. More...
 
template<vtkm::IdComponent VecSize, typename Functor , typename... Args>
void CastAndCallVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input vector field. More...
 
template<typename Functor , typename... Args>
void CastAndCallVariableVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 This method is like CastAndCallVecField except that it can be used for a field of unknown vector size (or scalars). More...
 
template<typename Functor , typename... Args>
void CastAndCallVariableVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 This method is like CastAndCallVecField except that it can be used for a field of unknown vector size (or scalars). More...
 

Static Protected Member Functions

template<typename WorkletType >
static bool DoMapField (vtkm::cont::DataSet &result, const vtkm::cont::Field &field, WorkletType &worklet)
 Map a given field to the output DataSet , depending on its type. More...
 

Protected Attributes

std::vector< vtkm::Float64IsoValues
 
bool GenerateNormals = true
 
bool ComputeFastNormals = false
 
bool AddInterpolationEdgeIds = false
 
bool MergeDuplicatedPoints = true
 
std::string NormalArrayName = "normals"
 
std::string InterpolationEdgeIdsArrayName = "edgeIds"
 
- Protected Attributes inherited from vtkm::filter::Filter
vtkm::cont::Invoker Invoke
 

Detailed Description

Contour filter interface.

Provides common configuration & execution methods for contour filters Only the method DoExecute executing the contour algorithm needs to be implemented

Member Function Documentation

◆ DoExecute()

virtual vtkm::cont::DataSet vtkm::filter::contour::AbstractContour::DoExecute ( const vtkm::cont::DataSet result)
protectedpure virtual

◆ DoMapField()

template<typename WorkletType >
static bool vtkm::filter::contour::AbstractContour::DoMapField ( vtkm::cont::DataSet result,
const vtkm::cont::Field field,
WorkletType &  worklet 
)
inlinestaticprotected

Map a given field to the output DataSet , depending on its type.

The worklet needs to implement ProcessPointField to process point fields as arrays and GetCellIdMap function giving the cell id mapping from input to output

◆ ExecuteAddInterpolationEdgeIds()

template<typename WorkletType >
void vtkm::filter::contour::AbstractContour::ExecuteAddInterpolationEdgeIds ( vtkm::cont::DataSet output,
WorkletType &  worklet 
)
inlineprotected

◆ ExecuteGenerateNormals()

void vtkm::filter::contour::AbstractContour::ExecuteGenerateNormals ( vtkm::cont::DataSet output,
const vtkm::cont::ArrayHandle< vtkm::Vec3f > &  normals 
)
inlineprotected

◆ GetAddInterpolationEdgeIds()

bool vtkm::filter::contour::AbstractContour::GetAddInterpolationEdgeIds ( ) const
inline

Get whether to append the ids of the intersected edges to the vertices of the isosurface triangles.

◆ GetComputeFastNormals()

bool vtkm::filter::contour::AbstractContour::GetComputeFastNormals ( ) const
inline

Get whether the fast path should be used for normals computation.

◆ GetGenerateNormals()

bool vtkm::filter::contour::AbstractContour::GetGenerateNormals ( ) const
inline

Get whether normals should be generated.

◆ GetIsoValue()

vtkm::Float64 vtkm::filter::contour::AbstractContour::GetIsoValue ( vtkm::Id  index = 0) const
inline

Return a value used to contour the mesh.

◆ GetMergeDuplicatePoints()

bool vtkm::filter::contour::AbstractContour::GetMergeDuplicatePoints ( )
inline

Get whether the points generated should be unique for every triangle or will duplicate points be merged together.

◆ GetNormalArrayName()

const std::string& vtkm::filter::contour::AbstractContour::GetNormalArrayName ( ) const
inline

Get the name of the field for the generated normals.

◆ GetNumberOfIsoValues()

vtkm::Id vtkm::filter::contour::AbstractContour::GetNumberOfIsoValues ( ) const
inline

◆ SetAddInterpolationEdgeIds()

void vtkm::filter::contour::AbstractContour::SetAddInterpolationEdgeIds ( bool  flag)
inline

Set whether to append the ids of the intersected edges to the vertices of the isosurface triangles.

Off by default.

◆ SetComputeFastNormals()

void vtkm::filter::contour::AbstractContour::SetComputeFastNormals ( bool  flag)
inline

Set whether the fast path should be used for normals computation.

When this flag is off (the default), the generated normals are based on the gradient of the field being contoured and can be quite expensive to compute. When the flag is on, a faster method that computes the normals based on the faces of the isosurface mesh is used, but the normals do not look as good as the gradient based normals.

This flag has no effect if SetGenerateNormals is false.

◆ SetGenerateNormals()

void vtkm::filter::contour::AbstractContour::SetGenerateNormals ( bool  flag)
inline

Set whether normals should be generated.

Normals are used in shading calculations during rendering and can make the surface appear more smooth.

Off by default.

◆ SetIsoValue() [1/2]

void vtkm::filter::contour::AbstractContour::SetIsoValue ( vtkm::Float64  v)
inline

Set a field value on which to extract a contour.

This form of the method is usually used when only one contour is being extracted.

◆ SetIsoValue() [2/2]

void vtkm::filter::contour::AbstractContour::SetIsoValue ( vtkm::Id  index,
vtkm::Float64  v 
)
inline

Set a field value on which to extract a contour.

This form is used to specify multiple contours. The method is called multiple times with different index parameters.

◆ SetIsoValues()

void vtkm::filter::contour::AbstractContour::SetIsoValues ( const std::vector< vtkm::Float64 > &  values)
inline

Set multiple iso values at once.

The iso values can be specified as either a std::vector or an initializer list. So, both

std::vector<vtkm::Float64> isovalues = { 0.2, 0.5, 0.7 };
contour.SetIsoValues(isovalues);

and

contour.SetIsoValues({ 0.2, 0.5, 0.7 });

work.

◆ SetMergeDuplicatePoints()

void vtkm::filter::contour::AbstractContour::SetMergeDuplicatePoints ( bool  on)
inline

Set whether the points generated should be unique for every triangle or will duplicate points be merged together.

Duplicate points are identified by the unique edge it was generated from.

Because the contour filter (like all filters in VTK-m) runs in parallel, parallel threads can (and often do) create duplicate versions of points. When this flag is set to true, a secondary operation will find all duplicated points and combine them together. If false, points will be duplicated. In addition to requiring more storage, duplicated points mean that triangles next to each other will not be considered adjecent to subsequent filters.

◆ SetNormalArrayName()

void vtkm::filter::contour::AbstractContour::SetNormalArrayName ( const std::string &  name)
inline

Set the name of the field for the generated normals.

◆ SetNumberOfIsoValues()

void vtkm::filter::contour::AbstractContour::SetNumberOfIsoValues ( vtkm::Id  num)
inline

Member Data Documentation

◆ AddInterpolationEdgeIds

bool vtkm::filter::contour::AbstractContour::AddInterpolationEdgeIds = false
protected

◆ ComputeFastNormals

bool vtkm::filter::contour::AbstractContour::ComputeFastNormals = false
protected

◆ GenerateNormals

bool vtkm::filter::contour::AbstractContour::GenerateNormals = true
protected

◆ InterpolationEdgeIdsArrayName

std::string vtkm::filter::contour::AbstractContour::InterpolationEdgeIdsArrayName = "edgeIds"
protected

◆ IsoValues

std::vector<vtkm::Float64> vtkm::filter::contour::AbstractContour::IsoValues
protected

◆ MergeDuplicatedPoints

bool vtkm::filter::contour::AbstractContour::MergeDuplicatedPoints = true
protected

◆ NormalArrayName

std::string vtkm::filter::contour::AbstractContour::NormalArrayName = "normals"
protected

The documentation for this class was generated from the following file:
vtkm::filter::contour::AbstractContour::SetIsoValues
void SetIsoValues(const std::vector< vtkm::Float64 > &values)
Set multiple iso values at once.
Definition: AbstractContour.h:78