The Visualization Research Lab maintains and uses the following graphics software packages for development and educational purposes: OpenGL and GLUT (Linux, Windows, OSX), OpenInventor (Linux), Matlab (Linux), Java2D (Linux, Windows), Gimp (Linux, Windows), Blender (Linux, Windows).
OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL was developed by Silicon Graphics Inc.(SGI) in 1992 and is widely used in CAD, virtual reality, scientific visualization, information visualization, and flight simulation. It is also used in video games, where it competes with Direct3D on Microsoft Windows platforms.
OpenInventor, originally IRIS Inventor, is a C++ object oriented retained mode 3D graphics API designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency.
MATLAB is a numerical computing environment and programming language. Created by The MathWorks, MATLAB allows easy matrix manipulation, image processing, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs in other languages.
Java 2D is an API for drawing two-dimensional graphics using the Java programming language. Every Java 2D drawing operation can ultimately be treated as filling a shape using a paint and compositing the result onto the screen.
GIMP -- or the GNU Image Manipulation Program, is a raster graphics editor used to process digital graphics and photographs. Typical uses include creating graphics and logos, resizing and cropping photos, altering colors, combining multiple images, removing unwanted image features, and converting between different image formats. GIMP can also be used to create basic animated images in GIF format. It is often used as a free software replacement for Adobe Photoshop, the most widely used bitmap editor in the printing and graphics industries; however, it is not designed to be a Photoshop clone.
Blender is a free 3D graphics application. It can be used for modeling, UV unwrapping, texturing, rigging, water simulations, skinning, animating, rendering, particle and other simulations, non-linear editing, compositing, and creating interactive 3D applications. Blender has a robust feature set similar in scope and depth to other high-end 3D software such as Softimage|XSI, Cinema 4D, 3ds Max, Lightwave and Maya. These features include advanced simulation tools such as rigid body, fluid, cloth and softbody dynamics, modifier based modeling tools, powerful character animation tools, a node based material and compositing system and Python for embedded scripting.
For 3D graphics programming (e.g, scientific modeling and visualization), we recommend lab members develop their code using OpenGL or OpenInventor. For 2D graphics programming (e.g, information visualization), we recommend lab members use Java2D. For image processing, quick data file formatting, and optimization routines, we recommend Matlab. Use GIMP and Blender for making fliers, photo editing, and quick 2D and 3D proof-of-concepts.
For slide presentations and posters, you can use either PowerPoint (Windows) or OpenOffice (Linux).
See the instructions we put together for our cs1566 (Introduction to Computer Graphics) students: Using OpenGL and GLUT on the departmental machines.
Some useful OpenGL resources:
The OpenGL Red Book guide to the OpenGL library.
The OpenGL Blue Book OpenGL and GLU manual pages.
The OpenGL Green Book GLUT manual pages.
To install OpenInventor on your machine, go to the Coin 3D site.
The Coin3D free-source Linux-64bit version of OpenInventor is available locally (let us know if you're interested in the Windows version). Start by ssh-ing to one of the Linux 64bit machines (e.g., ssh -X hydrogen.cs.pitt.edu). Go to /afs/cs.pitt.edu/projects/marai/gfx1/Coin-2.5.0/examples/bindings
To use the library you need to either run in your shell
setenv LD_LIBRARY_PATH /usr/local/lib/
or insert this line for good somewhere in your .cshrc.custom file.
Then run one of the examples provided with the library:
(there are more examples in /afs/cs.pitt.edu/projects/marai/gfx1/Coin-2.5.0/examples/misc). Check out the source code and Makefile located in the same directory; then emulate.
You will need
access to a machine that has Java JDK version 1.4 (or later) installed. The CS Windows
machines have Java JDK and JRE version 1.6.0 (Jave 6) installed. You
will find the java compiler and builder in C:/Program
Files/Java/jdk1.5.0_06/bin/javac and C:/Program
The CS Linux machines also have JDK 1.6.0 installed. Under Linux, use /usr/local/jdk1.6.0/bin/javac and /usr/local/jdk1.6.0/bin/java.
For your laptop and home machine, Java 2D and documentation are
available for download as a part of JDK (1.)6.
Java 2D API classes are organized into the following packages in JDK 6:
* java.awt This is the main package for the Java Abstract Window Toolkit.
* java.awt.geom This is the Java standard library of two dimensional geometric shapes such as lines, ellipses, and quadrilaterals.
* java.awt.font This is the library for manipulating glyphs in Java.
* java.awt.color This is the library of tools for dealing with the many different ways that color can be represented.
* java.awt.image This is the library for manipulating graphical images.
* java.awt.print This is the library of tools for writing to paper.
Some useful resources are:
Sun's 2D Graphics Tutorial
Sun's Java 2D Programmer's Guide
Sun's description of all the Java packages and classes.
You can run Matlab by ssh-ing into unixs.cis.pitt.edu (ssh -X unixs.cis.pitt.edu from linux, if you need to get the graphical user interface), then run matlab. If it turns out you need Matlab routinely for research, ask me for a Matlab license and I'll buy one for your machine.It's really easy to do image processing in Matlab. Here are a couple of very short Matlab tutorials geared towards image-processing:
An image filter is a matrix of small dimensions (5x5 is a common size). For example, see the bottom Matlab example on this page: http://www.cis.hut.fi/Opinnot/T-61.5100/project/matlab.shtml
Here are also more detailed notes on how to apply a filter to an image
(what conv2 does):
You will need access to a machine that has installed on it the Gimp image editor. On the CS Windows machines, go to All Programs -> Image editors -> Gimp. Under Linux, type in a shell gimp. To install Gimp on your laptop or home machine, go to http://www.gimp.org/.
Several Gimp tutorials (beginner to advanced) are available at http://www.gimp.org/tutorials/.
A visual interactive OpenGL tutorial is available at: http://www.xmission.com/~nate/tutors.html