VTK-m  2.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
vtkm::filter::vector_analysis::SurfaceNormals Class Reference

compute normals for polygonal mesh More...

#include <SurfaceNormals.h>

Inheritance diagram for vtkm::filter::vector_analysis::SurfaceNormals:
vtkm::filter::FilterField vtkm::filter::Filter

Public Member Functions

 SurfaceNormals ()
 Create SurfaceNormals filter. More...
 
void SetGenerateCellNormals (bool value)
 Set/Get if cell normals should be generated. More...
 
bool GetGenerateCellNormals () const
 Set/Get if cell normals should be generated. More...
 
void SetNormalizeCellNormals (bool value)
 Set/Get if the cell normals should be normalized. More...
 
bool GetNormalizeCellNormals () const
 Set/Get if the cell normals should be normalized. More...
 
void SetGeneratePointNormals (bool value)
 Set/Get if the point normals should be generated. More...
 
bool GetGeneratePointNormals () const
 Set/Get if the point normals should be generated. More...
 
void SetCellNormalsName (const std::string &name)
 Set/Get the name of the cell normals field. More...
 
const std::string & GetCellNormalsName () const
 Set/Get the name of the cell normals field. More...
 
void SetPointNormalsName (const std::string &name)
 Set/Get the name of the point normals field. More...
 
const std::string & GetPointNormalsName () const
 Set/Get the name of the point normals field. More...
 
void SetAutoOrientNormals (bool v)
 If true, the normals will be oriented to face outwards from the surface. More...
 
bool GetAutoOrientNormals () const
 If true, the normals will be oriented to face outwards from the surface. More...
 
void SetFlipNormals (bool v)
 Reverse the normals to point inward when AutoOrientNormals is true. More...
 
bool GetFlipNormals () const
 Reverse the normals to point inward when AutoOrientNormals is true. More...
 
void SetConsistency (bool v)
 Ensure that polygon winding is consistent with normal orientation. More...
 
bool GetConsistency () const
 Ensure that polygon winding is consistent with normal orientation. More...
 
- Public Member Functions inherited from vtkm::filter::FilterField
 FilterField ()
 
VTKM_CONT void SetOutputFieldName (const std::string &name)
 
const VTKM_CONT std::string & GetOutputFieldName () const
 
VTKM_CONT void SetActiveField (const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any)
 
void SetActiveField (vtkm::IdComponent index, const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any)
 
const VTKM_CONT std::string & GetActiveFieldName (vtkm::IdComponent index=0) const
 
VTKM_CONT vtkm::cont::Field::Association GetActiveFieldAssociation (vtkm::IdComponent index=0) const
 
VTKM_CONT void SetActiveCoordinateSystem (vtkm::Id coord_idx)
 
VTKM_CONT void SetActiveCoordinateSystem (vtkm::IdComponent index, vtkm::Id coord_idx)
 
VTKM_CONT vtkm::Id GetActiveCoordinateSystemIndex () const
 
VTKM_CONT vtkm::Id GetActiveCoordinateSystemIndex (vtkm::IdComponent index) const
 
VTKM_CONT void SetUseCoordinateSystemAsField (bool val)
 
VTKM_CONT void SetUseCoordinateSystemAsField (vtkm::IdComponent index, bool val)
 
VTKM_CONT bool GetUseCoordinateSystemAsField (vtkm::IdComponent index=0) const
 
- Public Member Functions inherited from vtkm::filter::Filter
virtual VTKM_CONT ~Filter ()
 
virtual VTKM_CONT bool CanThread () const
 
VTKM_CONT void SetThreadsPerCPU (vtkm::Id numThreads)
 
VTKM_CONT void SetThreadsPerGPU (vtkm::Id numThreads)
 
VTKM_CONT vtkm::Id GetThreadsPerCPU () const
 
VTKM_CONT vtkm::Id GetThreadsPerGPU () const
 
VTKM_CONT bool GetRunMultiThreadedFilter () const
 
VTKM_CONT 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...
 
VTKM_CONT void SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass)
 Specify which fields get passed from input to output. More...
 
VTKM_CONT void SetFieldsToPass (vtkm::filter::FieldSelection &&fieldsToPass)
 Specify which fields get passed from input to output. More...
 
VTKM_CONT void SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass, vtkm::filter::FieldSelection::Mode mode)
 Specify which fields get passed from input to output. More...
 
VTKM_CONT 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...
 
VTKM_CONT 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...
 
VTKM_CONT 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...
 
VTKM_CONT void SetFieldsToPass (const std::string &fieldname, vtkm::filter::FieldSelection::Mode mode)
 Specify which fields get passed from input to output. More...
 
const VTKM_CONT vtkm::filter::FieldSelectionGetFieldsToPass () const
 Specify which fields get passed from input to output. More...
 
VTKM_CONT vtkm::filter::FieldSelectionGetFieldsToPass ()
 Specify which fields get passed from input to output. More...
 
VTKM_CONT void SetPassCoordinateSystems (bool flag)
 Specify whether to always pass coordinate systems. More...
 
VTKM_CONT bool GetPassCoordinateSystems () const
 Specify whether to always pass coordinate systems. More...
 
VTKM_CONT vtkm::cont::DataSet Execute (const vtkm::cont::DataSet &input)
 
VTKM_CONT vtkm::cont::PartitionedDataSet Execute (const vtkm::cont::PartitionedDataSet &input)
 

Private Member Functions

VTKM_CONT vtkm::cont::DataSet DoExecute (const vtkm::cont::DataSet &inputDataSet) override
 

Private Attributes

bool GenerateCellNormals = false
 
bool NormalizeCellNormals = true
 
bool GeneratePointNormals = true
 
bool AutoOrientNormals = false
 
bool FlipNormals = false
 
bool Consistency = true
 
std::string CellNormalsName
 
std::string PointNormalsName
 

Additional Inherited Members

- Protected Member Functions inherited from vtkm::filter::FilterField
const VTKM_CONT vtkm::cont::FieldGetFieldFromDataSet (const vtkm::cont::DataSet &input) const
 
const VTKM_CONT vtkm::cont::FieldGetFieldFromDataSet (vtkm::IdComponent index, const vtkm::cont::DataSet &input) const
 
template<typename Functor , typename... Args>
VTKM_CONT void CastAndCallScalarField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 
template<typename Functor , typename... Args>
VTKM_CONT void CastAndCallScalarField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 
template<vtkm::IdComponent VecSize, typename Functor , typename... Args>
VTKM_CONT void CastAndCallVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 
template<vtkm::IdComponent VecSize, typename Functor , typename... Args>
VTKM_CONT void CastAndCallVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 
VTKM_CONT 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 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 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 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...
 
- Protected Member Functions inherited from vtkm::filter::Filter
VTKM_CONT vtkm::cont::DataSet CreateResult (const vtkm::cont::DataSet &inDataSet) const
 Create the output data set for DoExecute. More...
 
VTKM_CONT 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 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 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...
 
virtual VTKM_CONT vtkm::cont::PartitionedDataSet DoExecutePartitions (const vtkm::cont::PartitionedDataSet &inData)
 
template<typename FieldMapper >
VTKM_CONT 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 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...
 
- Protected Attributes inherited from vtkm::filter::Filter
vtkm::cont::Invoker Invoke
 

Detailed Description

compute normals for polygonal mesh

Compute surface normals on points and/or cells of a polygonal dataset. The cell normals are faceted and are computed based on the plane where a face lies. The point normals are smooth normals, computed by averaging the face normals of incident cells.

Constructor & Destructor Documentation

◆ SurfaceNormals()

vtkm::filter::vector_analysis::SurfaceNormals::SurfaceNormals ( )

Create SurfaceNormals filter.

This calls this->SetUseCoordinateSystemAsField(true) since that is the most common use-case for surface normals.

Member Function Documentation

◆ DoExecute()

VTKM_CONT vtkm::cont::DataSet vtkm::filter::vector_analysis::SurfaceNormals::DoExecute ( const vtkm::cont::DataSet inputDataSet)
overrideprivatevirtual

Implements vtkm::filter::Filter.

◆ GetAutoOrientNormals()

bool vtkm::filter::vector_analysis::SurfaceNormals::GetAutoOrientNormals ( ) const
inline

If true, the normals will be oriented to face outwards from the surface.

This requires a closed manifold surface or the behavior is undefined. This option is expensive but necessary for rendering. To make the normals point inward, set FlipNormals to true. Default is off.

◆ GetCellNormalsName()

const std::string& vtkm::filter::vector_analysis::SurfaceNormals::GetCellNormalsName ( ) const
inline

Set/Get the name of the cell normals field.

Default is "Normals".

◆ GetConsistency()

bool vtkm::filter::vector_analysis::SurfaceNormals::GetConsistency ( ) const
inline

Ensure that polygon winding is consistent with normal orientation.

Triangles are wound such that their points are counter-clockwise around the generated cell normal. Default is true.

Note
This currently only affects triangles.
This is only applied when cell normals are generated.

◆ GetFlipNormals()

bool vtkm::filter::vector_analysis::SurfaceNormals::GetFlipNormals ( ) const
inline

Reverse the normals to point inward when AutoOrientNormals is true.

Default is false.

◆ GetGenerateCellNormals()

bool vtkm::filter::vector_analysis::SurfaceNormals::GetGenerateCellNormals ( ) const
inline

Set/Get if cell normals should be generated.

Default is off.

◆ GetGeneratePointNormals()

bool vtkm::filter::vector_analysis::SurfaceNormals::GetGeneratePointNormals ( ) const
inline

Set/Get if the point normals should be generated.

Default is on.

◆ GetNormalizeCellNormals()

bool vtkm::filter::vector_analysis::SurfaceNormals::GetNormalizeCellNormals ( ) const
inline

Set/Get if the cell normals should be normalized.

Default value is true. The intended use case of this flag is for faster, approximate point normals generation by skipping the normalization of the face normals. Note that when set to false, the result cell normals will not be unit length normals and the point normals will be different.

◆ GetPointNormalsName()

const std::string& vtkm::filter::vector_analysis::SurfaceNormals::GetPointNormalsName ( ) const
inline

Set/Get the name of the point normals field.

Default is "Normals".

◆ SetAutoOrientNormals()

void vtkm::filter::vector_analysis::SurfaceNormals::SetAutoOrientNormals ( bool  v)
inline

If true, the normals will be oriented to face outwards from the surface.

This requires a closed manifold surface or the behavior is undefined. This option is expensive but necessary for rendering. To make the normals point inward, set FlipNormals to true. Default is off.

◆ SetCellNormalsName()

void vtkm::filter::vector_analysis::SurfaceNormals::SetCellNormalsName ( const std::string &  name)
inline

Set/Get the name of the cell normals field.

Default is "Normals".

◆ SetConsistency()

void vtkm::filter::vector_analysis::SurfaceNormals::SetConsistency ( bool  v)
inline

Ensure that polygon winding is consistent with normal orientation.

Triangles are wound such that their points are counter-clockwise around the generated cell normal. Default is true.

Note
This currently only affects triangles.
This is only applied when cell normals are generated.

◆ SetFlipNormals()

void vtkm::filter::vector_analysis::SurfaceNormals::SetFlipNormals ( bool  v)
inline

Reverse the normals to point inward when AutoOrientNormals is true.

Default is false.

◆ SetGenerateCellNormals()

void vtkm::filter::vector_analysis::SurfaceNormals::SetGenerateCellNormals ( bool  value)
inline

Set/Get if cell normals should be generated.

Default is off.

◆ SetGeneratePointNormals()

void vtkm::filter::vector_analysis::SurfaceNormals::SetGeneratePointNormals ( bool  value)
inline

Set/Get if the point normals should be generated.

Default is on.

◆ SetNormalizeCellNormals()

void vtkm::filter::vector_analysis::SurfaceNormals::SetNormalizeCellNormals ( bool  value)
inline

Set/Get if the cell normals should be normalized.

Default value is true. The intended use case of this flag is for faster, approximate point normals generation by skipping the normalization of the face normals. Note that when set to false, the result cell normals will not be unit length normals and the point normals will be different.

◆ SetPointNormalsName()

void vtkm::filter::vector_analysis::SurfaceNormals::SetPointNormalsName ( const std::string &  name)
inline

Set/Get the name of the point normals field.

Default is "Normals".

Member Data Documentation

◆ AutoOrientNormals

bool vtkm::filter::vector_analysis::SurfaceNormals::AutoOrientNormals = false
private

◆ CellNormalsName

std::string vtkm::filter::vector_analysis::SurfaceNormals::CellNormalsName
private

◆ Consistency

bool vtkm::filter::vector_analysis::SurfaceNormals::Consistency = true
private

◆ FlipNormals

bool vtkm::filter::vector_analysis::SurfaceNormals::FlipNormals = false
private

◆ GenerateCellNormals

bool vtkm::filter::vector_analysis::SurfaceNormals::GenerateCellNormals = false
private

◆ GeneratePointNormals

bool vtkm::filter::vector_analysis::SurfaceNormals::GeneratePointNormals = true
private

◆ NormalizeCellNormals

bool vtkm::filter::vector_analysis::SurfaceNormals::NormalizeCellNormals = true
private

◆ PointNormalsName

std::string vtkm::filter::vector_analysis::SurfaceNormals::PointNormalsName
private

The documentation for this class was generated from the following file: