OpenWalnut  1.5.0dev
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
WMButterfly Class Reference

OpenWalnut module that subdivides a triangle mesh in more points resulting a smoother surface. More...

#include <WMButterfly.h>

+ Inheritance diagram for WMButterfly:
+ Collaboration diagram for WMButterfly:

Public Member Functions

 WMButterfly ()
 Creates the module for subdividing a triangle mesh using Butterfly subdivision. More...
 
virtual ~WMButterfly ()
 Destroys this module. More...
 
virtual const std::string getName () const
 Gives back the name of this module. More...
 
virtual const std::string getDescription () const
 Gives back a description of this module. More...
 
virtual std::shared_ptr< WModulefactory () const
 Due to the prototype design pattern used to build modules, this method returns a new instance of this method. More...
 
virtual const char ** getXPMIcon () const
 Get the icon for this module in XPM format. More...
 
- Public Member Functions inherited from WModule
 WModule ()
 Constructs a new WModule instance. More...
 
virtual ~WModule ()
 Destructor. More...
 
const InputConnectorListgetInputConnectors () const
 Gives back input connectors. More...
 
std::shared_ptr< WModuleInputConnectorgetInputConnector (std::string name)
 Finds the named connector for the module. More...
 
std::shared_ptr< WModuleInputConnectorfindInputConnector (std::string name)
 Finds the named connector for the module. More...
 
const OutputConnectorListgetOutputConnectors () const
 Gives back output connectors. More...
 
std::shared_ptr< WModuleOutputConnectorgetOutputConnector (std::string name)
 Finds the named connector for the module. More...
 
std::shared_ptr< WModuleOutputConnectorfindOutputConnector (std::string name)
 Finds the named connector for the module. More...
 
std::shared_ptr< WModuleConnectorgetConnector (std::string name)
 Finds the named connector for the module. More...
 
std::shared_ptr< WModuleConnectorfindConnector (std::string name)
 Finds the named connector for the module. More...
 
std::shared_ptr< WPropertiesgetProperties () const
 Return a pointer to the properties object of the module. More...
 
std::shared_ptr< WPropertiesgetInformationProperties () const
 Return a pointer to the information properties object of the module. More...
 
const WBoolFlagisInitialized () const
 Determines whether the module instance is properly initialized. More...
 
const WBoolFlagisUseable () const
 Checks whether the module instance is ready to be used. More...
 
const WBoolFlagisAssociated () const
 Checks whether this module is associated with an container. More...
 
const WBoolFlagisReady () const
 Checks whether this module is ready. More...
 
const WBoolFlagisReadyOrCrashed () const
 This is the logical or of isReady and isCrashed. More...
 
const WBoolFlagisRunning () const
 Returns a flag denoting whether the thread currently is running or nor. More...
 
void waitRestored ()
 This method waits for the module to be restored completely. More...
 
bool isRestoreNeeded () const
 Check whether this module is in restore mode. More...
 
void setRestoreNeeded (bool restore=true)
 Change the restore mode. More...
 
void reportRestoreComplete ()
 Called by loaders to tell the module that loading has been completed. More...
 
std::shared_ptr< WModuleContainergetAssociatedContainer () const
 The container this module is associated with. More...
 
virtual boost::signals2::connection subscribeSignal (MODULE_SIGNAL signal, t_ModuleGenericSignalHandlerType notifier)
 Connects a specified notify function with a signal this module instance is offering. More...
 
virtual boost::signals2::connection subscribeSignal (MODULE_SIGNAL signal, t_ModuleErrorSignalHandlerType notifier)
 Connects a specified notify function with a signal this module instance is offering. More...
 
virtual std::shared_ptr< WProgressCombinergetRootProgressCombiner ()
 Gets the modules base progress. More...
 
virtual MODULE_TYPE getType () const
 Gets the type of the module. More...
 
void disconnect ()
 Completely disconnects all connected connectors of this module. More...
 
WCombinerTypes::WDisconnectList getPossibleDisconnections ()
 Gives a list of all WDisconnectCombiners possible. More...
 
boost::filesystem::path getLocalPath () const
 Returns the local path of the module. More...
 
boost::filesystem::path getLibPath () const
 Returns the absolute path to the library containing this module. More...
 
std::string getPackageName () const
 Returns the name of the package the module belongs to, The package name basically is the name of the library containing this and maybe other modules. More...
 
bool isDeprecated () const
 Checks whether the module was marked as deprecated. More...
 
std::string getDeprecationMessage () const
 Queries the deprecation message of a module if specified. More...
 
virtual WModuleMetaInformation::ConstSPtr getMetaInformation () const
 The meta information of this module. More...
 
const std::string & getUUID () const
 Get the UUID of the module instance. More...
 
WPropString getRuntimeName () const
 Returns the name the user has given this module. More...
 
const WRequirementcheckRequirements () const
 This method checks whether all the requirements of the module are complied. More...
 
virtual boost::signals2::connection subscribeSignal (THREAD_SIGNAL signal, t_ThreadErrorSignalHandlerType notifier)
 Connects a specified notify function with a signal this thread instance is offering. More...
 
- Public Member Functions inherited from WThreadedRunner
 WThreadedRunner ()
 Default constructor. More...
 
virtual ~WThreadedRunner ()
 Destructor. More...
 
virtual void run ()
 Run thread. More...
 
void run (THREADFUNCTION f)
 Run thread. More...
 
void wait (bool requestFinish=false)
 Wait for the thread to be finished. More...
 
virtual void requestStop ()
 This method's purpose is to request a stop without waiting for it. More...
 
virtual boost::signals2::connection subscribeSignal (THREAD_SIGNAL signal, t_ThreadErrorSignalHandlerType notifier)
 Connects a specified notify function with a signal this thread instance is offering. More...
 
const WBoolFlagisCrashed () const
 Checks whether this thread has been crashed. More...
 
const std::string & getCrashMessage () const
 Get the message of the exception finally causing the crash. More...
 
void setThreadName (std::string name)
 Set the name of the thread. More...
 
std::string getThreadName () const
 Returns the current thread name. More...
 
- Public Member Functions inherited from WPrototyped
 WPrototyped ()
 Default constructor. More...
 
virtual ~WPrototyped ()
 Destructor. More...
 
template<typename T >
bool isA ()
 Checks whether the actual prototype has the specified runtime type. More...
 

Protected Member Functions

virtual void moduleMain ()
 Entry point after loading the module. More...
 
virtual void connectors ()
 Initialize the connectors this module is using. More...
 
virtual void properties ()
 Initialize the properties for this module. More...
 
virtual void requirements ()
 Initialize requirements for this module. More...
 
- Protected Member Functions inherited from WModule
void threadMain ()
 Thread entry point. More...
 
virtual void onThreadException (const WException &e)
 This method is called if an exception was caught, which came from the custom thread code. More...
 
void setAssociatedContainer (std::shared_ptr< WModuleContainer > container)
 Sets the container this module is associated with. More...
 
virtual std::string deprecated () const
 This function allows module programmers to mark their modules deprecated in a user-friendly way. More...
 
void initialize ()
 Manages initialization. More...
 
virtual void cleanup ()
 Called whenever the module should shutdown. More...
 
void addConnector (std::shared_ptr< WModuleInputConnector > con)
 Adds the specified connector to the list of inputs. More...
 
void addConnector (std::shared_ptr< WModuleOutputConnector > con)
 Adds the specified connector to the list of outputs. More...
 
void removeConnectors ()
 Removes all connectors properly. More...
 
virtual void activate ()
 Callback for m_active. More...
 
virtual const t_GenericSignalHandlerType getSignalHandler (MODULE_CONNECTOR_SIGNAL signal)
 Gives the signal handler function responsible for a given signal. More...
 
virtual void notifyConnectionEstablished (std::shared_ptr< WModuleConnector > here, std::shared_ptr< WModuleConnector > there)
 Gets called whenever a connector gets connected to the specified input. More...
 
virtual void notifyConnectionClosed (std::shared_ptr< WModuleConnector > here, std::shared_ptr< WModuleConnector > there)
 Gets called whenever a connection between a remote and local connector gets closed. More...
 
virtual void notifyDataChange (std::shared_ptr< WModuleConnector > input, std::shared_ptr< WModuleConnector > output)
 Gets called when the data on one input connector changed. More...
 
void ready ()
 Call this whenever your module is ready and can react on property changes. More...
 
wlog::WStreamedLogger infoLog () const
 Logger instance for comfortable info logging. More...
 
wlog::WStreamedLogger debugLog () const
 Logger instance for comfortable debug logging. More...
 
wlog::WStreamedLogger warnLog () const
 Logger instance for comfortable warning- logs. More...
 
wlog::WStreamedLogger errorLog () const
 Logger instance for comfortable error logging. More...
 
void setLocalPath (boost::filesystem::path path)
 Sets the local module path. More...
 
void setLibPath (boost::filesystem::path path)
 Set the path to the library which contains this module. More...
 
void setPackageName (std::string name)
 Set the package name. More...
 
- Protected Member Functions inherited from WThreadedRunner
virtual void notifyStop ()
 Gets called when the thread should be stopped. More...
 
void yield () const
 Give remaining execution timeslice to another thread. More...
 
void sleep (const int32_t t) const
 Sets thread asleep. More...
 
void msleep (const int32_t t) const
 Sets thread asleep. More...
 
void waitForStop ()
 Let the thread sleep until a stop request was given. More...
 
void handleDeadlyException (const WException &e, std::string sender="WThreadedRunner")
 Handle the specified exception which was not caught in the thread, which basically means the thread has crashed. More...
 

Private Member Functions

float getMaxLineLength (std::shared_ptr< WTriangleMesh > inputMesh)
 Returns the biggest length of a neighbour relationship. More...
 

Private Attributes

std::shared_ptr< WModuleInputData< WTriangleMesh > > m_input
 Input connector for scalar data. More...
 
std::shared_ptr< WModuleOutputData< WTriangleMesh > > m_output
 Output connector provided by this module. More...
 
std::shared_ptr< WTriangleMeshm_oldInterpolatedMesh
 Holder for the current triangle mesh that grants that there's always a valid data output at the end. More...
 
osg::ref_ptr< WGEManagedGroupNodem_rootNode
 The OSG root node for this module. More...
 
std::shared_ptr< WConditionm_propCondition
 Needed for recreating the geometry, incase when resolution changes. More...
 
WPropDouble m_butterflySettingW
 The general Butterfly Subdivision setting w that affects the subdivision. More...
 
WPropInt m_iterations
 The iteration count of the Butterfly subdivision to attempt. More...
 
WPropDouble m_maxTriangles10n
 Maximal allowed triangle count after Butterfly subdivision. More...
 
WPropInt m_maxTriangles
 Maximal allowed triangle count after Butterfly subdivision. More...
 
WPropInt m_cpuThreads
 CPU thread count setting for multithreading support. More...
 
WPropDouble m_minTransformationAngle
 Angle setting which both angles at the subdivided line ends should be at least as big as this value. More...
 
WPropDouble m_maxTransformationAngle
 Angle setting which both angles at the subdivided line ends should be not bigger than this value. More...
 
WPropDouble m_minQuotient
 Maximum factor which the following lines should differ to show a valid subdivision. More...
 
WPropDouble m_minAmountOfMax
 Factor for multiplying the maximal distance to a neighbour within the Butterfly stencil. More...
 
WPropDouble m_minAmountOfAverage
 Factor for multiplying the average distance to a neighbour within the Butterfly stencil. More...
 
WPropDouble m_minSubdividedLineLength
 The minimal subdividable line length. More...
 
WPropDouble m_minSubdividedLineLengthMultiplierPerIteration
 The factor where the minimal subdivided line length is multiplied by in each Subdivision iteration step. More...
 
WPropDouble m_minNeighbourTriangleAngle
 The Minimal allowed angle between two Subdivided line ends. More...
 
WPropDouble m_maxNeighbourTriangleAngle
 A subdivision is marked as invalid if the angle between any neighbor triangle line is above that angle. More...
 
WPropDouble m_maxNeighbourTriangleAngleLengthRatio
 This settings extends If the line length is smaller than the subdividable line by this ratio, then it won't be marked as invalid. More...
 
WPropDouble m_maxAmountOfMaxForVertexJoin
 The Factor for comparison to the maximal length of a triangle. More...
 
WPropDouble m_maxNeighbourTriangleAngleTriangleFlip
 The Minimal allowed angle which fits in both vertices at a subdividable line end. More...
 
std::shared_ptr< WTriangleMeshm_mesh
 Triangle mesh which will be assigned to the Butterfly subdivision instance. More...
 
butterfly::WButterflyFactorym_butterfly
 Butterfly subdivision instance. More...
 

Additional Inherited Members

- Public Types inherited from WModule
typedef std::vector< std::shared_ptr< WModuleInputConnector > > InputConnectorList
 The type for the list of input connectors. More...
 
typedef std::vector< std::shared_ptr< WModuleOutputConnector > > OutputConnectorList
 The type for the list of output connectors. More...
 
typedef std::shared_ptr< WModuleSPtr
 Shared pointer to a WModule. More...
 
typedef std::shared_ptr< const WModuleConstSPtr
 Shared pointer to a const WModule. More...
 
- Public Types inherited from WThreadedRunner
typedef std::shared_ptr< WThreadedRunnerSPtr
 Abbreviation to a shared_ptr to this type. More...
 
typedef std::shared_ptr< const WThreadedRunnerConstSPtr
 Abbreviation to a const shared_ptr to this type. More...
 
typedef boost::function< void(void) > THREADFUNCTION
 Type used for simple thread functions. More...
 
- Static Public Member Functions inherited from WModule
static SPtr findByUUID (std::string uuid)
 Find a module instance by UUID. More...
 
- Static Public Member Functions inherited from WThreadedRunner
static void setThisThreadName (std::string name)
 Static function to set the name of the calling thread. More...
 
- Protected Types inherited from WModule
typedef std::vector< WRequirement * > Requirements
 The type of the requirement list. More...
 
- Protected Attributes inherited from WModule
std::shared_ptr< WPropertiesm_properties
 The property object for the module. More...
 
std::shared_ptr< WPropertiesm_infoProperties
 The property object for the module containing only module whose purpose is "PV_PURPOSE_INFORMNATION". More...
 
std::shared_ptr< WProgressCombinerm_progress
 Progress indicator used as parent for all progress' of this module. More...
 
WBoolFlag m_initialized
 True if everything is initialized and ready to be used. More...
 
WBoolFlag m_isAssociated
 True if container got associated with this flag. More...
 
WBoolFlag m_isUsable
 True if associated && initialized. More...
 
WBoolFlag m_isReady
 True if ready() was called. More...
 
WBoolFlag m_isReadyOrCrashed
 It is true whenever m_isReady or WThreadedRunner::m_isCrashed is true. More...
 
WBoolFlag m_isRunning
 True if the module currently is running. More...
 
WBoolFlag m_isLoadFinished
 Flag to denote whether the module container and the project loader have finished their work. More...
 
bool m_restoreMode
 Flag denoting the current restore mode. More...
 
std::shared_ptr< WProgressm_readyProgress
 Progress indicator for the "ready" state. More...
 
WConditionSet m_moduleState
 The internal state of the module. More...
 
std::shared_ptr< WModuleContainerm_container
 The container this module belongs to. More...
 
InputConnectorList m_inputConnectors
 Set of input connectors associated with this module. More...
 
OutputConnectorList m_outputConnectors
 Set of output connectors associated with this module. More...
 
WPropBool m_active
 True whenever the module should be active. More...
 
WPropString m_runtimeName
 This property holds a user specified name for the current module instance. More...
 
boost::filesystem::path m_localPath
 The path where the module binary resides in. More...
 
boost::filesystem::path m_libPath
 The absolute path to the library containing this module. More...
 
std::string m_packageName
 The name of the lib/the package containing this module. More...
 
Requirements m_requirements
 The list of requirements. More...
 
- Protected Attributes inherited from WThreadedRunner
boost::thread m_thread
 Thread instance. More...
 
WBoolFlag m_shutdownFlag
 Condition getting fired whenever the thread should quit. More...
 
WBoolFlag m_isCrashed
 True whenever an exception is thrown during threadMain. More...
 
std::string m_crashMessage
 The crash message. More...
 

Detailed Description

OpenWalnut module that subdivides a triangle mesh in more points resulting a smoother surface.

Plugin Version: 0.9.0, Release Candidate 1 Date: 2013/08/23 23:32

Definition at line 57 of file WMButterfly.h.

Constructor & Destructor Documentation

◆ WMButterfly()

WMButterfly::WMButterfly ( )

Creates the module for subdividing a triangle mesh using Butterfly subdivision.

Definition at line 56 of file WMButterfly.cpp.

Referenced by factory().

+ Here is the caller graph for this function:

◆ ~WMButterfly()

WMButterfly::~WMButterfly ( )
virtual

Destroys this module.

Definition at line 63 of file WMButterfly.cpp.

Member Function Documentation

◆ connectors()

void WMButterfly::connectors ( )
protectedvirtual

Initialize the connectors this module is using.

Plugin connectors.

Author
schwarzkopf

Reimplemented from WModule.

Definition at line 89 of file WMButterfly.cpp.

References WModule::addConnector(), WModule::connectors(), WModuleInputData< T >::createAndAdd(), m_input, and m_output.

+ Here is the call graph for this function:

◆ factory()

std::shared_ptr< WModule > WMButterfly::factory ( ) const
virtual

Due to the prototype design pattern used to build modules, this method returns a new instance of this method.

NOTE: it should never be initialized or modified in some other way. A simple new instance is required.

Returns
the prototype used to create every module in OpenWalnut.

Implements WModule.

Definition at line 67 of file WMButterfly.cpp.

References WMButterfly().

+ Here is the call graph for this function:

◆ getDescription()

const std::string WMButterfly::getDescription ( ) const
virtual

Gives back a description of this module.

Returns
description to module.

Implements WPrototyped.

Definition at line 82 of file WMButterfly.cpp.

◆ getMaxLineLength()

float WMButterfly::getMaxLineLength ( std::shared_ptr< WTriangleMesh inputMesh)
private

Returns the biggest length of a neighbour relationship.

Parameters
inputMeshTriangle mesh to analyze.
Returns
The biggest distance of all vertex neighbour relationships.

Definition at line 313 of file WMButterfly.cpp.

Referenced by moduleMain().

+ Here is the caller graph for this function:

◆ getName()

const std::string WMButterfly::getName ( ) const
virtual

Gives back the name of this module.

Returns
the module's name.

Implements WPrototyped.

Definition at line 77 of file WMButterfly.cpp.

◆ getXPMIcon()

const char ** WMButterfly::getXPMIcon ( ) const
virtual

Get the icon for this module in XPM format.

Returns
The icon.

Reimplemented from WModule.

Definition at line 72 of file WMButterfly.cpp.

◆ moduleMain()

void WMButterfly::moduleMain ( )
protectedvirtual

Entry point after loading the module.

Main method which directs the input WTriangleMesh to the Butterfly Subdivision filter and puts out the result.

Runs in separate thread.

Author
schwarzkopf

Implements WModule.

Definition at line 238 of file WMButterfly.cpp.

References WConditionSet::add(), WKernel::getGraphicsEngine(), getMaxLineLength(), WKernel::getRunningKernel(), butterfly::WButterflyFactory::getSubdividedMesh(), butterfly::WButterflyFactory::getValidator(), WModule::m_active, m_butterfly, m_butterflySettingW, m_cpuThreads, m_input, m_iterations, m_maxAmountOfMaxForVertexJoin, m_maxNeighbourTriangleAngle, m_maxNeighbourTriangleAngleLengthRatio, m_maxNeighbourTriangleAngleTriangleFlip, m_maxTransformationAngle, m_maxTriangles, m_maxTriangles10n, m_mesh, m_minAmountOfAverage, m_minAmountOfMax, m_minNeighbourTriangleAngle, m_minQuotient, m_minSubdividedLineLength, m_minSubdividedLineLengthMultiplierPerIteration, m_minTransformationAngle, WModule::m_moduleState, m_oldInterpolatedMesh, m_output, m_propCondition, m_rootNode, WThreadedRunner::m_shutdownFlag, WModule::ready(), butterfly::WButterflyFactory::setButterflySettingW(), butterfly::WButterflyFactory::setCpuThreadCount(), butterfly::WButterflyFactory::setIterationsSettings(), butterfly::WSubdivisionValidator::setMaxAmountOfMaxForVertexJoin(), butterfly::WSubdivisionValidator::setMaxNeighbourTriangleAngle(), butterfly::WSubdivisionValidator::setMaxNeighbourTriangleAngleTriangleFlip(), butterfly::WSubdivisionValidator::setMaxTransformationAngle(), butterfly::WSubdivisionValidator::setMinAmountOfAverage(), butterfly::WSubdivisionValidator::setMinAmountOfMax(), butterfly::WSubdivisionValidator::setMinLenghtsQuotient(), butterfly::WSubdivisionValidator::setMinMeighbourTriangleAngle(), butterfly::WSubdivisionValidator::setMinSubdividedLineLength(), butterfly::WSubdivisionValidator::setMinSubdividedLineLengthMultiplierPerIteration(), butterfly::WSubdivisionValidator::setMinTransformationAngle(), WConditionSet::setResetable(), and WConditionSet::wait().

+ Here is the call graph for this function:

◆ properties()

void WMButterfly::properties ( )
protectedvirtual

◆ requirements()

void WMButterfly::requirements ( )
protectedvirtual

Initialize requirements for this module.

Reimplemented from WModule.

Definition at line 231 of file WMButterfly.cpp.

Member Data Documentation

◆ m_butterfly

butterfly::WButterflyFactory* WMButterfly::m_butterfly
private

Butterfly subdivision instance.

Definition at line 264 of file WMButterfly.h.

Referenced by moduleMain().

◆ m_butterflySettingW

WPropDouble WMButterfly::m_butterflySettingW
private

The general Butterfly Subdivision setting w that affects the subdivision.

See the algorithm documentation for the exact meaning. It's usually chosen substantially small. The original authors used 0.0.

Definition at line 152 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_cpuThreads

WPropInt WMButterfly::m_cpuThreads
private

CPU thread count setting for multithreading support.

Definition at line 174 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_input

std::shared_ptr< WModuleInputData< WTriangleMesh > > WMButterfly::m_input
private

Input connector for scalar data.

Definition at line 127 of file WMButterfly.h.

Referenced by connectors(), and moduleMain().

◆ m_iterations

WPropInt WMButterfly::m_iterations
private

The iteration count of the Butterfly subdivision to attempt.

Definition at line 157 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxAmountOfMaxForVertexJoin

WPropDouble WMButterfly::m_maxAmountOfMaxForVertexJoin
private

The Factor for comparison to the maximal length of a triangle.

Lines smaller than this force a joint of the corresponding two vertices. The triangle falls finally away.

Definition at line 246 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxNeighbourTriangleAngle

WPropDouble WMButterfly::m_maxNeighbourTriangleAngle
private

A subdivision is marked as invalid if the angle between any neighbor triangle line is above that angle.

Definition at line 233 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxNeighbourTriangleAngleLengthRatio

WPropDouble WMButterfly::m_maxNeighbourTriangleAngleLengthRatio
private

This settings extends If the line length is smaller than the subdividable line by this ratio, then it won't be marked as invalid.

Definition at line 240 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxNeighbourTriangleAngleTriangleFlip

WPropDouble WMButterfly::m_maxNeighbourTriangleAngleTriangleFlip
private

The Minimal allowed angle which fits in both vertices at a subdividable line end.

An existing triangle where both angles fit in forces it to rotate it with the other triangle connected with that vertices araund the four vertices of that two triangles. There is no application if the final state would be also invalid.

Definition at line 254 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxTransformationAngle

WPropDouble WMButterfly::m_maxTransformationAngle
private

Angle setting which both angles at the subdivided line ends should be not bigger than this value.

The regarded triangle consists of the two subdivided line end points and the new vertex.

Definition at line 188 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxTriangles

WPropInt WMButterfly::m_maxTriangles
private

Maximal allowed triangle count after Butterfly subdivision.

Subdivision stops at last subdivision step exceeding that triangle count.

Definition at line 169 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_maxTriangles10n

WPropDouble WMButterfly::m_maxTriangles10n
private

Maximal allowed triangle count after Butterfly subdivision.

Subdivision stops at last subdivision step exceeding that triangle count. Due to usability the scale is exponential by 10^n.

Definition at line 163 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_mesh

std::shared_ptr< WTriangleMesh > WMButterfly::m_mesh
private

Triangle mesh which will be assigned to the Butterfly subdivision instance.

Definition at line 259 of file WMButterfly.h.

Referenced by moduleMain().

◆ m_minAmountOfAverage

WPropDouble WMButterfly::m_minAmountOfAverage
private

Factor for multiplying the average distance to a neighbour within the Butterfly stencil.

Lines are not subdivided being smaller than the average distance multiplied by it.

Definition at line 207 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_minAmountOfMax

WPropDouble WMButterfly::m_minAmountOfMax
private

Factor for multiplying the maximal distance to a neighbour within the Butterfly stencil.

Lines are not subdivided being smaller than this distance multiplied by it.

Definition at line 201 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_minNeighbourTriangleAngle

WPropDouble WMButterfly::m_minNeighbourTriangleAngle
private

The Minimal allowed angle between two Subdivided line ends.

If the two points have a triangle where the angle is at least in one triangle cutting that vertices amaller than this so the coordinates will be interpolated between the mean of the two neighbors and its Butterfly subdivision used one, weighted using the minimal transformation angle.

Definition at line 227 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_minQuotient

WPropDouble WMButterfly::m_minQuotient
private

Maximum factor which the following lines should differ to show a valid subdivision.

Both lines are measured from the new subdivided point and end at the ends of the subdivided line end.

Definition at line 195 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_minSubdividedLineLength

WPropDouble WMButterfly::m_minSubdividedLineLength
private

The minimal subdividable line length.

Lines of smaller distance than this are not subdivided.

Definition at line 213 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_minSubdividedLineLengthMultiplierPerIteration

WPropDouble WMButterfly::m_minSubdividedLineLengthMultiplierPerIteration
private

The factor where the minimal subdivided line length is multiplied by in each Subdivision iteration step.

Definition at line 219 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_minTransformationAngle

WPropDouble WMButterfly::m_minTransformationAngle
private

Angle setting which both angles at the subdivided line ends should be at least as big as this value.

The regarded triangle consists of the two subdivided line end points and the new vertex.

Definition at line 181 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_oldInterpolatedMesh

std::shared_ptr< WTriangleMesh > WMButterfly::m_oldInterpolatedMesh
private

Holder for the current triangle mesh that grants that there's always a valid data output at the end.

The old data is deleted after the new one is applied. Deleting a triangle mesh that is attached at the output connector makes some plugins crash.

Definition at line 135 of file WMButterfly.h.

Referenced by moduleMain().

◆ m_output

std::shared_ptr< WModuleOutputData< WTriangleMesh > > WMButterfly::m_output
private

Output connector provided by this module.

Definition at line 128 of file WMButterfly.h.

Referenced by connectors(), and moduleMain().

◆ m_propCondition

std::shared_ptr< WCondition > WMButterfly::m_propCondition
private

Needed for recreating the geometry, incase when resolution changes.

Definition at line 145 of file WMButterfly.h.

Referenced by moduleMain(), and properties().

◆ m_rootNode

osg::ref_ptr< WGEManagedGroupNode > WMButterfly::m_rootNode
private

The OSG root node for this module.

All other geodes or OSG nodes will be attached on this single node.

Definition at line 140 of file WMButterfly.h.

Referenced by moduleMain().


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