#include "colors.inc" camera { location <10, 10, -20>*.25*.75 look_at <0,0,0> } light_source {<500,500,-100> rgb 2} //The Explosion #macro Explosion (ETrans,EColor,ERand,EAnimate,ERadius,EClock,EStart,EEnd,EDetail,EShock) #declare EClock = mod((EClock - EStart)/(EEnd - EStart), 1); #declare ERand = seed(ERand) #declare ERand = rand(ERand) #local EIntensity = (1-(EClock/2))*.25; #local EIntensity2 = (1-EClock)*.25; union { sphere {0, 1 hollow on pigment { rgbt 1} interior { media{ intervals 25*EDetail samples 1,15 variance 1/100 confidence .9 emission EColor*EIntensity/ERadius density { spherical color_map{ [0 rgb 0] [0.124 rgb 0] [0.125 rgb 4] [1.0 rgb 1] } translate (-2*EAnimate)*EClock*y warp {turbulence .5} translate (2*EAnimate)*EClock*y rotate ERand+6787 } density { spherical color_map{ [0 rgb 0] [.249 rgb 0] [0.25 rgb -5*EClock+6] [1.0 rgb 1] } translate (1*EAnimate)*EClock*z warp {turbulence .5 } translate (-1*EAnimate)*EClock*z rotate 323456*ERand+567567 } density { bozo color_map{ [0 rgb 0] [0.2*clock+.0001 rgb 0] [-.2*clock+.0001 rgb 1] [1.0 rgb 1]} scale .125 translate (1*EAnimate)*EClock warp {turbulence .25 omega .1} translate (-1*EAnimate)*EClock rotate 346456*ERand } density { bozo color_map{ [0 rgb 0] [0.2*clock+.0001 rgb 0] [-.2*clock+.0001 rgb 1] [1.0 rgb 1] } scale .125/1.5 translate (-1*EAnimate)*EClock warp {turbulence .25 omega .125} translate (1*EAnimate)*EClock rotate 346456*ERand } #if (EClock < .5) #else density { bozo color_map{ [1.5*EClock-1 rgb .75] [2*EClock-1 rgb 1] [1.0 rgb 1] } scale .25 translate (.2*EAnimate)*EClock*z warp {turbulence .5 } translate (-.2*EAnimate)*EClock*z rotate 323456*ERand+567567 } #end #if (EClock < .5) #else density { bozo color_map{ [1.9*EClock-1 rgb 0] [2*EClock-1 rgb 1] [1.0 rgb 1] } scale 1 translate (1*EAnimate)*EClock*z warp {turbulence 1 } translate (-1*EAnimate)*EClock*z rotate 323456*ERand+567567 } #end } #if (EClock < .5) media{ emission <1,1,.5>*2*EIntensity/ERadius density { spherical color_map{ [1.5*EClock+0 rgb 0] [1*EClock+0.5 rgb 5] [1.0 rgb 15] } translate (-5*EAnimate)*EClock*x warp {turbulence .5*EClock+1 } translate (5*EAnimate)*EClock*x rotate ERand-126787 } scale 2 scale -.5*EClock+.5 } media{ emission <1,1,.5>*2*EIntensity/ERadius density { spherical color_map{ [1.5*EClock+0 rgb 0] [1*EClock+0.5 rgb 2.5] [1.0 rgb 7.5] } translate (-5*EAnimate)*EClock*x warp {turbulence .5*EClock+1 omega .875 } translate (5*EAnimate)*EClock*x rotate ERand-126787 } scale 2 scale -.5*EClock+.5 } #end } scale 1.5*EClock+.5 } //Glow around the explosion sphere {0, 1 hollow on pigment { rgbt 1} interior { media{ emission EColor*EIntensity2/ERadius density { spherical color_map{ [0 rgb 0] [.5*clock+.5 rgb 2] [1.0 rgb 5] } } #if (EClock < .5) #else density { bozo color_map{ [1.5*EClock-1 rgb .75] [2*EClock-1 rgb 1] [1.0 rgb 1] } scale .25 translate (.2*EAnimate)*EClock*z warp {turbulence .5 } translate (-.2*EAnimate)*EClock*z rotate 323456*ERand+567567 } #end #if (EClock < .5) #else density { bozo color_map{ [1.5*EClock-1 rgb 0] [2*EClock-1 rgb 1] [1.0 rgb 1] } scale 1 translate (1*EAnimate)*EClock*z warp {turbulence 1 } translate (-1*EAnimate)*EClock*z rotate 323456*ERand+567567 } #end } } scale 1 scale 1*EClock+1 } #if (EClock <= .5) #if (EShock = on) #local EClock = EClock*2 disc {<0,0,0>, y, 1.5 pigment { onion pigment_map { [0 color rgbt <1,.5,0,1>] [.15*EClock+0.5 color rgbt <1,.375,0,1>] [.95 bozo color_map {[0 rgbt <1,1,0,1*EClock>] [1 rgbt <1,.5,0,1*EClock>]} turbulence 1 scale .0675 translate <0,.75*EClock,0>] [1 color rgbt <1,.5,0,1>] } translate <0,-.25*EClock,0> } finish { ambient 3 diffuse 0 } no_shadow hollow rotate 43567*ERand scale 15*EClock+.1 } #end #end /* #declare C = 0; #declare M = 10; #while (C < M) #declare Rand = seed(1234*C); #declare Rand = rand(Rand); difference { sphere {0,1 hollow on pigment {Clear} interior { media{ intervals 10 samples 1,10 variance 1/1000 confidence 0.999 //#if (EClock < .25) ///emission (<1,1,2>/2-((<0,.5,2>)*EClock*4))*20/ERadius //#else emission <1,.5,0>*10/ERadius //#end density { cylindrical color_map{ [0.0 rgb 0] [.75 rgb 1] [1 rgb 2] } translate <0,7.5*EClock+2*ERand,0> warp {turbulence 1.5 lambda 4 } translate <0,-7.5*EClock+2*ERand,0> scale <.375,(1/200),.375> scale <1,1/(EClock*2),1> } density { spherical color_map{ [0 rgb 0] [.5 rgb 1.5] [1.0 rgb 20] } translate (-4*EAnimate)*EClock*y warp {turbulence .5} translate (4*EAnimate)*EClock*y rotate ERand+6787 translate <0,.75,0> } density { bozo color_map{ [0 rgb 0] [0.2*clock+.0001 rgb 0] [-.2*clock+.0001 rgb 1] [1.0 rgb 1]} scale .125 translate (1*EAnimate)*EClock warp {turbulence .25 omega .1} translate (-1*EAnimate)*EClock rotate 346456*ERand scale <1/.2,1/(EClock*2.5+.5),1/.2> rotate -(Rand+C*123456) rotate -(Rand*360) } density { bozo color_map{ [0 rgb 0] [0.2*clock+.0001 rgb 0] [-.2*clock+.0001 rgb 1] [1.0 rgb 1] } scale .125/1.5 translate (-1*EAnimate)*EClock warp {turbulence .25 omega .125} translate (1*EAnimate)*EClock rotate 346456*ERand scale <1/.2,1/(EClock*2.5+.5),1/.2> rotate -(Rand+C*123456) rotate -(Rand*360) } #if (EClock < .5) #else density { bozo color_map{ [1.9*EClock-1 rgb 0] [2*EClock-1 rgb 1] [1.0 rgb 1] } scale 1 translate (1*EAnimate)*EClock*z warp {turbulence 1 } translate (-1*EAnimate)*EClock*z rotate 323456*ERand+567567 scale <1/.2,1/(EClock*2.5+.5),1/.2> rotate -(Rand+C*123456) rotate -(Rand*360) } #end #if (EClock < .5) #else density { bozo color_map{ [1.5*EClock-1 rgb .5] [2*EClock-1 rgb 1] [1.0 rgb 1] } scale .25 translate (1*EAnimate)*EClock*z warp {turbulence 1 } translate (-1*EAnimate)*EClock*z rotate 323456*ERand+567567 scale <1/.2,1/(EClock*2.5+.5),1/.2> rotate -(Rand+C*123456) rotate -(Rand*360) } #end } } scale <.2,EClock*2.5+.5,.2> translate <0,-.5,0> } //plane {y,-.1 pigment {Clear}} translate int(rand(Rand)*ERadius*2)*y/4 //translate EClock*3*y rotate Rand+C*123456 rotate Rand*360 } #declare C = C + 1; #end */ scale ERadius translate ETrans } #end //Explosion (EX,EY,EZ,EColor,ERand,EAnimate,ERadius,EClock,EStart,EEnd,EDetail,EShock) #declare Clock = pow(clock,1/2); Explosion (<0,0,0>,<1,.5,0>, //Position,Color 3428754, //Random 1.5, //Animate .75, //Radius Clock,.25,1, //Clock,Start,Stop 1.5, //Detail off //Shockwave ) global_settings { max_trace_level 20 }