|
|
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
|
|