Sie sind hier: Startseite / IT / Informatik / Informatik-Studium / Vorlesungen / Computer Grafik I / Rendering-Competition 02/03 - making of

Rendering-Competition 02/03 - making of



the beginning...


  • The first thing a did was to write me a handy perl-script for converting models from the widely used obj-format into my nff file format. To that time i didn't know exactly what a scene I should model, but it seems clear that i wanted to use some of these nice Xfrog plants.


  • To use transparencies in textures, I implemented routines for reading and writing of png files (png is able to store an alpha channel).

    This was my test-image for testing my converter and my textures with alpha-channel:

    test-image with an xfrog plant and a texture with an alpha-channel

  • I implemented bump-mapping.


  • I read the book "texturing and modelling - a procedural approach" nearly complete to get firm with the techniques I needed to write my own procedural shaders. The basic stuff in procedural textures are noise- and fractal-functions, so I had to implement them first (the book with its sample code was a great help!).
    My "hello-world" procedural-shader was a sky-shader:

    my first sky

    Not bad for the first one, but still heavy aliased....


  • My next shader was a water-shader (here still without reflections):

    my water-shader



  • my fractal landscape generator


  • Now, I had to face the biggest problem: I hadn't any modelling-experience before this computergraphics course, so it would be very hard for me to make some cool models on my own (in other words: inpossible, because time isn't unlimited).
    So I decided to use fractals to generate a terrain. At this point, I got for the first time a plan how my ready image should look like: an island with tropical plants and all around water.
    I coded a tool which i called "terragen", that generated a fractal terrain und saves it as (a lot of :-) rectangles in an nff-file. The tool was relatively easy write. The main difficulty lied in tweaking and playing around with the parameters for the generation function to get something out that looked like a real terrain.
    This was my first pic I rendered with terrain-data generated from my tool:

    my first fractal terrain... :-)
    Looks funny, but not like a terrain. :-)


  • In "texturing and modelling - a procedural approach" are three functions shown which one can use to generate a fractal landscape. But there is realy nothing said how these functions must supplied with what arguments to get a cool landscape. So I had to find it out on myself...
    My second try:

    my second fractal try Still not what i wanted...

    You'll find a lot of pics of this phase in my "gallery of funny pics".

    Several days later: fractal terrain


  • On the above pic, you can see that my terrain had to be much more finer to look realistic. So I changed my tool the get the squares fine enough to look smooth. Now I can adjust how fine I want my terrain. This are two pics of the same input parameters, only the resolution of the altitude grid differs:
    finer fractal terrain
    still finer...


  • The first island:
    my first island

    The terrain looks good, but the coastline is still missing.


  • Now, I changed terragen to add a costline:
    coastline
    Nice, but the coast is still too flat. I added some noise to the x and z coordinates of the coastline.


  • Several days and cups of coffee later...
    nice...



  • placing plants on the terrain


  • Now, I had a cool landscape. But an island without plants isn't very cool... so I went on to code some automatic plant positioning into terragen. I give it a value for the sealevel, and it places me plants pseudo-randomly (as long as i don't change the seed, random () will give terragen the same values every time) above the sea. Looks easy? In theory, yes.
    But in practice, it took me a lot of time to get it working the right way and looking good. I also implemented a pseudo-random scaling of the height of the plants because it looked very boring to see 10 trees in a line with exactly the same heigth.

    landscape with plants in the sea Plants on the sea or in the air aren't looking cool...

    But finally, I got the right positions: :-) plant positions ok



  • the water


  • You can have an excelent procedural shader, but with the wrong parameters, your result will look bad. I moved on to tweak my water. The first thing I added was reflectivity, because in nature, the water gets his color from the reflections.
    I further enhanced the original fBm ("fractional Browning motion") function from the book with renderman style anti-aliasing. For this, I had to implement some functions I found in renderman like filterwidthp.
    Now, the water looks ways better:
    water with reflections


  • I made the ripples smaller to get it more realistic:

    water with smaller ripples



  • the rock


  • I also played around with the parameters of my rock shader.
    This version looks pretty cool, but unfortunatelly, it isn't realistic.

    rock: pretty cool pattern but not realistic...

    Not bad, but looks somewhat noisy...
    noisy rock

    Finally, I chose this one. It looks like some sedimentary slick rock: sedimentary rock



  • fine tuning



  • Some people mean that the green tree (a hawaiian coffee plant!) looks like a christmas tree... so I tweaked the parameters in terragen to make the palms higher and reduced the amount and size of the coffee plants:

    the island with higher palms



and now... the final image!


the final image
click on the image to get the full-res version!
It took 41 minutes to render it on a 1.8 GHz Xeon (with 16 times supersampling)



Dominik Gummel
Last modified: Thu Jan 16 00:22:22 CET 2003

Artikelaktionen