3D field visualization

How I can implement this 3D visualization using OpenGL?
This is something like fog colored by temperature.


Build a texture containing the heat colours and overlay it using GL_BLEND and a quadrilateral that covers the entire screen. You can either blur it to make it nice and foggy or rely on GL’s bilinear interpolation to make a not-quite-so-nice blur.

Thank you very much.

Can you explain a bit detailed - what kind of texture I should build (3D?) and how I can do it. May be you can advice a good example.

Can you explain a bit detailed - what kind of texture I should build[/QUOTE]
Take a look at the legends here:

OpenDX contains one of these. VTK probably as well (both open source). Other commercial packages such as AVS no doubt too.

Thank you, but I did not understand what you suggested.
Are you talking about using some library? May be this is a good way, but I already have program that do not use any graphic library and I just search a recipe to do 3D filed visualization like showed on example picture.

No. You can see the color order in the legend, right? Slap those in a texture, turn on GL_LINEAR interpolation, and use that as your value-to-temperature-color lookup table.

This is not a problem. I already have value-to-temperature look up table, but I do not know how to show this color “fog” using OpenGL. What feature of OpenGL should I use to draw that color “fog”?

glTexSubImage2D the temperature value, and draw a textured quad with it.
Put some alpha transparency for good measure, a simple glColor4f(1,1,1,0.5) should do the trick with default GL_MODULATE texture blend mode.

Thank you for your advice. I only cannot understand how I can get 3D picture from 2d quad. I should draw a lot quads, right?

In your second picture, the one with fog temperature, it looks only a simple textured quad was added.

It is 3D really. May be this is not good angle, but it is 3D. It looks like 3D colored fog, not a simple quad. I can make a bit morу pictures (better resolution) if it can help.

the question is:

You need to navigate through the room or you need only an isometric view?
In the first case you can a use particles system.
In the second case a quad over the floor should be OK.

I need only isometric view, but I think a quad over the floor will not be OK. What is the particles system?

I make more pictures to better understand what I need:

p3
p4
p5

Please look at p5 especially. You can see on it at the left side some thing like transparent plane orthogonal to observation axis.

Ok, so you need to view the 3D Object from different angle, so the quad over the float is not a suitable solution.
To display sampled data there are two ways.
A- 3D textures, basically is like a normal texture but with an additional dimension. Cause everything in openGL have to be rendered on polygons you have to generate some polygons to render the texture. 3D texture are usually rendered on a lot of plane that slice the texture. You can choose is use planes perpendicular to the axis, or generate at frame time planes perpendicular to the camera. 3D texture have a lot of nice properties but take a lot of memory.
B- Another solution is particles system, basically you render a point (or a quad) with a texture and a color where you have a sample. In this way a lot of point will form a volume. They are used to render smoke, fire, dust and leaf in video games.
Particle use less memory and are not confined in a volume, but are more difficult to implement.

For both solution you can find a lot of tutorial on the web.

Thank you very much.

I tried to search examples of using 3D texture, but did not found something good so far. May be you can advice some site or book with good examples.

This should be enough:
www.csee.wvu.edu/~tmcgraw/cs570spring2009/lecture19.pdf

Link is very useful. You helped me a lot. Thank you very much.