List of my modules...

Module: Create Trackers

Description:

Method for visualising a flow field. The module generates a point set time series representing trackers in a given flow field. The output is a HxDynamicSeriesCtrl, in which a time port controls what HxCluster to load. The HxCluster containing the trackers, can be viewed with any point cluster viewing module.

Illustration on a flow between two artificial pores. The leftmost shows the two necessary inputs, superimposed : a vector field, drawn with Draw_Vectors, and a mask, drawn with Draw_Cubes, which has three labels : background (i.e. no flow), object (i.e. in which the flow occurs) in grey, and tracker initial positions (i.e. in the object, and where the trackers are initially placed) in red. Then, from left to right, and superimposed with the input object, the point set is shown at different time steps, with a HxClusterView module. Each trackers is colored with one of its associated value, in this illustration it is the age of the trackers (i.e. the redder the tracker, the older it is), therefore when a tracker exits the bouding box, it disappears, and a new trackers takes its place, and is generated back at the initial position, thus its age is reset.

Connections:

Vectors

[required]
The input flow field of type HxUniformVectorField3.

Mask

[required]
The input mask of type HxUniformScalarField3. This image (same dimensions as flow field) defines the fluid phase, and the source (where the trackers first appear). A tracker will disappear (a new one will be created in its place at the sink) either if it enters the non-fluid phase, or when it reaches the field boundary.

Ports:

Trackers


Number of trackers in the time series.

Time


Total simulation time, and time delta between time steps. You should set this latter value between 0 and 1, otherwise I think the trackers might just jump out of the object.

Skip


If you don't want to save every time step, you can choose to skip a given number of steps each time you save one. Sometimes the trackers seem to go reeeally slow, so this is useful. You shouldn't increase the time step because of the previous argument.

Rate


Initial tracker creation rate, per time step. A value of 1/x means one tracker will be created every x time steps (until the specified number of trackers has been reached).

M_Threshold


Threshold to use for defining the fluid phase.

M_Comparison


Comparison function to define the fluid phase.

I_Threshold


Threshold to use for defining the tracker initial positions in the object.

I_Comparison


Comparison function to define the tracker initial positions in the object.

Output


RAM output has the advantages of being quicker, and shows up directly in the object pool. It has the disadvantages of not being savable and taking a shitload of space in memory if you have a lot of trackers for a lot of time steps. Diskoutput to disk inverts the previous advantages and disadvantages. It will create one file per time step, and a hx file that loads the time series.

Options


If RAM output was selected, you can overwrite the previously created result, or not (apparently, it's not possible to downstream connect a dynamic series to a compute module, so the traditional way of disconnecting the downstream to avoid overwriting doesn't work).

Directory


If Disk output was selected, you can choose the output directory here.

Prefix


If Disk output was selected, the filenames will start with the prefix you choose here (followed by an underscore and 4 digits, and the AmiraMesh extension, because it's saved in the Avizo format).

Do


Push the button to draw the vectors.

Commands:

Additional options can be accessed when typing in the console Create_Trackers COMMAND_NAME. Typing the command again usually reverts back to original settings.

verbose

Displays timing information after the computation. Retype to hide info.

create

Runs the computation. Returns the name of the output, so it can be used in a script, such as set RESULT [Create_Trackers create].

setRandSeed

The trackers are randomly placed somewhere in the pixels marked as initial position in the mask. The pseudo-random generator uses a default seed for the randomness (two consecutive computes with the same parameters and seed will generate exactly the same positions), but you can set another if you like by typing Create_Trackers setRandSeed X, with X an integer (no integer given will set the seed back to its default value).