POV-Ray : Newsgroups : povray.binaries.animations : 2nd Attempt at Flowing Water... (MPG, 274kb) : Re: 2nd Attempt at Flowing Water... (MPG, 274kb) Server Time
19 Jul 2024 13:24:00 EDT (-0400)
  Re: 2nd Attempt at Flowing Water... (MPG, 274kb)  
From: Tim Nikias v2 0
Date: 29 May 2003 18:49:59
Message: <3ed68e97@news.povray.org>
The technique you describe assumes a volume-preserving
attempt at modelling the water. This isn't done in this
algorithm. All it does is raise some nodes of the mesh,
aka the wave-height. This height is spread out using a
smoothening step. In order to not just smooth it out, but
create wave-fronts, I subtract the waves of one step
ago. Thus, only the newly smoothened heights, passed onto
neighbouring nodes, stay unaffected of the following
subtraction, as they have nothing to subtract. This technique
is then done once per frame, and thus I get waves travelling
from some origin onward until the smoothening and
dampening process has taken care of removing the wave.

The problem that seems to appear here is that although
waves are moved downstream by moving the data of the
nodes "downstream" (remember, I'm not moving the nodes
themselves, just the data contained therein), waves do
spread out in all directions. It seems that behind the boxes,
I add no height from former waves (as waves have zero
height inside the blocking objects), but spreading waves
will still move there. But I'm actually not too sure about
the origin of the side-effect. Could be this, or some
other thing, like waves adding up inside the blocked nodes,
and finally emerging behind them... I have an idea how
to check that though, but otherwise, it seems a pretty
difficult thing to achieve with this algorithm...

But I'm interested in what you get cooked up, so
please keep me (and others) updated! :-)

-- 
Tim Nikias v2.0
Homepage: http://www.digitaltwilight.de/no_lights
Email: Tim### [at] gmxde

>     Okay, without looking at the algorithm directly (which I will do
shortly),
> here is my take from a physics standpoint.  Then I can see what you have
and
> whether this is useful or not to you.
>     Imagine the body of undisturbed water as a set of blocks.  Each block
will
> have a height.  Now, no matter what is done (without adding or removing
water),
> we know that the average height of all blocks must remain constant at all
times.
>     Now, let's look at waves and ripples.  You can model them as an array
of
> scalars, and each location of the array is applied to the array of blocks
to
> alter their heights.  This array describes how the water surface will
change
> from moment to moment.
>     But now, we see that a third array, one that modifies the scalars, is
> needed.  It controls the viscosity (as a single parameter for the whole
body of
> water at once) and the damping factor and it stores the modifiers for the
> scalars.  This second derivative is where the action would be.
>     But when we turn it on its head, this array is really the "water" so
to
> speak, and the scalars are its first derivative, and the water surface is
the
> second derivative, and it is completely dictated by it.  If you make fixed
> points in this third array, it will automatically "fix" the overflows, I
would
> think.
>     I am going to continue to consider this and see if I can make a useful
> "wireframe" animation in realtime first.  Then it should be written in C
or
> something and done on the computer screen directly.  Then the addition of
water
> becomes a volume added to a point and its velocity or energy, and the rest
will
> follow from there.
>     Or maybe I am a complete loon...
>
> Cheers!
>
> Chip Shults
> My robotics, space and CGI web page - http://home.cfl.rr.com/aichip
>
>


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.