Inviwo

Inviwo is the visualization framework we use in our daily research and we will use it in the practical assignments to implement some visualization methods ourselves.

Note

If you have not installed Inviwo yet, it is probably best to first skip to Setup and read the Overview while playing around with the editor.

Overview

Inviwo is an extendable C++ framework for easy prototyping of interactive applications. It provides a network editor for the designing of data flow networks, which are automatically evaluated and executed to produce output on one or more output processors (typically a canvas). The data flow in such a network runs from top to bottom, and the nodes are referred to as processors. Besides these processors two more first class objects exist. Ports, which are used to exchange data in between processors, and properties, which define the state of a processor.

inviwoapp_annotated

Processors are the primary objects the user interacts with inside the network editor. Usually, they are dragged from the processor list on the left onto the network editor, before they are connected. Processors receive input data and generate output data through ports, whereby the ports on the top boundary are referred to as inports, and the ports on the bottom boundary are referred to as outports. Each processor has a set of properties, which define its current state. Upon selection of a processor in the network editor, its properties are shown in the property list on the right, where they can be edited.

processor_annotated

Processors can exchange information in two ways. First, they can exchange data through their ports, whereby equally colored ports are of same type and can thus exchange data. Port connections can be established by connecting two ports via drag-and-drop. Besides the ports, the properties of a processor can be linked in order to synchronize their values. Links can be established by creating a connection between the semicircles of two processors.

To distinguish processors in a network, they have unique identifiers which can be edited by the user. Initially the identifier will be equal to the type of the processor, which is shown in italic below the identifier. Furthermore, the processor shows whether it is correctly connected through the status light.

Setup - Short Version

Download these resources/tools if you do not already have them running.

Downloads Windows (64bit) Linux OS X
Git .exe Links to an external site. sudo apt-get install git

.dmg Links to an external site.

Qt .exe Links to an external site. Follow instructions here Links to an external site.

.dmg Links to an external site. (or through homebrew for newer Macs)

CMake .msi Links to an external site.

Follow instructions here Links to an external site.

.dmg Links to an external site. (Mac OS X 10.13 or later)

C++ GUI Visual Studio (Follow links to Azure) sudo apt-get install build-essential freeglut3-dev xorg-dev XCode Links to an external site.

To build Inviwo, you will need to

  • Clone the course repository from https://github.com/KTHVisualization/inviwo Links to an external site.
  • Clone the submodules with git submodule update --init --recursive
  • Generate a solution using CMake
    • Set source and binary destination path (./bin)
    • Set all Qt variables
  • Open the resulting solution and build it
    • The entry point is inviwo-cli
    • Building in Release will make all your execution faster

If you run into problems, look at the extended version below.

Setup - Extended Version

For the assignments you need to build and run a version of Inviwo on your computer. We will provide you with a set of modules (one for each assignment) that contain code and stubs for different classes that you will implement. The latest version of those modules along with the version of Inviwo we will use for the course can always be found at https://github.com/KTHVisualization/inviwo Links to an external site.. In order to get, install, build and work with Inviwo, you need to install a set of dependencies:

  • Git: a version control system. Github is a web-based version of git that a lot of open source projects use to work on, maintain and distribute their code. 
  • CMake is a cross-platform build environment that generates build files for the respective operation system such as make files on Linux or Visual Studio projects. 
  • Qt is used for creating cross-platform applications and graphical user interfaces.

You can find the setup instructions for different platforms below:

Please follow these to install Inviwo. If you run into problems along the way, please post about them in the respective discussion forum.