.Brief guide

Click on the image to see a snapshot of the control window with its widgets marked:

Control window

First load the three data files to use and optionally an image to apply as texture. If you only have one or two files, just load the same one three times, or pick one of the two and load it twice.

To load, press each of the buttons to the left of the control window, this will open a file chooser, so select the desired file and press the Ok button. When you are satisfied with your picks either adjust the parameters and press the 'Update Data, Cut, Textures' button or press it directly after loading (you can make adjustments later), the model should be displayed in the main window (which remained black until this point).

The easiest way to use GLNebula is to restore a previous session, so at this point it is recommended to save the session for posterior use, just choose the Save session as item in the File menu and choose the desired file name.

Changes in the parameters while using billboards reflect in real-time, to apply them when using point sprites the 'Update Params, Scaling' button needs to be pressed with every change

See the online manual for more information.


Before posting to the forums please read the manual (online and pdf versions are available) all the controls and nitpicks are explained there and hopefully your questions will find an answer.


I. Introduction

GLNebula is a system designed for the real-time visualization of planetary nebulae models (and in general, any static one-component scalar field). produced by three-dimensional photoionization codes such as: Cloudy_3D. It uses three files: each one represents the emission values of one ionized element inside the nebula. The files are arranged in a cubical grid with one scalar per cell, representing the emission value. Each file is matched to a color channel so that the scalar values represent the intensity of a particular light color, also the cells in the final model have color blending capacities as well as transparency to provide the plasma-like look characteristic of their astronomical counterparts. GLNebula uses 2D camera-oriented particles to construct the model of the nebula and give it the illusion of being volumetric, thanks to this fact the performance is very acceptable (as opposed to use proper cubes to represent each cell).

Currently it uses two types of particles: camera-oriented quads (known as billboards) and point sprites. The latter requires a fairly modern video card, specifically one that supports the extension: GL_ARB_point_sprite (This can be checked with the glewinfo program, bundled with the glew library required to run GLNebula and in the windows version zip), and is considerably faster than the billboard approach (moreover the grid using point sprites can be encapsulated in a display list, so the permformance is even better). Unfortunately one vendor of video cards (ATI) hasn't complied fully with the OpenGL standard, so the extension may or may not be present, and is usually broken (for instance in the Radeon 9800 models, plain point sprites can be displayed, but texturing them isn't supported, so if you have an ATI card and the model appears dark or doesn't appear at all you could try disabling textures).

For an in-depth explanation of how GLNeblua works (and if you speak spanish) please let me know and I will send you a copy of my thesis.

Also if you are interested in the real-time visualization of dynamic scalar fields (such as flow visualization), a version which handles time and change within the fields is currently on the works.

Return to the index

II. Features

Return to the index

III. File structures

The data files must contain only ASCII characters (numbers) and no other data but the scalars must be present. They MUST be CUBES, not cubical grids are not supported for now, also they must have the same dimensions between each other.

GLNebula uses a particular file structure for its sessions, see the sample file.

The file has a header containing the current session path, also each entry is preceded by a comment (starting with #) explaining what it represents.

Be wary that the order matters, so expect unusual behavior if you manually edit the file without care. The "standard extension of the files is .neb, but it isn't a must (for convenience the filter in the load session file chooser window is set to *.neb, but can be changed to display a session file with other extension).

Return to the index

IV. Requirements and installation

The easiest way to run GLNebula is under windows, by downloading the zip containing the executable and the needed .dlls and by double clicking on the application.

Source code compilation requires several libraries and their respective development headers to work, in no particular order:

Also a modern video card is greatly recommended, the performance increases a lot and today's commodity hardware prices are relatively low (in future versions GLNebula will use shaders, which will allow the visualization of very large models with much more detail and performance and are only present in modern GPUs).

Return to the index

IVa. Linux compilation

Compiling is as easy as: ./configure, make (the binary will be in the src/ directory) and optionally make install to copy the binary into /usr/local/bin.

The Makefile bundled with the tarball will try to find the development headers in their respective directories under /usr/local (for instance the OpenGL header must be in /usr/local/GL/gl.h, and so on), so edit it accordingly if that is not the case.

Also there's a .kdevelop file, just open it under kdevelop and build the project, it should go without trouble).

Return to the index

IVb. Windows compilation

For windows there is a DevCpp project file, just install the appropriate devpaks (see the requirements section, all are available through the community devpaks in the package manager) and build the application. (sorry MS Visual Studio users: no .dsps for now).

As soon as I have access to MacOS X I'll make a binary, for now I believe that the Makefile is fairly similar, so I hope it works with minimal modifications.

Return to the index

V. Using GLNebula

Va. The control window

Here's where the visualization parameters go, let's review each control (here's a screenshot showing them):

Return to the index

Vb. The main window

Here's where the model will appear when the data is loaded and where the camera controls are.

To rotate the model simply click the mouse left button anywhere inside the window and while still pressing it, drag the pointer towards the direction of the desired rotation. To zoom in or out just press the right mouse button and drag it (upwards to zoom in, downwards to zoom out). Zooming can also be performed with the mouse wheel.

Return to the index

VI. Future features

Hopefully with more wide spread use many feature requests will appear, for now these are the future features that GLNebula will have:

Return to the index