// Hans-Jakob Schwer // povray 3.6 scenefile // generates a semi-transparent blob-object with turning boxes inside #include "colors.inc" #include "glass.inc" #include "woods.inc" //#include "baum_alt_light.inc" #include "rand.inc" global_settings {photons { count 1e6 } max_trace_level 12} #declare M_Wood18B = colour_map { [0.00 0.25 color rgbf < 0.50, 0.26, 0.12, 0.10> color rgbf < 0.54, 0.29, 0.13, 0.20>] [0.25 0.40 color rgbf < 0.54, 0.29, 0.13, 0.20> color rgbf < 0.55, 0.28, 0.10, 0.70>] [0.40 0.50 color rgbf < 0.55, 0.28, 0.10, 0.70> color rgbf < 0.50, 0.23, 0.15, 0.95>] [0.50 0.70 color rgbf < 0.50, 0.23, 0.15, 0.95> color rgbf < 0.56, 0.29, 0.17, 0.70>] [0.70 0.98 color rgbf < 0.56, 0.29, 0.17, 0.70> color rgbf < 0.54, 0.29, 0.13, 0.20>] [0.98 1.00 color rgbf < 0.54, 0.29, 0.13, 0.20> color rgbf < 0.50, 0.26, 0.12, 0.10>] } #declare Floor_Texture = texture { pigment { P_WoodGrain18A color_map { M_Wood18A }}} texture { pigment { P_WoodGrain12A color_map { M_Wood18B }}} texture { pigment { P_WoodGrain12B color_map { M_Wood18B }} finish { reflection 0.25 ior .5 phong 2 } } camera { location <0.2, 0.5, -1.75> look_at 0 // angle 36 } #declare Dist=120.0; light_source {< -15, 120, -120> color White fade_distance Dist fade_power 2 // area_light <-40, 0, -40>, <40, 0, 40>, 3, 3 // adaptive 1 // jitter } #declare nrRndStr = 0; #macro BoxenScharr() #local maxX = 1.0; #local maxY = 1.0; #local maxZ = 1.0; #local sizeX = 0.4; #local sizeY = 0.4; #local sizeZ = 0.4; #local minSize = 0.4; #local nTeilboxen = 50; #local aktTBox = 0; // zufallstr. waehlen #local aktStr = RdmA; #if(nrRndStr = 1) #local aktStr = RdmB; #end #if(nrRndStr = 2) #local aktStr = RdmC; #end #if(nrRndStr = 3) #local aktStr = RdmD; #end #declare nrRndStr = nrRndStr + 1; union { #while (aktTBox < nTeilboxen) #local aktTBox = aktTBox + 1; #local aposX = SRand(aktStr) * maxX - maxX/2; #local aposY = SRand(aktStr) * maxY - maxY/2; #local aposZ = SRand(aktStr) * maxZ - maxZ/2; #local asizeX = SRand(aktStr) * sizeX + minSize; #local asizeY = SRand(aktStr) * sizeY + minSize; #local asizeZ = SRand(aktStr) * sizeZ + minSize; box { } #end } #end #macro rundBoxen( posx, posy, posz, scale_) object { intersection { intersection { BoxenScharr() object { BoxenScharr() rotate } } sphere { <0,0,0> 0.8 } } texture { Floor_Texture } scale translate // texture { T_Glass2 } interior {I_Glass caustics 1} } #end #declare abs_ = 1.1; #macro blobber(size_, teiler, abstand, th) blob { threshold th sphere { <0,0,0>, size_, 1 } #local ab = abstand; sphere { , teiler, 1 } sphere { , teiler, 1 } // rotate<42,42,0> sphere { , teiler, 1 } // rotate<42,0,42> sphere { , teiler, 1 } // rotate<0,42,42> } #end #declare doppelblob = object { difference { object { blobber(1, 0.95, abs_, 0.65) } object { blobber(0.8, 0.8, abs_, 0.65) // sphere { <0,0,0> // 0.4 } } } texture { T_Glass2 } interior {I_Glass caustics 1} } #declare boxen = object { union { rundBoxen( 0, 0, 0, 0.4) rundBoxen( abs_*-0.66, abs_*0.66, abs_*0.66, 0.3) rundBoxen( abs_*0.66, abs_*-0.66, abs_*0.66, 0.3) // rundBoxen( abs_*0.66, abs_*0.66, abs_*0.66, 0.3) // rundBoxen( abs_*-0.66, abs_*-0.66, abs_*-0.66, 0.3) } } object { union { object{doppelblob} object{boxen} } rotate<0,clock*360,clock*360> } //plane { y, -1.5 texture { Floor_Texture }}