POV-Ray : Newsgroups : povray.binaries.images : Soap Bubbles : Re: Soap Bubbles Server Time
30 Jul 2024 14:24:26 EDT (-0400)
  Re: Soap Bubbles  
From: Robert McGregor
Date: 23 Mar 2012 07:30:01
Message: <web.4f6c5e63cdb0c2884c2a424b0@news.povray.org>
Thomas de Groot <tho### [at] degrootorg> wrote:
> Oh yes! I love it.
>
> I am not sure, sometimes in soap bubbles you can see the iridescence
> swirl round (especially before bursting iirc). Have you included that in
> your animation? I seem to see some swirling...

Thanks, Thomas :)

I didn't animate the irid but I did animate the blob components such that each
sphere slowly rotates on its local axes by some random amount before being
translated into position each frame; so the irid pattern does change on each -
some much faster than others.

The whole scene is basically just this:

//------------------------------------------------------------------------------
// Bubbles
//------------------------------------------------------------------------------

#declare M_Bubble = material {
   texture {
      pigment { srgbt 0.99 }
      finish {
         diffuse 0
         reflection { 0.05, 1 fresnel on }
         specular 0.99 roughness 0.001
         conserve_energy
         irid { 0.3
            thickness 0.25
            turbulence 1.2
         }
      }
   }
   interior { ior 1.001 }
}

#declare MAX = 512;

#declare aScale1  = array[MAX];
#declare aScale2  = array[MAX];

#declare aRotate1 = array[MAX];
#declare aRotate2 = array[MAX];
#declare aRotate3 = array[MAX];

#declare aTrans1  = array[MAX];
#declare aTrans2  = array[MAX];

#local n=0;
#while (n < MAX)
   #declare aScale1[n]  = RRand(0.9, 1.1, R);
   #declare aScale2[n]  = RRand(0.4, 0.7, R);

   #declare aRotate1[n] = <rand(R)*360,rand(R)*360,rand(R)*360>;
   #declare aRotate2[n] = <rand(R)*360,rand(R)*360,rand(R)*360>;
   #declare aRotate3[n] = RRand(30,90,R);

   #declare aTrans1[n]  = <RRand(-20,20,R),RRand(-10,10,R),RRand(-20,20,R)>;
   #declare aTrans2[n]  = RRand(-15,-20,R);

   #local n=n+1;
#end

blob {
   threshold 0.2
   #local n=0;
   #while (n < MAX)
      sphere { 0, 1, 1
         scale x*aScale1[n]
         scale aScale2[n]
         rotate aRotate1[n]
         rotate aRotate2[n]*clock
         translate aTrans1[n]

         translate y*12
         rotate y*aRotate3[n]*clock
         translate <0, aTrans2[n]*clock, 10>
      }
      #local n=n+1;
   #end
   material { M_Bubble }
}

Cheers
-------------------------------------------------
www.McGregorFineArt.com


Post a reply to this message

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