Building the soaring pipes of joy visualization in Eonfusion
The image shows along-track water column backscatter density measurements made via active acoustic surveying. The backscatter density values correspond to measurements of backscatter density between the moving ship and sea floor. The measured values are integrated over the water column, yielding a single value per elementary distance sampling unit, or EDSU. These values are represented by the red columns in the screenshot shown below.

Hence the data are essentially only two-dimensional in spatial terms, each point consisting of two positional values in (X,Y) space and otherwise located ambiguously in the vertical dimension. The obvious default location is at Z=0, effectively the water surface.
However for a more involving and intuitive presentation, the data are converted into the columns that you can see in red above. This representation provides the viewer with a much better visual picture of the distribution of backscatter density.
To achieve this visualization in Eonfusion, multiple steps are required. The following assumes that each data point consists of X, Y, Z, Time and "Backscatter" attribute values. Z is equal to zero. Then:
1. Feed the dataset into an Expression Evaluator. Create a new attribute called "PointIndex" and set PointIndex equal to the internal CurrentIndex attribute.
2. Split the dataset into two parts, by creating two Expression Evaluator objects and joining two pipes from the dataset to the input sockets of each of the Expression Evaluator objects.
3. In the first Expression Evaluator, create new attributes "ZHeight" and "LineIndex" and use the expression to:
- Set ZHeight equal to 0.0.
- Set LineIndex to 0.0.
4. In the second Expression Evaluator, create new attributes "ZHeight" and "LineIndex" and use the expression to:
- Set ZHeight equal to the value of the "Backscatter" attribute.
- Set LineIndex to 1.0.
5. Merge the dataset back into one using the "Merge Vector Sets" operator.
6. Aggregate features, based on the PointIndex attribute. If the original dataset contained N points, the merge operation would have yielded 2 * N. This aggregation yields N pairs of points, where each member of the pair has different values for ZHeight and LineIndex.
7. Create lines, using the aggregated 0D Points as the "Grouping vector set" and linearizing by the LineIndex attribute. This turns each of the N pairs of points into a line feature. Each line feature has two vertices, one with ZHeight equal to 0.0 and one with ZHeight equal to the backscatter density.
Once the dataset has been piped into a scene view, set up a visualizer on the 1D lines and set its Z-Axis mapping to use the ZHeight attribute. The color and thickness of the lines can be set according to the Backscatter attribute, to further reinforce the representation.
Depending on the scale of the backscatter density data, it may be necessary to rescale it to make a sensible visualization. This can easily be achieved by scaling the ZHeight value that is assigned in step 4 above.
A picture of the dataflow used to generate the soaring pipes of joy is shown below. If you have any questions about this process please post them to the Eonfusion forum at: http://eonfusion2.myriax.com/forum

Acknowledgement
Myriax thanks Chris Wilson and Paul Walline (NOAA-NMFS Alaska Fisheries Science Center) for providing these example data.