FAQ: Visualization


2.1 When I specify the coordinates of the nodes in my Field, do I need to specify the coordinates in x first, then y, then z?

The order in which you specify your coordinates doesn't matter so long as it is in the same order in which you specify the Field's dimensions and node data. If in your dims array you specified the dimensions in z, y, x order, you have to provide the coordinates of the nodes in the same order and likewise, the values in the node_data.values array.

2.2 Why are multiple objects in a view transformed when I select and transform just a single object?

Suppose you have two objects in a viewer. You select one object and rotate it. The other object rotates as well, even though that object is not selected (and neither is Top). Why is that?

The most likely reason for such behavior is that the transform mode on the selected object is set to "parent". Parent transform mode means that transformations on the object are applied to the object's parent, in this case, the Top object. Transformations on the parent object are applied to all of its child objects. That is why the other object in the view is also transformed.  You change the behavior, change the Transform Mode in the Object Editor.

2.3 Why does my 2D slice seem to move in the viewer as I change the slice plane?

This is a reflection of the way in which the Orthoslice module works.

Suppose you have a network that does an Orthoslice of a 3D volume such as Read_Field(hydrogen.fld)->orthoslice->Uviewer2D.

In the case of slicing a volume, orthoslice takes 3D input and produces 2D output. To position the 2D output correctly for 3D display, both a rotation matrix and a translate factor are set up. Though this configuration causes the slice to be rendered correctly in a 3D view, it will cause the shifting around that you see in a 2D view. To eliminate the problem, connect Main.Filters.reset_xform to the output of orthoslice. This will set the slice's transform to the identity. The display in the 2D view will now be correct as you change axes and planes.

2.4 Is there a module to convert float data values to byte type so that I can volume render my data?

Remember that AVS/Express will only volume render volumes (3D, 3-space Fields) that are uniform and contain scalar, byte data. If you have a 3D, 3-space Field that contains scalar float values, can you convert these float values to byte so that you can volume render the data?

You can use the data_math module which allows you to convert the data type, but it does not scale the data. So unless you have float values between 0 and 255, they won't be valid byte values.

You could use data_math with the equation set to this value:

(#1 - input1.node_data[0].min) * 255.0 / (input1.node_data[0].max - input1.node_data[0]Min)

[#<n> is used by the UI of data_math to indicate the component of node_data used.]

This converts to a byte and scales the data to fit between 0 and 255.

2.5 When specifying a cell set, which cell set values do I need to set?

A. The only subobjects of the cell_set group that you need to specify are: - the cell set type (tri, quad, polytri, line and so on) - ncells or npolys - node/poly_connect_list

AVS/Express sets all the other values for you, based on the information you provided.

2.6 What is the difference between Read_Geom and Read_Geoms?

The Read_Geom module opens an AVS geometry format file and produces a single Field as output. Read_Geoms also reads a geometry file but it produces an array of Fields as output. Each field element corresponds to one input geometry object from the AVS geometry file. Each Field contains cell sets to represent the geometry data from the input object.

Note that input types GEOM_POLYHEDRON and GEOM_MESH are converted to GEOM_POLYTRI with both surface (polytriangle strip) and wireframe (polyline or disjoint line) representations before processing.

You would use Read_Geoms rather than Read_Geom if you wanted control of a Field at a cell set level. This can be useful if you want to specify a rendering property which is valid on only a certain type of cell.

2.7 Is there a module that takes unstructured data, and outputs structured data?

Yes, the scat_to_unif module. It is in the "Mappers" library on AVS/Express's Main library page.

2.8 Are uniform Fields less computationally intensive than unstructured Fields?

It depends on how you are using the Field..

If you're rendering the data, unstructured Fields are less computationally intensive than uniform Fields because the coordinates do not have to be computed.

If you're visualizing the data (slicing or isosurfacing it, for example), uniform Fields are faster because you don't have to do things like compute nearest neighbor (because it's the next element in the array).

2.9 How can I modify my 3D view (slice, for example)?

Use the scale module.