|TUTORIAL 1 - A Basic OpenGL Application
This tutorial shows first how to setup a basic OpenGL skeleton and how to use it to draw 2 dimensional shapes, then we will extend the code to 3D drawing and animation, text output, add distant and spotlights, and show how to use full screen mode and window based output, textures and transparent objects.
|TUTORIAL 2 - OCEAN WAVES I
In this tutorial I first explain the physics behind ocean waves and I will show you a couple of models how you can simulate the water surface. Finally I show you how you can implement the mathematical part of the algorithms.
|TUTORIAL 3 - SIMULATION OF WATER SURFACES
by Jens Schneider
Jens is a computer scientist who is specialized on the simulation of water surfaces. He will show you how you can professionally implement simulations of ocean waves. You can find one of his papers about this topic in the paper section, and the source code for this tutorial can already be downloaded.
|TUTORIAL 4 - SIMULATION OF PLANTS
In this tutorial we will discuss the theory behind the simulation of plants. For this tutorial we will use existing programs (which you can get from my download section) to produce 3D models which you can export in other rendering programs or use in your own programs.
|TUTORIAL 5 - IMPLEMENTATION OF L-SYSTEMS
by Gernot Ziegler
Actually this is not a tutorial in the classical sense but a well documented project, that shows how to implement a L-system program including parser. This project consists of three parts: source/executables, documentation of the source and a MS-Powerpoint presentation describing everything.
If you find this project helpfull, it would be nice, if you let Gernot know, that you appreciate his work.
|TUTORIAL 6 - GENERATING PLANETARY BODIES
by Sean O'Neil
This tutorial shows you how to procedurally generate full-size planetary bodies at any level of detail. It discusses the pros and cons of different types of procedural algorithms, then Sean explains the method he chose to use in more detail.
|TUTORIAL 7 - RENDERING PLANETARY BODIES
by Sean O'Neil
This tutorial shows you how to render full-size planetary bodies at any level of detail. It uses a spherical version of the ROAM algorithm Sean came up with, and it is tailored specifically to the procedural algorithm explained in tutorial 6.
|TUTORIAL 8 - BASIC PARTICLE SYSTEM: FOUNTAIN
In this tutorial I will explain how you can use particle systems to implement a fountain and I briefly describe what you have to consider, when you use the particle system to implement waterfalls or fireworks.
On this page you will find tutorials which show you how to program different graphical effects related to nature. In the starting period, the programs will be in C++ for the windows platform. To make it easier to transfer them to other platforms they will use Opengl (maybe some of them will use the glut library).
In the long run, the tutorials will be translated to Delphi, Kylix, Visual Studio and other platforms - mainly Linux. If you have written a cool program and would like to share your knowledge with fellow programmers, please send in your program/tutorial :-)
Currently the following topics are planed:
What is a plasma fractal? How can I use it to generate terrains/clouds? How does the diamond-square algorithm work? Advanced algorithms for more realistic terrain rendering. Realtime terrain rendering. Level of Detail (LOD) algorithms for realtime rendering. How can I create lakes and rivers?
How can I simulate a water surface? How can I use Particle Systems to simulate fountains/waterfalls? What about caustics?
Can I use iterated function systems (IFS) to simulate plants? What are Lindenmaier-systems (L-systems)? How can I use L-systems to create photorealistic plants? How can I simulate plant growth? Why do I need different L-systems for green plants/flowers and trees? What are stochastic L-systems and how can I use them to create even more realistic plants?
How can I simulate the behavior of animals? Which aspects of artificial intelligence are relevant to these simulations?
If you think that there should be also other topics or if you can make some contribution to one of these topics please send me an e-mail: firstname.lastname@example.org