Rendering-Competition 02/03 - making of
- the beginning
- my fractal terrain generator
- placing plants on the terrain
- the water
- the rock
- fine tuning
- the final image
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:
- 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:
Not bad for the first one, but still heavy aliased.... -
My next shader was a water-shader (here still without reflections):
-
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:
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:
Still not what i wanted...
You'll find a lot of pics of this phase in my "gallery of funny pics".
Several days later: - 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:
-
The first island:
The terrain looks good, but the coastline is still missing. -
Now, I changed terragen to add a costline:
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...
- 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.
Plants on the sea or in the air aren't looking cool...
But finally, I got the right positions: :-) -
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:
-
I made the ripples smaller to get it more realistic:
-
I also played around with the parameters of my rock shader.
This version looks pretty cool, but unfortunatelly, it isn't realistic.
Not bad, but looks somewhat noisy...
Finally, I chose this one. It looks like some sedimentary slick rock: -
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:
my fractal landscape generator
placing plants on the terrain
the water
the rock
fine tuning
and now... 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