// // pov-ray cloud analizer. J.W. Stolk, 2006. // // a tool to (manually) determin the minimal bounding box for a cloud. // the cloud is shown in its bounding box. after rendering this file, you can // choose a new (smaler) bounding box, depending on the shape of the cloud. // // the df3 file you want to analize: #declare cloud_name = "cloud1.df3"; // ------------------------------------------------------------------------ // | Render instructions: | // ------------------------------------------------------------------------ // // megapov showcloud.pov +w400 +h400 +a0.1 +j +FN // megapov showcloud.pov +w800 +h800 +a0.1 +j +FN // ------------------------------------------------------------------------ // | Camera: (top view, looking towards -Z) | // ------------------------------------------------------------------------ #declare w = 10000; // (note: size of one of the 4 tiles!) camera{ orthographic location <0,0,100000> right -y*w*2*1.1 up -x*w*2*1.1 look_at <0,0, -100000> } global_settings { max_trace_level 256 } // ------------------------------------------------------------------------ // | Macro's: (functies die verderop in de file gebrukt worden) | // ------------------------------------------------------------------------ #macro macro_text( pos, mytext ) text{ ttf "crystal.ttf", mytext, 0.1, 0 translate <0.2,0.1,0> scale 600 translate pos+<0,0,2000> pigment{rgb <1,1,1>} finish {ambient 1} } #end // ------------------------------------------------------------------------ // | Raster: | // ------------------------------------------------------------------------ #declare d = 200; #declare grid = 0; #declare my_grid = union { #while( grid < 5000) #declare grid = grid + 1000; cylinder { <-w/2, +grid, -90000>, 50 pigment{rgb <0.3,0.3,0.3>} finish {ambient 1} } cylinder { <-w/2, -grid, -90000>, 50 pigment{rgb <0.3,0.3,0.3>} finish {ambient 1} } cylinder { <+grid, -w/2, -90000>, <+grid, w/2, -90000> 50 pigment{rgb <0.3,0.3,0.3>} finish {ambient 1} } cylinder { <-grid, -w/2, -90000>, <-grid, w/2, -90000> 50 pigment{rgb <0.3,0.3,0.3>} finish {ambient 1} } #end cylinder { <-w/2, 0, -90000>, 50 pigment{rgb <1,0.3,0.3>} finish {ambient 1} } cylinder { <0, -w/2, -90000>, <0, w/2, -90000> 50 pigment{rgb <1,0.3,0.3>} finish {ambient 1} } } object{ my_grid translate <-w/2-w/20, w/2+w/20,0> } // top left X/Y macro_text( <-w*0.06, w*0.5333, 0>, "+X" ) macro_text( <-w*0.5888, w*1.05, 0>, "+Y" ) object{ my_grid translate < w/2+w/20, w/2+w/20,0> } // top right Z/Y macro_text( < w*1.04, w*0.5333, 0>, "+Z" ) macro_text( < w*0.5222, w*1.05, 0>, "+Y" ) object{ my_grid translate <-w/2-w/20,-w/2-w/20,0> } // bottom left X/Z macro_text( <-w*0.06, -w*0.5666, 0>, "+X" ) macro_text( <-w*0.5888, -w*0.05, 0>, "+Z" ) // ------------------------------------------------------------------------ // | Cloud: | // ------------------------------------------------------------------------ #include "colors.inc" #include "functions.inc" #declare Intervals=1; // cloud media intervals 1 for tests and 3 for the final render //global_settings { // assumed_gamma 1 // max_trace_level 256 // do we need this !? //} // Common stuff: #declare C_SkyBlue_05 = rgb < 91,113,171>/255; #declare C_SkyBlue_06 = rgb <161,184,213>/255; #declare C_Sun = rgb <237,194,117>/255; light_source { -z*100000 C_Sun*5 } #macro GammaColor(Color,Gamma) rgb #end #declare Cloud=box{<0,0,0>,<1,1,1> texture{pigment{Clear}finish{ambient 0 diffuse 0}} //texture{pigment{Red }finish{ambient 0 diffuse 1}} // for testing ! hollow interior{ media{ scattering{1,GammaColor(C_Sun,0.3)*0.0003 *0.6} // ? intervals Intervals density{ density_file df3 cloud_name interpolate 1 } } } translate -0.5 } object{Cloud scale w translate <-w/2-w/20, w/2+w/20,0>} // top left X/Y object{Cloud scale w rotate y*90 translate < w/2+w/20, w/2+w/20,0>} // top right Z/Y object{Cloud scale w rotate -x*90 translate <-w/2-w/20,-w/2-w/20,0>} // bottom left X/Z