The UCD PLANES module supports the interactive sub-sampling of node data
held within a 3D UCD structure. The region sampled is selected
interactively in the region of a transparent 'probe' object. Several
different types of probes are supported, all based upon a collection of
planes. For each probe type, the sampled region can be output either as
various forms of geometry, as a UCD structure or as both. When a geometry
is output, 2D contours of a scalar data component can be superimposed on
the sample object.
The selection of probe type is made from the 'Probe Type' choice widget on
the module's control panel. Possible probes include a single plane
(SIMPLE), two and three crossed orthogonal planes (SHEAF and CROSSED) and
multiple parallel planes (MULTIPLE). These probe types produce a 'sample'
that is the same shape as the probe object but is coloured according to a
scalar component of the structure's nodal data.
In addition, a further probe type (PROJECTED) is supported which uses a
probe consisting of a single plane just as with the SIMPLE plane probe.
However, the sample produced is not a simple coloured display of the slice
plane. Instead of this, another component of nodal data is used to add
height to the sample. This forms a 3D graph of the data on the sampled
plane. Axes, tick marks and labels can be automatically generated for the
graph. The number of tick marks is controllable. It is also possible to
add a flat wire-frame rendering of the sliced UCD mesh to the base of the
graph. This makes the perception of surface height clearer. An optional
input port is provided, that accepts a user defined 'scale_info' data
type. This is to allow the correct labeling of data that has been mapped
onto a logarithmic scale.
For all probe types the orientation and position of the probe can be
controlled in two ways. The first method is to use the dial widgets on
the module's control panel. The XRotation, YRotation and ZRotation
parameters control the orientation of the plane as three rotations about
the major axes. The rotations are applied in the order ZYX. The Scale
parameter specifies a uniform scaling factor. The Distance parameter is a
positional offset. Due to the varying make up of the different types of
probes, some parameters are of limited use with some probe types. This is
described in more detail below.
The alternative method of controlling the orientation and position of the
probe is by direct manipulation of the probe object within the geometry
viewer. During direct manipulation the dial parameters are calculated
from the new transformation matrix for the probe object. This ensures
that the dial parameters and the probe's orientation are always mutually
consistent.
The correspondence between transformation by the dials and by direct
manipulation is not 1 to 1. This is because, by default, it is possible
to translate objects in the geometry viewer in 3D where as there is only
one dial controlling position of the probe - the Distance dial.
This restriction is fine for those probe types (SIMPLE, MULTIPLE and
PROJECTED) in which all constituent planes are parallel to each other. As
translation parallel to the planes is irrelevant to the definition of the
probe, translation can be restricted to being in the direction of the
planes' normals without any loss of generality. In fact, this is
desirable as it ensures that the normals always pass through the centre of
the UCD structure. With this in mind, translations in the geometry viewer
for these probe types are restricted to the direction of the probe's
normal. This feature can be turned off with a compilation option as it
does not work well on AVS platforms which are not highly interactive -
such as an X terminal.
For the SHEAF and CROSSED probe types translation in 3D becomes
significant. For these probe types 3D positioning is only possible
through direct manipulation of the probe object within the geometry viewer
window or from the geometry viewer's transformation options panel.
The module also supports the generation of line contours across the sample
surface. This can be done with all probe types. In most cases the
contours are superimposed on the sample object. This can lead to them
being obscured. The 'Offset' toggle allows the contour lines to be offset
slightly to the front and behind the sample plane so that they can be seen
clearly. If the PROJECTED probe type is selected, contours are
superimposed on the projected surface unless the 'Base' toggle is on. In
this case contours are added to the base object instead.
The 'Make UCD' toggle causes a UCD_structure to be output that is
representative of the sampled region. The structure is composed of
UCD_TRIANGLE primitives. The nodal data vector has the same components as
the input structure. Data values are constructed using linear
interpolation.
INPUTS
Structure (required)
The input structure is in AVS's unstructured cell data (UCD) format.
Scale Info (struct scale_info, optional)
Scale_info is a user defined data type. It is used to give extra
information about the scale of the floating point numerical data
contained within the UCD structure. Specifically, it is used to
reconstruct the original axes label values for data that has been
mapped onto a logarithmic scale.
The type definition for scale_info is:
typedef struct _scale_info {
int log_scale[20];
float lower_limit[20];
} scale_info;
If log_scale[i] is 1 then the i'th component of nodal data within the
UCD structure has been mapped to a logarithmic scale by a mapping:
x -> log10(x - lower_limit[i] + 1.0),
so the original value can be reconstructed by the equation:-
10^^x + lower_limit[i] - 1.0.
Colour Field (field 1D 3-vector real, optional)
This input is an array of RGB colour values, one for each node of the
UCD structure. Array's of this type are produced by the modules UCD
CONTOUR and UCD LEGEND. It is used to colour the sample geometry.
Contour Range (struct ucd_legend_output, optional)
Connecting this port to the 2nd output of the UCD LEGEND module
allows the range of contour values to be set using the module's
legend widget. If this is done the data component used to generate
contours is also set to that of the UCD LEGEND module.
Upstream Transform (optional, invisible, autoconnect)
When the probe geometry output port is connected to a geometry viewer
module or a render geometry module, an automatic upstream connection
is made to this port. This connection is used to keep the UCD PLANES
module informed of any transformations that have been applied to the
probe object by direct manipulation within the geometry viewer
window.
PARAMETERS
Make Sample (boolean)
By setting this toggle to off the generation of the sample object can
be temporarily disabled. Otherwise, a sample geometry is produced
every time the modules inputs are changed or the probe's
orientation/position is altered. By default, samples are continually
generated while the probe object is being transformed. This can be
disabled with a compilation option so that a sample is only generated
once the transformation is complete and the mouse button is released.
Make UCD (boolean)
If this toggle is set a 2D UCD_structure is output cooresponding to
the sampled region. If neither the 'Make Sample' or 'Make UCD'
toggles are set, generation of the sample is temporarily suspended.
XRotation
A floating point value between -180 and 180 degrees, indicating the
amount of rotation about the x-axis.
YRotation
A floating point value between -180 and 180 degrees, indicating the
amount of rotation about the y-axis.
ZRotation
A floating point value between -180 and 180 degrees, indicating the
amount of rotation about the z-axis.
Note that the rotations are applied in the order ZYX. This is
actually the opposite order to that used in AVS's transformation
options panel. For a SIMPLE single plane probe and other probe types
in which all planes are parallel to z=0, this ordering makes more
sense. This is because, the ZRotation parameter does not now effect
the orientation of the probe. The most obvious advantage of this is
that, with a PROJECTED plane probe, XRotation and YRotation control
the orientation of the single plane probe and ZRotation controls the
orientation of the sample with respect to the axes of the 3D graph.
For probe types that have planes which are not parallel to z=0, ie
SHEAF and CROSSED probe types, all three rotation dials are
significant.
Should the user wish to numerically specify the rotations in the
normal AVS order XYZ, then this is possible from the geometry
viewer's transformation options panel. In this case the dials will
be updated to show an equivalent orientation in the ZYX order.
Alternatively, user could select the desired orientation by direct
manipulation of the probe object in the geometry viewer.
Scale
The scale parameter applies a uniform scaling to the probe type,
mimicking the effect of scaling in the geometry viewer. The only the
MULTIPLE and PROJECTED probe types are effected by scaling. For a
multiple plane probe, the scaling parameter effects the spacing
between the planes. For a projected plane probe the scaling
parameter effects the height / width ratio of the 3D graph.
Distance
The distance parameter is an absolute offset of the probe along the
normal to the plane z=0. If Distance is set to zero, then the probe
will pass through the centre of the UCD structure. By changing the
distance parameter the probe can be made to sweep through the whole
UCD structure.
Probe Type (choice)
This parameter allows the selection the type of probe used to sample
the UCD data. The allowable types are SIMPLE, SHEAF, CROSSED,
MULTIPLE and PROJECTED as already described. By simple modification
of the module code any collection of planes could be used as probe.
ZAxis Data (choice)
This parameter allows the selection of a scalar component of data to
be projected onto the vertical axis of the 3D graph produced by a
projected plane probe. For all other probe types the parameter is
invisible.
Toggle (boolean)
This toggle has two purposes depending on the current type of probe.
For the SIMPLE probe type the toggle is labelled as 'transform'. It
controls whether or not the position and orientation of the sample
geometry is maintained relative to the UCD structure. If this toggle
is on, then transforming the probe plane will also identically
transform the sample plane. Otherwise the plane is always kept
orthogonal to the viewer window (the plane z=0) regardless of the
actual orientation of the probe.
For the PROJECTED probe type the toggle is labelled as 'base'. In
this case it controls whether or not a reference base is added to the
3D graph produced as the sample geometry. The base is actually a
flat wire-frame rendering of the 2D slice through the UCD structure.
If the base toggle is on, contours are added to the base rather than
the projected surface.
For other probe types this toggle is invisible.
Count (integer)
This dial also has two purposes depending on the current probe type.
For the MULTIPLE probe type this dial is labelled and '# Planes'.
As the label suggests, it controls the number of planes in the probe
and hence the sample (from 1 to 10).
For the PROJECTED probe type the dial is labelled as '# Ticks'. In
this case it controls the number of numerical ticks and labels that
appear on the vertical axis of the graph.
For other probe types this toggle is invisible.
Contours (integer)
The number of contours to be generated. The contours are equally
spaced between the Lo_Val and Hi_Val parameters.
Offset (boolean)
When contours are superimposed on a solid sample object they become
obscured. This may be overcome by setting the rendering option for
the sample object to 'lines', by deleteing the sample object or by
using this toggle. If this toggle is set, two sets of contour lines
are generated. One is offset slightly infront of the plane and one
behind.
Lo_Val (float)
The lower bound of the contour values. This value may also be set by
connecting the module to the UCD LEGEND module.
Hi_Val (float)
The upper bound of the contour values. This value may also be set by
connecting the module to the UCD LEGEND module.
Contour Data (choice)
The component of nodal data that is used to generate the contours.
OUTPUTS
Geometry
The geometry object that UCD PLANES outputs from the left output port
represents the sub-sample of the UCD structure.
Geometry
The geometry object that UCD PLANES outputs from the right output
port represents the probe object.
UCD Structure
A UCD_structure cooresponding to the sampled region. The structure
is composed of triangles with coordinates in 3-space. This means
that there may be more than one triangle per cut cell. A single
plane in 2-space can be generated by selecting the SIMPLE probe type
and setting the Transform toggle. When the PROJECTED probe type is
selected the surface is projected according to the ZAxis Data
component. All components of the input structure, including vectors,
are interpolated and included in the output UCD Structure.
- Jonathan Cox.
Address - Department of Computer Science, University of Manchester,
Oxford Road, Manchester. M13 9PL. ENGLAND.
Email - coxjp@cs.man.ac.uk
ACKNOWLEDGEMENTS
Thanks go to the staff of the Computer Graphics Unit of the University of
Manchester Computer Centre, particularly Steve Larkin and Terry Hewitt,
for use of their machines and support with AVS.
The sampling algorithm used within the module was based on the ideas
presented in Sperry, D. and Kennon, S., "Volume Probes: Interactive Data
Exploration on Arbitrary Grids," (Proceedings of the 1990 San Diego
Workshop on Volume Visualization), Computer Graphics, Volume 24, Number 5,
November 1990, pp. 5-12. ACM SIGGRAPH.
Release 4 AVS ucd planes(6)