// Modello Filo D'Erba per POV-Ray 3.6 global_settings { adc_bailout 0.003922 ambient_light <1,1,1> assumed_gamma 1.9 hf_gray_16 off irid_wavelength <0.247059,0.176471,0.137255> max_intersections 64 max_trace_level 10 number_of_waves 10} background { color <0.000,0.000,0.000> } #declare distanza=2.1; // indica la distanza dall'aiola #declare camY=7.7-5.7*distanza; #declare camZ=0.35*distanza; camera { location < 0.000, camY, camZ> sky < 0.00000, 0.00000, 1.00000> up < 0.0, 0.0, 1.0> right < 1.35836, 0.0, 0.0> angle 40.00000 look_at < 0.000, 7.7001, 0.000> } light_source { <0.0, 0.0, 0.0> color rgb <1, 1, 1> translate <0.5, -4.0, 4.0> } fog { fog_type 2 distance 30 color rgbf <0.87, 1, 1, 0.9> up <0,0,1> fog_offset 1 fog_alt 0.2 } #declare Cielo = material { texture { pigment { bozo color_map { [ 0.0 rgbft <0.192157, 0.596078, 0.8, 0.0, 0.0> ] [ 0.36 rgbft <0.454902, 0.737255, 0.870588, 0.0, 0.0> ] [ 0.66 rgbft <0.9, 0.9, 0.95, 0.0, 0.0> ] [ 1.0 rgbft <0.839216, 0.839216, 0.839216, 0.0, 0.0> ] } turbulence 0.56 //0.56 ramp_wave scale 7 } finish { ambient 0.453233 diffuse 0.532367 } } } #declare Terriccio = material { texture { pigment { bozo color_map { [ 0.0 rgbft <0.501961, 0.251, 0.0, 0.0, 0.0> ] [ 0.33 rgbft <0.756863, 0.3804, 0.0, 0.0, 0.0> ] [ 0.66 rgbft <0.501961, 0.2353, 0.0, 0.0, 0.0> ] [ 1.0 rgbft <0.549, 0.27451, 0.0, 0.0, 0.0> ] } turbulence 0.6 ramp_wave } finish { ambient 0.7266 diffuse 0.4676 } } } sphere {0*x+0*y+0*z, 50 material {Cielo} hollow} plane { z,0 material {Terriccio} } // Funzione "portante" del filo d'erba: -x^2 (da spostare in modo che parta dall'origine) // Dominio x: [-2, 0.5] #declare dx=0.1; // Livello di dettaglio: dieci oggetti per unità di lunghezza danno una buona resa // Dichiaro la macro che crea l'oggetto Filo D'Erba #macro Crea_Filo (Lunghezza, Scala, TransX, TransY, Orient) union{ //Costruisco il filo d'erba #declare varX=-2; #declare base=0.005; #declare dec=base/1.25/Lunghezza*dx; #while (varX rotate Orient*z translate TransX*x translate TransY*y pigment { color rgb <0.0, 0.501961, 0.25098> } finish { ambient 1 //0.920833 diffuse 0.3741 brilliance 1.428333 } } #end // Fine macro // Qua inizia il 'main' #declare seme1=seed(1); #declare Fili=1600; // Numero di fili d'erba da disporre #while (Fili!=0) Crea_Filo(rand(seme1)*1.5+1,rand(seme1),rand(seme1)-0.5,(rand(seme1)-0.5)*3,rand(seme1)*360) #declare Fili=Fili-1; #end