//Mick's Grass.inc #declare GrassTex = texture{ pigment { granite color_map { [0.0 color rgb <0.5, 0.5, 0.2>*3] [0.25 color rgb <0.7, 1, 0.2>*2.5] [0.5 color rgb <.98,.95,.85>*2] [0.75 color rgb 3] } scale 0.00125 } finish{ambient 0.2 specular .5} } #declare R = seed(3243); #declare blade = mesh {//creates a single blade of grass #declare No_Segs = 10; #declare C = 0; #declare Seg_length = .35; #declare Rot = 90-(15+(rand(R)*20));//controls the bend of the grass #declare Ox = 0; #declare Oy =0; #declare Nx = Seg_length; #declare Ny = Seg_length; #declare Z= 0.15; #while (C } triangle{ } #else triangle{ } #end #declare Rot = Rot-pow((rand(R)),2); #declare Ox = Nx; #declare Oy = Ny; #declare Z=Z-0.012; #declare Seg_length = Seg_length +.01; #declare C=C+1; #end //translate y*.05 texture{GrassTex} }//end mesh #declare Hor = -5; #declare Ver = -5; #declare Patch = union{// creates a patch of grass #while (Hor<5) #while (Ver<5) object{blade rotate y*-((Ver*20)*rand(R)*120) scale y *1+rand(R) translate } #declare Ver = Ver +1; #end #declare Ver= -3; #declare Hor = Hor+1; #end }//end of union