WEMExpandToMarkers¶
-
MLModule
¶ genre WEMInteraction
author Lennart Tautz
package FMEwork/ReleaseMeVis
dll WEMExpandToMarkers
definition WEMExpand.def inherits from WEMProcessor
keywords enlarge
,shrink
,warp
,surface
,inflate
,deflate
,dilate
,erode
Purpose¶
Expand a WEM guided by a set of markers.
Details¶
Movement of nodes is either direct or indirect. Nodes that are moved directly are guided by the position of an input marker, while indirectly moved nodes are influenced by directly moved nodes.
The algorithm iterates over all input markers, and pairs them with the closest node that has not been moved yet. This introduces a certain bias with respect to the order of the input markers. It also means that spatial resolution of the input marker cloud should be in the same order of magnitude of the mesh resolution, otherwise input markers will pair with nodes that are much farther away than intended.
Input Fields¶
Parameter Fields¶
Field Index¶
Allow to move boundary nodes : Bool |
Indirect Movement Reduction Influence [mm] : Double |
Move only points within influence : Bool |
Apply : Trigger |
Indirect Movement Reduction Percentage : Double |
Move points indirectly : Bool |
Auto apply : Bool |
isProcessing : Bool |
Overwrite Label Description : Bool |
clear : Trigger |
Label : String |
progress : Float |
Description : String |
listenToFinishNotifications : Bool |
shouldComputeNormals : Bool |
Direct Movement Mode : Enum |
listenToRepaintNotifications : Bool |
triangulationMode : Enum |
Elapsed Time [s] : Float |
listenToSelectionChangedNotifications : Bool |
Update Mode : Enum |
id : Integer |
Maximum Influence Range of Neighbors : Integer |
workDirectlyOnInputWEMs : Bool |
Indirect Movement Mode : Enum |
Minimum Number of Influencing Neighbors : Integer |
Visible Fields¶
Elapsed Time [s]¶
-
name:
elapsedTime
, type:
Float
, persistent:
no
¶ Duration of calculation.
see also WEMGenerator.elapsedTime
Auto apply¶
-
name:
autoApply
, type:
Bool
, default:
FALSE
¶ If true, the output is updated when parameters or the
inMarkerList
change.
see also WEMGenerator.autoApply
Update Mode¶
-
name:
updateMode
, type:
Enum
, default:
AutoUpdate
¶ Select update behavior
see also WEMGenerator.updateMode
Overwrite Label Description¶
-
name:
overwriteLabelDescription
, type:
Bool
, default:
FALSE
¶ if true, label and description of the WEM are updated.
Move points indirectly¶
-
name:
inMovePointsIndirectly
, type:
Bool
, default:
FALSE
¶ If false, only nodes directly affected by a marker are moved. This typically results in a “spiky” output WEM.
If true, movement for all nodes that have not been moved directly is interpolated.
Minimum Number of Influencing Neighbors¶
-
name:
inMinimumNumberOfInfluencingNeighbors
, type:
Integer
, default:
3
, minimum:
1
¶ Minimum number of nodes to influence a previously unmoved node.
This field only has an effect in combination with the WeightedInfluencersAlongNormal mode.
Move only points within influence¶
-
name:
inRestrictInfluenceWhenMovingIndirectly
, type:
Bool
, default:
FALSE
¶ If true, indirect movement is only applied to such nodes that have a sufficient number of neighbors within a given range. Nodes outside of this influence range are not moved at all.
This field only has an effect in combination with the WeightedInfluencersAlongNormal mode.
Maximum Influence Range of Neighbors¶
-
name:
inMaximumInfluenceRangeForIndirectMovement
, type:
Integer
, default:
5
, minimum:
0
¶ Maximum range of influence (in number of edges travelled) a node can have on indirectly moved nodes.
This field only has an effect in combination with the WeightedInfluencersAlongNormal mode.
Direct Movement Mode¶
-
name:
inDirectMovementMode
, type:
Enum
, default:
NodeNormal
¶ Determines how direct movement is calculated
Values:
Title | Name | Description |
---|---|---|
Node Normal | NodeNormal | For each input marker, the closest node is located. The new node position is the intersection of the node normal and the plane defined by the input marker and the node normal. Nodes move along their normals only, and movement influence is propagated as a factor of such movement along the normal. |
Euclidean | Euclidean | For each input marker, the closest node is located. The new node position is the marker position. Nodes can move into arbitrary directions, and movement influence is propagated as the movement direction between a marker and the associated node. |
Indirect Movement Mode¶
-
name:
inIndirectMovementMode
, type:
Enum
, default:
WeightedInfluencersAlongNormal
¶ Determines how indirect movement is calculated
Values:
Title | Name | Description |
---|---|---|
Weighted Influencers Along Normal | WeightedInfluencersAlongNormal | The movement factors of all directly moved nodes affecting an unmoved node are combined in a distance-weighted average (distances are normalized). Indirectly moved nodes move along the mean factor of influencing nodes along their own normal. The neighborhood of a node is searched until at least N (given by |
Distance Weighted Along Vector | DistanceWeightedAlongVector | Directly moved nodes influence neighboring nodes by their own movement, which is reduced with every neighbor step. Indirectly moved nodes move along the direction of the closest directly moved node, reduced by the geodesic distance. |
Indirect Movement Reduction Percentage¶
-
name:
inIndirectReductionPercentage
, type:
Double
, default:
25
, minimum:
0
, maximum:
100
¶ Reduce movement in DistanceWeightedAlongVector mode by this percentage.