POV-Ray 3.0, 1998

Sep-Oct-1998, Topic WATER

Placed 1st!!!

Update 2002

This image was choosed as “Splash Screen” for the Windows version of the new POV-Ray 3.5! After some funny logo integration suggested by Chris Cason, you can see the results below.

Submission txt

A little brook. Not really a river… now. Water is slowly running down, stoped in some places by the stones, creating little pools.

During the first month, I was not able to find any reasonable idea for my (kind of) skills, and I decided to not enter this round and I’ve started then some private attempts to make a convincing stone. I made it with a mesh, using arrays for the points and for the triangles. Then I filled by hand both arrays for a 1 unit box and created some macros to subdivide and randomize automatically this “seed” box shape into something looking as a stone.

This method obtains nice stones, but the they need a too big number of triangles (memory) and subdivisions/randomizations (parsing time). So, I was forced to think in blobs, but …how? Well, why to not use the previous “mesh” squeleton? Placing blobs in the points (instead of making triangles with them), I can get an interesting stone with only a few blobs (bcos the stone interior is not filled)… Wow! It worked nice and fast with a few subdivisions and randomizations!

Ok. The stone looked very nicely shaped, but due to it’s blob nature, it seemed too rounded, like a river stone….

…RIVER stone? …mmmmm… …WATER!!!! Well, I can enter this round! 🙂

At that point, I figured a riverbed plenty of rounded stones, with a low water volume, running down slowly. Not so easy as simply putting a water wavy-bumped-plane with some of these stones…

Fisrt of all, I wanted many stones populating the riverbed, so, explicit placement was discarded. I tried then a very simple collision-detect macro, but, using imaginary “bounding” spheres, the stones looked too much spaced between them. So, a random placement was finally used, with many trials to obtain a good seed with not many obvious collisions. This way the stones look more “naturally” placed (altought there are some evident collisions).

These stones are placed along the riverbed, which is a height_field done with POV-Ray in a separate scene: the tipical B/W HF generator, with a two layer texture : a wrinkled texture for the terrain surface and, on top, a marble one, showing only one big line to create the riverbed hole. Both the riverbed and the stones are textured with the same tree-layer texture, which is composed of one standard stone for the main texture, a second, custom, gradient y for the dirty on the stones, and last, a gradient y mapped over the whole thing to simulate the underwater stones and bed as if they were wet (more dark) and greenish.

The plants on the banks are the most simple plant I was able to model. They are a bunch of random curved leafs grouped togheter with a random loop and also randomly pigmented from Gold to DarkGreen. The plants are placed by hand, to disimulate some ugly things on the banks.

The fishes are done very poorly, but well, they are underwater… 🙁 The fish model was created with a variant of the stone macro, adapted for the fish shape. Nothing to be proud to explain…

The hard work of this scene was the water height_field. I have done the scene first with a simple box for the water, with a wavy normal. When the arrangement of stones looked right, I’ve copied the scene into another one (called hf_water.pov, included in ZIP), which I modified to make the stones and riverbed totally black, and the water box textureed with a B/W texture with the same wavy pattern as the original. Placing the camera above, the result was a nice heightfield of the water, with the stones and riverbed differenced from it (in black).

And, why all this work? Well, to create the ilusion of “running” water. The wavy pattern normal on the water-box looked nice, but not really as if it were running, affected by the stones. So, i figured this method to latter edit this height_field in PCPainbrush to “paint” some turbulences around the stones (with “glaze” and “smear” tools), following the supposed direction of the water. Of course, I’ve done hundreds of trials to create some convincing ripples (not a great job at the end, but not too bad…), and later to place the HF aligning the holes with the stones. Also, the texture for the water was a hard work with many tests. Finally, a glass finish with ior 1.2 worked fine. The pigment is a heavilly filtered white and a cutted fog is under the surface of the water to simulate some dirt.

Well, that’s the idea. See the code if you want some more details and don’t doubt to ask for anything missing or obscure.