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.

Usage

Connect a WEM and an XMarkerList and press Apply.

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.

Windows

Default Panel

../../../Projects/WEMExpand/WEMExpandToMarkers/Modules/mhelp/Images/Screenshots/WEMExpandToMarkers._default.png

Input Fields

inWEM

name: inWEM, type: MLBase

Input WEM.

inMarkerList

name: inMarkerList, type: MLBase

Marker list with markers in world coordinates.

Output Fields

outWEM

name: outWEM, type: MLBase

Expanded output WEM.

Parameter Fields

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

Apply

name: apply, type: Trigger

Update the output.

see also WEMGenerator.apply

Overwrite Label Description

name: overwriteLabelDescription, type: Bool, default: FALSE

if true, label and description of the WEM are updated.

see also WEMGenerator.overwriteLabelDescription

Label

name: label, type: String

New label.

see also WEMGenerator.label

Description

name: description, type: String

New description.

see also WEMGenerator.description

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 Minimum Number of Influencing Neighbors) directly moved neighbors have been found.

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.

Indirect Movement Reduction Influence [mm]

name: inIndirectReductionPercentageInfluenceMM, type: Double, default: 2, minimum: 0.25

Determines how far indirect movement in DistanceWeightedAlongVector mode spreads.

Allow to move boundary nodes

name: inShouldAllowBoundaryNodeMovement, type: Bool, default: TRUE

If true, nodes that lie on a boundary are allowed to move. If false, input markers only pair with non-boundary nodes.

Hidden Fields

isProcessing

name: isProcessing, type: Bool, persistent: no

see WEMGenerator.isProcessing

id

name: id, type: Integer, default: 0

see WEMGenerator.id

clear

name: clear, type: Trigger

see WEMGenerator.clear

shouldComputeNormals

name: shouldComputeNormals, type: Bool, default: TRUE

see WEMGenerator.shouldComputeNormals

workDirectlyOnInputWEMs

name: workDirectlyOnInputWEMs, type: Bool, default: FALSE

see WEMProcessor.workDirectlyOnInputWEMs

listenToFinishNotifications

name: listenToFinishNotifications, type: Bool, default: TRUE

see WEMProcessor.listenToFinishNotifications

listenToRepaintNotifications

name: listenToRepaintNotifications, type: Bool, default: TRUE

see WEMProcessor.listenToRepaintNotifications

listenToSelectionChangedNotifications

name: listenToSelectionChangedNotifications, type: Bool, default: TRUE

see WEMProcessor.listenToSelectionChangedNotifications

progress

name: progress, type: Float, persistent: no

see WEMProcessor.progress

triangulationMode

name: triangulationMode, type: Enum, default: Strip

see WEMProcessor.triangulationMode