POV-Ray : Newsgroups : povray.binaries.images : Background Smoke Columns : Re: Background Smoke Columns Server Time
30 Jul 2024 20:25:19 EDT (-0400)
  Re: Background Smoke Columns  
From: [GDS|Entropy]
Date: 29 Jan 2011 22:55:28
Message: <op.vp3rumkd0819q0@gdsentropy.nc.rr.com>
On Fri, 21 Jan 2011 13:39:13 -0500, Tek <tek### [at] evilsuperbraincom> wrote:
> For anyone who wants it, density function for the smoke is as follows:
>
> pigment_pattern { granite scale <5,20,5> warp { turbulence .4 octaves 3 }
> colour_map { [.5 rgb 0][.8 rgb 1] } }
> rotate -y*8 translate z*7-y*2 // so it looks good viewed from -4*z
> cubic_wave
> warp { turbulence .3 lambda 2.5 }

Very cool density, Tek.

I have not been able to reproduce the exact effect as shown in your post,  
and am very interested to do so.
Would you mind posting the scene source?

I did however manage one thing of interest:

     density {
      pigment_pattern {
       bozo
       scale <5,20,5> / ScaleAmount
       warp {
        turbulence 0.4
        octaves 3
       }
       color_map {
        #while(Jj <= 10)
         #if (Jj = 0)
          [Jj * 0.5 rgb <Jj,Jj,Jj> / (ColorFactor)]
         #else
          [Jj * 0.8 rgb <Jj,Jj,Jj> *0.25 / (ColorFactor)]
         #end
        #local Jj = Jj + 1;
       #end
       }
      }
      rotate -y*8
      translate z*7-y*2 // so it looks good viewed from -4*z
      cubic_wave
      warp {
       turbulence 0.3
       lambda 2.5
      }
     }

I found your overlapping spheres interesting, as seen in your space  
station image from your site.
I did the same sort of (but much more hastily and with a higher kludge  
factor) loop modification to the basic principal and the results were very  
nice. It, however, does not play well with interior.
Here is that segment just in case you are interested:

#declare tNum = 0.5;
#declare snum = 0;

#declare oGround =
#local nSlices = 61;

#local aCol = array[nSlices];

#local i = snum;
  #while (i < tNum)

   #declare aCol[i*10] = rgb <.0,.0,.4>*i*2;	        //deep sea
   #declare aCol[i*10+5] = rgb <.01,.02,.5>*i*2;	        //
   #declare aCol[i*10+10] = rgb <.02,.05,.5>*i*2;	//
   #declare aCol[i*10+15] = rgb <.05,.1,.6>*i*2;	        //
   #declare aCol[i*10+20] = rgb <.1,.2,.7>*i*2;	        //
   #declare aCol[i*10+25] = rgb <.3,.5,.9>*i*2;          //shallow sea
   #declare aCol[i*10+30] = rgb <.9,.9,.3>*i*2;	        //beach
   #declare aCol[i*10+35] = rgb <.0,.5,.05>*i*2;	        //lush grass
   #declare aCol[i*10+40] = rgb <.05,.2,.0>*i*2;	        //foresty
   #declare aCol[i*10+45] = rgb <.4,.6,.3>*i*2;	        //light grass on  
rock
   #declare aCol[i*10+50] = rgb <.5,.5,.6>*i*2;	        //rock
   #declare aCol[i*10+55] = rgb <.9,.9,1>*i*2;		//snow

   #local i = i + .1;
  #end

  #declare aCol[60] = rgb <.9,1,1>;

  #local nSlice = 0;		
  #while ( nSlice < nSlices )
   #local fProp = nSlice / (nSlices);

sphere {
  <0,0,0>, 1000 + fProp * 240 + 120
    #if ( nSlice > 0 )
     no_reflection
    #end
    pigment {
     granite
     scale 4000
     color_map {
      [1-fProp rgb aCol[nSlice] transmit 0]
      [1-fProp rgb aCol[nSlice] transmit 1]
     }
    }

}

   #local nSlice = nSlice + 1;		
  #end

object { oGround }

-- 
Ian McDonald
Lean Agile .NET 4.0/MVC
Senior Application Architect,
Developer and Security Analyst


Post a reply to this message

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