POV-Ray : Newsgroups : povray.text.tutorials : How to make rippling water? : Re: How to make rippling water? Server Time
18 May 2024 13:22:31 EDT (-0400)
  Re: How to make rippling water?  
From: Mr  B  Elliott
Date: 2 Feb 1999 10:39:35
Message: <MPG.1121b8f921b1806e989682@news.povray.org>
In article <36B4B43C.DDAA6648@sitc.net>, Tig### [at] sitcnet says...
> I've read the docs over and over again about the concept of phasing, and
> I have never figured it out.
> The problem is that I want a water pigment to ripple and I can't figure
> out how to do it properly.
> I've tried using a normal map, but the reflection is not right. I would
> also like to know if there is anyway to fade an entire color to another
> (IE without using a pigment modified like gradient, so the color is
> solid and changes to another solid color). Any help with either would be
> apreciated! :)
> 
> Thanks,
> Tim Soderstrm
> 
> 
> 
Hi Tim,

Here's a water animation (3.0 syntax source code - not a binary) I once 
did as an experiment.  This may not be really what you're after, since 
this doesn't use phasing, but it's a surface I like on water.  Anyway, 
Josh has already answered your phase question.

I was looking for a surface that would move in riplets in a passably 
realistic fashion like calm open water.  It's a standard surface normal 
method, but I discounted using waves or ripples as the normal pattern 
because they produce a geometrically perfect series of concentric circles, 
and I've never seen a lake look like that yet!

I used the "bumps" surface normal instead, and with the changing clock 
value, it translates at a sloping angle up through the surface of the 
water.  This produced the effect of general ripple drift in one direction 
with blowing wind, but the surface pattern is always changing.

I've thrown all of the scene in, not just the water definition.  The 
moonrise idea came from artwork that really struck me on the Chris Rea 
album "The Road to Hell", released sometime back in the '80s.  And yes, 
the moon does rotate a bit eccentrically - never fixed that either :~)  
Still, I loved its reflection: it really surprised me.

Be warned, the scene is VERY DARK.  It is a night scene after all.  To see 
everything better, you'll probably want to change it to a sunrise (just 
shift the clock on your PC forward 12 hours :-)  :-)

Before I put in the scene file, and since this scene is geared for 
animation, may I offer an INI file I use for anims?  It makes my life 
easier anyway.  As well as rendering anims of various lengths, you can 
render a single frame at various points on the way, ie. start, 25%, mid, 
75%, or end frame.

It's name is "anim512.ini": for 512x384 resolution.  If you want it, place 
it in your "renderer" directory, and load it into POV-Ray with the Render 
Settings dialog (<Alt-C> keystroke or Render/Edit Settings from the menu).  
From there you can choose your render options from the drop list in the 
toolbar.  The scene file comes second and is called "moonrise.pov".

Oh christ! Bedtime!  Another day tired at work coming...will I ever learn?


Ciao,
       Brian.
-- 
"Strictly UNIX"    To dance is to live.
bel### [at] gilcomau


==========anim512.ini  :  249 lines==========
; Animate file for Persistence Of Vision raytracer version 3.X.
; Brian Elliott - Oct 1998.


[Start Frame @512, no AA ]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384


[25% Frame @512, no AA ]
Width=512
Height=384
Clock=0.25

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384


[Mid Frame @512, no AA ]
Width=512
Height=384
Clock=0.5

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384


[75% Frame @512, no AA ]
Width=512
Height=384
Clock=0.75

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384


[End Frame @512, no AA ]
Width=512
Height=384
Clock=1

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384


[10 frames @512, no AA]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=10

Cyclic_Animation=off
Pause_when_Done=off


[10 frames @512, AA 0.3]
Width=512
Height=384

Antialias=On
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=10

Cyclic_Animation=off
Pause_when_Done=off


[20 frames @512, no AA]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=20

Cyclic_Animation=off
Pause_when_Done=off


[20 frames @512, AA 0.3]
Width=512
Height=384

Antialias=On
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=20

Cyclic_Animation=off
Pause_when_Done=off


[50 frames @512, no AA]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=50

Cyclic_Animation=off
Pause_when_Done=off


[50 frames @512, AA 0.3]
Width=512
Height=384

Antialias=On
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=50

Cyclic_Animation=off
Pause_when_Done=off


[100 frames @512, no AA]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=100

Cyclic_Animation=off
Pause_when_Done=off


[100 frames @512, AA 0.3]
Width=512
Height=384

Antialias=On
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=100

Cyclic_Animation=off
Pause_when_Done=off


[200 frames @512, no AA]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=200

Cyclic_Animation=off
Pause_when_Done=off


[200 frames @512, AA 0.3]
Width=512
Height=384

Antialias=On
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=200

Cyclic_Animation=off
Pause_when_Done=off


[500 frames @512, no AA]
Width=512
Height=384

Antialias=Off
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=500

Cyclic_Animation=off
Pause_when_Done=off


[500 frames @512, AA 0.3]
Width=512
Height=384

Antialias=On
Antialias_Threshold=0.3
Antialias_Depth=3
Test_Abort_Count=384

Initial_Frame=1
Final_Frame=500

Cyclic_Animation=off
Pause_when_Done=off
==========END anim512.ini==========


==========moonrise.pov  :  93 lines==========
//  Moonrise.pov  --  Moonrise over water
//  Brian Elliott - Oct 1997
#version  3.0

#declare AnimSpeed = 2.5   // Set the rate of the animation sequence.
#declare RealClock = AnimSpeed * clock
// declare RealClock = 1    // If you're too lazy to use animation INI 
file.

camera
{ location <0, 10, -10>
  direction z
  angle 60
  rotate x*5
  //look_at <0, 0, 0>
}

sky_sphere  // Night colours
{ pigment
  { gradient y
    color_map
    { [0      color rgb <0.15, 0.15, 0.3> ]
      [0.15   color rgb <0.05, 0.07, 0.15> ]
      [1.0001 color rgb <0, 0.03, 0.07> ]
    }
  scale 1.05
  translate -0.04
  }
}


// MorphStartPoint:
//   Value of RealClock when the Moon begins morphing to a cube.
#declare MorphStartPoint = 1.5

//
// The Moon
//
light_source
{ <RealClock*-400, RealClock*3800-800, 20000>
  color rgb<1, 1, 1>
  area_light <282.84, 282.84, 0>, <-282.84, 282.84, 0>, 2, 2
  adaptive 1
  looks_like
#if ( RealClock <= MorphStartPoint)
  { sphere
    { 0, 800
#else
  // MorphValue = Range of values (1 -> 0) where RealClock in range (1.5 
to 2)
  // Make sure the value of MorphValue drops no lower than 0.001
  #declare MorphValue =  max(0.001,  1 - 2*(RealClock - MorphStartPoint))
  { superellipsoid
    { <MorphValue, MorphValue>
      scale 800
#end  // [if (RealClock ...]
      texture
      { pigment
        { wrinkles
          colour_map
          { [ 0.05   colour rgb <0.5,0.5,0.5> ]
            [ 0.15   colour rgb <0.706, 0.706, 0.706> ]
            [ 0.5    colour rgb <1.0, 1.0, 1.0> ]
          [ 1      colour rgb <1.0, 1.0, 1.0> ]
          }
          turbulence 0.2
        }
        finish { diffuse 0.8}
        normal { wrinkles turbulence 0.2}
        scale 100
      }
      rotate <RealClock*360*0.3162, RealClock*360*0.9487, 0>
    }
  }
}

//
// Water surface
//
intersection
{ plane { y, 0 }      // Surface
  sphere { 0, 19300 } // Limit it to a finite horizon
  texture
  {	pigment { color rgb<.5, .5, 1> }
	normal
    { bumps 0.2
      scale 2
      translate <RealClock*-14,RealClock*20, RealClock*-17>
    }
	finish
    { //refraction 1
	  //ior 1.333
      reflection 0.6
	  //phong 0.6
	  //phong_size 60
	}
  }
}
==========END moonrise.pov==========


Post a reply to this message

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