Informal Seminar 08/03/2004. By Chris Sweet. 3D Visualisation of Simulation Data.
Why Visualise? • More meaningful than lists of numbers. • People have good visual intuition of dynamics. • Visual check that simulation is correct. • Easier to communicate interesting features of the simulation to others.
Methods for 3D Output. • Projection of 3D image onto 2D plane. • 3D libraries such as OpenGL or DirectX.
Projection of 3D onto 2D • This can be accomplished by using a matrix to project the 3D data onto a 2D plane, which can be varied to change the viewpoint. • For a viewing plane defined as follows we get a transformation matrix:
Projection of 3D onto 2D • Example of 2D rendering of objects in 3D.
Projection of 3D onto 2D • Example of 3D surface rendering.
Advantages/Disadvantages of 3D Projection • +Easy to implement on any platform with raster graphics. • -Objects drawn as 2D. • -Hard to determine depth from viewer, (front objects do not obscure rear objects). • -Hard to implement perspective. • -Hard to apply textures. • -Slow as pixel driven.
Advantages/Disadvantages of 3D Libraries • -Hard initial implementation. • +All methods of depth/ perspective/ texturing looked after. • +Hardware support for drawing so fast. • +Libraries exist for many different platforms. • Comparison: 3D projection of Solar System. • 3D library rendering of Solar System.
Advantages/Disadvantages of 3D Libraries • Comparison: 3D projection of Solar System.
Advantages/Disadvantages of 3D Libraries • 3D library rendering of Solar System.
OpenGL • OpenGL is a cross-platform 3D graphics and modelling library with extremely good hardware support. • OpenGL is a procedural graphics API containing over 200 commands and functions. • OpenGL works in conjunction with other libraries, such as GLUT, for easier implementation.
OpenGL basics, Vertex Transformation • Vertices are transformed according to the following pipeline:
OpenGL basics, Initialisation. • Typical C++ initialisation commands: • Typical C++ re-draw commands:
OpenGL View/Perspective • The viewing Frustum parameters are set using the command: • According to the diagram:
OpenGL Drawing Objects • All OpenGL objects are constructed from polygons by defining the vertices: • or by using GLUT more complex shapes:
OpenGL Lighting • Both ambient and point source lighting can be defined:
OpenGL Textures • Textures can be mapped onto objects according to their vertex positions:
OpenGL Translate/Rotate Object • OpenGL objects can and rotated:be translated:
OpenGL Solar System Model • The Solar System model is a 10 body model designed to test the long term stability of different integrators and uses the previous OpenGL techniques to generate the graphics.
References/Acknowledgments • The following book provides a good reference to OpenGL with examples in C/C++: OpenGL SuperBible by R.S.Wright, M.Sweet (No relation!). • The following online tutorial covers most aspects of OpenGL programming: http://nehe.gamedev.net/