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

Computes normals for polygonal mesh. More...

#include <SurfaceNormals.h>

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

Public Member Functions

 SurfaceNormals ()
 Create SurfaceNormals filter. More...
 
void SetGenerateCellNormals (bool value)
 Specify whether cell normals should be generated. More...
 
bool GetGenerateCellNormals () const
 Specify whether cell normals should be generated. More...
 
void SetNormalizeCellNormals (bool value)
 Specify whether the cell normals should be normalized. More...
 
bool GetNormalizeCellNormals () const
 Specify whether the cell normals should be normalized. More...
 
void SetGeneratePointNormals (bool value)
 Specify whether the point normals should be generated. More...
 
bool GetGeneratePointNormals () const
 Specify whether the point normals should be generated. More...
 
void SetCellNormalsName (const std::string &name)
 Specify the name of the cell normals field. More...
 
const std::string & GetCellNormalsName () const
 Specify the name of the cell normals field. More...
 
void SetPointNormalsName (const std::string &name)
 Specify the name of the point normals field. More...
 
const std::string & GetPointNormalsName () const
 Specify the name of the point normals field. More...
 
void SetAutoOrientNormals (bool v)
 Specify whether to orient the normals outwards from the surface. More...
 
bool GetAutoOrientNormals () const
 Specify whether to orient the normals outwards from the surface. More...
 
void SetFlipNormals (bool v)
 Specify the direction to point normals when SetAutoOrientNormals() is true. More...
 
bool GetFlipNormals () const
 Specify the direction to point normals when SetAutoOrientNormals() is true. More...
 
void SetConsistency (bool v)
 Specify whtehr polygon winding should be made consistent with normal orientation. More...
 
bool GetConsistency () const
 Specify whtehr polygon winding should be made consistent with normal orientation. 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...
 

Private Member Functions

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::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...
 
- Protected Attributes inherited from vtkm::filter::Filter
vtkm::cont::Invoker Invoke
 

Detailed Description

Computes normals for polygonal mesh.

This filter computes 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. The normals will be consistently oriented to point in the direction of the same connected surface if possible.

The point and cell normals may be oriented to a point outside of the manifold surface by turning on the auto orient normals option (SetAutoOrientNormals()), or they may point inward by also setting flip normals (SetFlipNormals()) to true.

Triangle vertices will be reordered to be wound counter-clockwise around the cell normals when the consistency option (SetConsistency()) is enabled.

For non-polygonal cells, a zeroed vector is assigned. The point normals are computed by averaging the cell normals of the incident cells of each point.

The default name for the output fields is Normals, but that can be overridden using the SetCellNormalsName() and SetPointNormalsName() methods. The filter will also respect the name in SetOutputFieldName() if neither of the others are set.

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::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

Specify whether to orient the normals outwards from the surface.

This requires a closed manifold surface or the behavior is undefined. This option is expensive but might be 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

Specify the name of the cell normals field.

Default is Normals.

◆ GetConsistency()

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

Specify whtehr polygon winding should be made consistent with normal orientation.

Triangles are wound such that their points are counter-clockwise around the generated cell normal. Default is true. This currently only affects triangles. This is only applied when cell normals are generated.

◆ GetFlipNormals()

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

Specify the direction to point normals when SetAutoOrientNormals() is true.

When this flag is false (the default), the normals will be oriented to point outward. When the flag is true, the normals will point inward. This option has no effect if auto orient normals is off.

◆ GetGenerateCellNormals()

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

Specify whether cell normals should be generated.

Default is off.

◆ GetGeneratePointNormals()

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

Specify whether the point normals should be generated.

Default is on.

◆ GetNormalizeCellNormals()

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

Specify whether 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

Specify the name of the point normals field.

Default is Normals.

◆ SetAutoOrientNormals()

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

Specify whether to orient the normals outwards from the surface.

This requires a closed manifold surface or the behavior is undefined. This option is expensive but might be 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

Specify the name of the cell normals field.

Default is Normals.

◆ SetConsistency()

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

Specify whtehr polygon winding should be made consistent with normal orientation.

Triangles are wound such that their points are counter-clockwise around the generated cell normal. Default is true. 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

Specify the direction to point normals when SetAutoOrientNormals() is true.

When this flag is false (the default), the normals will be oriented to point outward. When the flag is true, the normals will point inward. This option has no effect if auto orient normals is off.

◆ SetGenerateCellNormals()

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

Specify whether cell normals should be generated.

Default is off.

◆ SetGeneratePointNormals()

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

Specify whether the point normals should be generated.

Default is on.

◆ SetNormalizeCellNormals()

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

Specify whether 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

Specify 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: