40 #include "WButterflyFactory.h"
41 #include "core/kernel/WModule.h"
42 #include "structure/WVertexFactory.h"
74 virtual const std::string
getName()
const;
87 virtual std::shared_ptr< WModule >
factory()
const;
127 std::shared_ptr< WModuleInputData< WTriangleMesh > >
m_input;
128 std::shared_ptr< WModuleOutputData< WTriangleMesh > >
m_output;
This data set type contains scalars as values.
This class adds some convenience methods to WGEGroupNode.
OpenWalnut module that subdivides a triangle mesh in more points resulting a smoother surface.
WPropDouble m_maxNeighbourTriangleAngleTriangleFlip
The Minimal allowed angle which fits in both vertices at a subdividable line end.
WPropDouble m_minTransformationAngle
Angle setting which both angles at the subdivided line ends should be at least as big as this value.
WPropDouble m_minAmountOfMax
Factor for multiplying the maximal distance to a neighbour within the Butterfly stencil.
WPropDouble m_minSubdividedLineLengthMultiplierPerIteration
The factor where the minimal subdivided line length is multiplied by in each Subdivision iteration st...
virtual void properties()
Initialize the properties for this module.
virtual ~WMButterfly()
Destroys this module.
WPropInt m_cpuThreads
CPU thread count setting for multithreading support.
WPropDouble m_maxNeighbourTriangleAngle
A subdivision is marked as invalid if the angle between any neighbor triangle line is above that angl...
std::shared_ptr< WModuleInputData< WTriangleMesh > > m_input
Input connector for scalar data.
WPropDouble m_maxNeighbourTriangleAngleLengthRatio
This settings extends If the line length is smaller than the subdividable line by this ratio,...
WPropDouble m_maxAmountOfMaxForVertexJoin
The Factor for comparison to the maximal length of a triangle.
std::shared_ptr< WCondition > m_propCondition
Needed for recreating the geometry, incase when resolution changes.
WPropInt m_maxTriangles
Maximal allowed triangle count after Butterfly subdivision.
WPropDouble m_minAmountOfAverage
Factor for multiplying the average distance to a neighbour within the Butterfly stencil.
std::shared_ptr< WTriangleMesh > m_mesh
Triangle mesh which will be assigned to the Butterfly subdivision instance.
std::shared_ptr< WTriangleMesh > m_oldInterpolatedMesh
Holder for the current triangle mesh that grants that there's always a valid data output at the end.
WPropInt m_iterations
The iteration count of the Butterfly subdivision to attempt.
WPropDouble m_minQuotient
Maximum factor which the following lines should differ to show a valid subdivision.
virtual void requirements()
Initialize requirements for this module.
std::shared_ptr< WModuleOutputData< WTriangleMesh > > m_output
Output connector provided by this module.
osg::ref_ptr< WGEManagedGroupNode > m_rootNode
The OSG root node for this module.
virtual const std::string getDescription() const
Gives back a description of this module.
virtual const std::string getName() const
Gives back the name of this module.
virtual void moduleMain()
Entry point after loading the module.
WMButterfly()
Creates the module for subdividing a triangle mesh using Butterfly subdivision.
WPropDouble m_minSubdividedLineLength
The minimal subdividable line length.
float getMaxLineLength(std::shared_ptr< WTriangleMesh > inputMesh)
Returns the biggest length of a neighbour relationship.
virtual const char ** getXPMIcon() const
Get the icon for this module in XPM format.
WPropDouble m_maxTriangles10n
Maximal allowed triangle count after Butterfly subdivision.
WPropDouble m_butterflySettingW
The general Butterfly Subdivision setting w that affects the subdivision.
WPropDouble m_maxTransformationAngle
Angle setting which both angles at the subdivided line ends should be not bigger than this value.
virtual void connectors()
Initialize the connectors this module is using.
butterfly::WButterflyFactory * m_butterfly
Butterfly subdivision instance.
virtual std::shared_ptr< WModule > factory() const
Due to the prototype design pattern used to build modules, this method returns a new instance of this...
WPropDouble m_minNeighbourTriangleAngle
The Minimal allowed angle between two Subdivided line ends.
Class representing a single module of OpenWalnut.
Class that depicts the whole Butterfly subdivision algorithm but nothing more as such.