Difference between revisions of "ViSUS Viewer"

From
Jump to: navigation, search
(Collection of IDX datasets)
 
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
== Basic Usage ==
 +
 +
The default layout of the viewer looks like the following picture:
 +
[[File:viewer_window.png|500px|center]]
 +
 +
In the window you have:
 +
* a toolbar that contains the most basic options
 +
* a left sidebar that shows the tree of datasets and visualization/computing nodes used in your workflow. Each element in this sidebar is called '''node'''
 +
* the canvas, where you can navigate and interact with the data
  
== Basic Usage ==
+
More windows can pop up to customize each node.
  
 
=== Open/Add a dataset ===
 
=== Open/Add a dataset ===
Line 45: Line 54:
 
The main types of ''Node'' that the user can add are:
 
The main types of ''Node'' that the user can add are:
  
* [[Slice Node]], creates a slice selection of the dataset and related rendering pipeline
+
* [[#Slice Node|Slice Node]], creates a slice selection of the dataset and related rendering pipeline
* [[Volume Node]], creates a volume rendering pipeline
+
* [[#Volume Node|Volume Node]], creates a volume rendering pipeline
* [[Iso Contour Node]], creates an isocountour rendering node allowing the possibility to change isovalue interactively
+
* [[#IsoContour Node|IsoContour Node]], creates an isocountour rendering node allowing the possibility to change isovalue interactively
 
* [[Scripting Node]], allows the user to define execute interactively an analysis code on the input data or use one of the predefined scripts
 
* [[Scripting Node]], allows the user to define execute interactively an analysis code on the input data or use one of the predefined scripts
  
 
You can add a ''Node'' using the menu ''Add''.
 
You can add a ''Node'' using the menu ''Add''.
  
== Collection of IDX datasets ==
+
==== Slice Node ====
 +
 
 +
The slice node renders a 2D slice.
 +
 
 +
For example if we open with [[ViSUS Viewer]] a 3D dataset like: http://atlantis.sci.utah.edu/mod_visus?dataset=rabbit3d
 +
 
 +
We will get the following slice rendering:
 +
 
 +
[[File:rabbit_slice.png|500px|center]]
 +
 
 +
==== Volume Node ====
 +
 
 +
A volume node performs a volume rendering of the input data.
 +
 
 +
For example if we open with [[ViSUS Viewer]] the URL: http://atlantis.sci.utah.edu/mod_visus?dataset=borg
 +
 
 +
We can visualize the following volume rendering (timestep 15 using a "Ice" palette):
 +
 
 +
[[File:borg_volume.png|500px|center]]
 +
 
 +
==== IsoContour Node ====
 +
 
 +
An iso contour node computes an iso surface at a certain input iso value.
 +
 
 +
For example if we open with [[ViSUS Viewer]] the URL: http://atlantis.sci.utah.edu/mod_visus?dataset=borg
 +
 
 +
We can visualize the following iso surface (isovalue ~65.68):
 +
 
 +
[[File:Iso_contour_example.png|500px|center]]
 +
 
 +
==== Scripting Node ====
 +
 
 +
The scripting node allows to perform operations on the data using '''python'''.
 +
 
 +
This node can be added to any other node, for example a [[Volume Node]] (i.e. to produce a volume rendering of the data) or a [[Slice Node]].
 +
 
 +
===== Example using 2D images =====
 +
 
 +
Using the Gigapixel David dataset at the URL: http://atlantis.sci.utah.edu/mod_visus?dataset=david
 +
 
 +
we can apply scripting using some of the predefined filters/scripts.
 +
 
 +
For example from the original image:
 +
 
 +
[[File:david_eye.png|350px|center]]
 +
 
 +
Using a "2D/Emboss" filter script you will get something like the following:
 +
 
 +
[[File:david_eye_emboss.png|350px|center]]
 +
 
 +
===== Examples using a vector field =====
 +
 
 +
In the following examples we will use a vector field from a large scale combustion dataset.
 +
You can open this dataset with your [[ViSUS Viewer]] using "Open URL" and this address: http://atlantis.sci.utah.edu/mod_visus?dataset=lifted_time
 +
 
 +
A Volume Node for a vector field will visualize a volume rendering as following (using a "Gamma" palette):
 +
 
 +
[[File:flame_vfield.png|350px|center]]
 +
 
 +
Since the data has 3 components the default visualization uses the 3 components as RGB channels.
 +
 
 +
If we want to evaluate and visualize the squared magnitude of this (three-dimensional) vector field the user can simply insert a scripting node with the following script:
 +
output=
 +
  ((1.0*input[0])*input[0]) +
 +
  ((1.0*input[1])*input[1]) +
 +
  ((1.0*input[2])*input[2]);
 +
 
 +
Where the <code>input</code> field represent the input data that enter the scripting node, the output represents the result of the computation.
 +
 
 +
The output will be a scalar field that will be rendered as following:
 +
 
 +
[[File:flame_mag2.png|350px|center]]
 +
 
 +
Another example using a vector field is to compute a 2D '''Linear Integral Convolution''' (LIC), this can be done using the following simple script:
 +
output=Visus.Array.lic(input,0,1);
 +
 
 +
where the second and third parameters of the ''lic'' function are the vector's components that we want to use for the computation.
 +
 
 +
The result will be like the following (using a "Banded" palette) adding this script to a [[Slice Node]]:
 +
 
 +
[[File:lic_banded.png|350px|center]]
 +
 
 +
== Use Collections of IDX datasets ==
  
 
Sometimes can be useful to define a collection of IDX dataset to use for interactive visualization or analysis.
 
Sometimes can be useful to define a collection of IDX dataset to use for interactive visualization or analysis.
Line 60: Line 151:
  
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
  <dataset typename='IdxMultipleDataset'>
+
<dataset typename='IdxMultipleDataset'>
    <dataset url='file://$(CurrentFileDirectory)/my_dataset.idx' name= 'pressure'  />
+
  <dataset url='file://$(CurrentFileDirectory)/my_dataset.idx' name= 'pressure'  />
    <dataset url='file://$(CurrentFileDirectory)/my_other_dataset.idx' name= 'temperature'  />
+
  <dataset url='file://$(CurrentFileDirectory)/my_other_dataset.idx' name= 'temperature'  />
  </dataset>
+
</dataset>
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 73: Line 164:
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
  A=input[0];
+
A=input[0];
  output=A;
+
output=A;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 80: Line 171:
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
  A=input[0];
+
A=input[0];
  B=input[1];  
+
B=input[1];  
  output=Visus.Array.interleave([B,B,B,A]);
+
output=Visus.Array.interleave([B,B,B,A]);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
In this example we created an array that is made of 4 components.  
 
In this example we created an array that is made of 4 components.  
We can map those four component to the RGBA channels of our palette enabling "Enable palette" on the Render Node.
+
We can map those four component to the RGBA channels of our palette enabling "Enable palette" on the Render Node. This allows to control the visualization of B using the data in A simply varying the alpha channel in the Palette Node.
In this example this allows to control the visualization of B using the data in A simply varying the alpha channel in the Palette Node.
 
  
 
Here are some other examples:
 
Here are some other examples:
 
*[[MIDX examples]]
 
*[[MIDX examples]]

Latest revision as of 18:01, 23 August 2018

Basic Usage

The default layout of the viewer looks like the following picture:

Viewer window.png

In the window you have:

  • a toolbar that contains the most basic options
  • a left sidebar that shows the tree of datasets and visualization/computing nodes used in your workflow. Each element in this sidebar is called node
  • the canvas, where you can navigate and interact with the data

More windows can pop up to customize each node.

Open/Add a dataset

A dataset can be either local or remote (e.g. provided by a ViSUS Server).

Local dataset

Two options are available to open a local dataset in the menu File:

  • Open file... (open a single file, all the datasets in the current session will be discarded)
  • Add file... (add a dataset to the current session)

Remote dataset

Two options are available to open a remote dataset in the menu File:

  • Open URL... (open a remote dataset, all the datasets in the current session will be discarded)
  • Add URL... (add a dataset to the current session)

Try, for example, to open the Gigapixel 2D dataset David using this URL: http://atlantis.sci.utah.edu/mod_visus?dataset=david

And zoom in as you like!

Bookmarks and Configuration

A fresh ViSUS installation should provide in the Bookmarks menu a list of datasets that are publicly available. You can use those to experience some of the functionalities and performance of ViSUS Viewer or add your own IDX datasets using the ViSUS configuration file.

Advanced configuration (i.e. mostly performance and platform specific related) are also contained in the ViSUS configuration file.

Save/Open a scene

The current scene can be saved on disk using the File->Save scene... command. The scene will contain all the datasets and settings in the current session.

The current scene can also be saved as history that will contain also all the operation performed by the user in the scene (i.e. using File->Save history...).

The same scene can be later opened from File->Open file... and shared with other users (i.e. assuming other users can access the datasets in the scene using the same path/URL, this means that datasets might be remote or on a shared file system).

Nodes/Filters

When you open or add a new datasets you will get a tree of nodes on your left sidebar that will allow to define analysis and visualization pipelines.

The default Nodes are the dataset node that provides information about the dataset and the time node that allows to move along the timesteps contained in the datasets.

The main types of Node that the user can add are:

  • Slice Node, creates a slice selection of the dataset and related rendering pipeline
  • Volume Node, creates a volume rendering pipeline
  • IsoContour Node, creates an isocountour rendering node allowing the possibility to change isovalue interactively
  • Scripting Node, allows the user to define execute interactively an analysis code on the input data or use one of the predefined scripts

You can add a Node using the menu Add.

Slice Node

The slice node renders a 2D slice.

For example if we open with ViSUS Viewer a 3D dataset like: http://atlantis.sci.utah.edu/mod_visus?dataset=rabbit3d

We will get the following slice rendering:

Rabbit slice.png

Volume Node

A volume node performs a volume rendering of the input data.

For example if we open with ViSUS Viewer the URL: http://atlantis.sci.utah.edu/mod_visus?dataset=borg

We can visualize the following volume rendering (timestep 15 using a "Ice" palette):

Borg volume.png

IsoContour Node

An iso contour node computes an iso surface at a certain input iso value.

For example if we open with ViSUS Viewer the URL: http://atlantis.sci.utah.edu/mod_visus?dataset=borg

We can visualize the following iso surface (isovalue ~65.68):

Iso contour example.png

Scripting Node

The scripting node allows to perform operations on the data using python.

This node can be added to any other node, for example a Volume Node (i.e. to produce a volume rendering of the data) or a Slice Node.

Example using 2D images

Using the Gigapixel David dataset at the URL: http://atlantis.sci.utah.edu/mod_visus?dataset=david

we can apply scripting using some of the predefined filters/scripts.

For example from the original image:

David eye.png

Using a "2D/Emboss" filter script you will get something like the following:

David eye emboss.png
Examples using a vector field

In the following examples we will use a vector field from a large scale combustion dataset. You can open this dataset with your ViSUS Viewer using "Open URL" and this address: http://atlantis.sci.utah.edu/mod_visus?dataset=lifted_time

A Volume Node for a vector field will visualize a volume rendering as following (using a "Gamma" palette):

Flame vfield.png

Since the data has 3 components the default visualization uses the 3 components as RGB channels.

If we want to evaluate and visualize the squared magnitude of this (three-dimensional) vector field the user can simply insert a scripting node with the following script:

output=
 ((1.0*input[0])*input[0]) + 
 ((1.0*input[1])*input[1]) + 
 ((1.0*input[2])*input[2]);

Where the input field represent the input data that enter the scripting node, the output represents the result of the computation.

The output will be a scalar field that will be rendered as following:

Flame mag2.png

Another example using a vector field is to compute a 2D Linear Integral Convolution (LIC), this can be done using the following simple script:

output=Visus.Array.lic(input,0,1);

where the second and third parameters of the lic function are the vector's components that we want to use for the computation.

The result will be like the following (using a "Banded" palette) adding this script to a Slice Node:

Lic banded.png

Use Collections of IDX datasets

Sometimes can be useful to define a collection of IDX dataset to use for interactive visualization or analysis. MIDX is file format that can define a collection of IDX files.

The simplest example of MIDX is the following:

<dataset typename='IdxMultipleDataset'>
  <dataset url='file://$(CurrentFileDirectory)/my_dataset.idx' name= 'pressure'  />
  <dataset url='file://$(CurrentFileDirectory)/my_other_dataset.idx' name= 'temperature'  />
</dataset>

This MIDX simply defines two datasets that could be either locally or remote.

When you load an .midx file in ViSUS Viewer you will have a new element in you Nodes which is the "Field Node". In an MIDX since you have several input datasets the field node is responsible to select the input of your Node (e.g. a volume rendering node). So you can either choose one of the inputs:

A=input[0];
output=A;

or even combine them to produce a derived data input as in the following example (interleaved):

A=input[0];
B=input[1]; 
output=Visus.Array.interleave([B,B,B,A]);

In this example we created an array that is made of 4 components. We can map those four component to the RGBA channels of our palette enabling "Enable palette" on the Render Node. This allows to control the visualization of B using the data in A simply varying the alpha channel in the Palette Node.

Here are some other examples: