By: Tim Voght tvoght@indy.net Completed: 12/21/94 File Name: TVJACKS.JPG Programs Used: PovRay 2.2, PovCAD 4.0, raw2pov 1.8 Comments: After seeing last months competition, I realized that I had a great deal to learn about textures. The concrete here was what I found to be a real challenge and I spent a lot of time experimenting. I can't say I am satisfied with the results, but I learned a lot. I would TRULY welcome comments and suggestions from fellow competitors on texturing techniques. The modelling is pretty straight-forward. I extruded a grass blade using PovCAD and converted the raw output to Pov format using the excellent raw2pov utility. All grass blades are scaled and rotated versions of the same model. If I were going to do close-up shots of the grass, I would probably try to apply some sort of green and brown wood texture to it. See my other entry, TVJACKS2.JPG for a much different view of the same scene. ---------------------------TVJACKS.POV-------------------------------------- #include "colors.inc" #include "shapes.inc" #include "textures.inc" #include "grass.inc" camera { location <-20, 20, -20> direction 10*z up y right x*1.33 look_at <25, 0, 15> } light_source { <15, 30, 15> color White } declare concrete = texture { pigment { marble turbulence 1 color_map { [0.90 color Gray75 ] [0.99 color Gray55 ] [1.00 color Brown ] } } scale <.1,.1,.1> } declare walk_segment = object { union { difference { box { <.125,-3,0>, <29.875,0,30> } box { <.124,-.25,-.1>, <.375,.1,30.1> } box { <29.625,-.25,-.1>, <29.876,.1,30.1> } // these subtracted ellipsoids represent voids left by rocks in concrete sphere { <0,0,0>, 1 scale <.3,.3,.2> rotate y*27 translate <.5,0,17.3> } sphere { <0,0,0>, 1 scale <.4,.2,.5> rotate y*32 translate <29,0,19.9> } sphere { <0,0,0>, 1 scale <.3,.3,.5> rotate y*12 translate <20.7,0,16> } sphere { <0,0,0>, 1 scale <.2,.2,.4> rotate y*7 translate <19.3,0,11> } sphere { <0,0,0>, 1 scale <.15,.2,.3> rotate y*65 translate <22.7,0,11.6> } sphere { <0,0,0>, 1 scale <.1,.1,.3> rotate y*36 translate <23.6,0,12.3> } sphere { <0,0,0>, 1 scale <.3,.3,.4> rotate y*13 translate <.2,0,14.2> } sphere { <0,0,0>, 1 scale <.2,.3,.3> rotate y*0 translate <3.6,0,16.2> } sphere { <0,0,0>, 1 scale <.4,.3,.5> rotate y*69 translate <28.7,0,23.2> } } cylinder { <.375,-.25,0>, <.375,-.25,30>, .25 } cylinder { <29.625,-.25,0>, <29.625,-.25,30>, .25 } } texture { concrete } normal { bumps .8 scale 0.1 } finish { ambient .4 } bounded_by { box { <.124,-3,-.01>, <29.876,0.01,30.01> } } } declare grass_clump = object { union { object { grass_blade } object { grass_blade scale .7 rotate y*85 } object { grass_blade scale .4 rotate y*134 } object { grass_blade scale .5 rotate y*205 } object { grass_blade scale .7 rotate y*284 } object { grass_blade scale .6 rotate y*321 } } } declare jack = object { union { cone { <0, 0, 0>, .0625 <0, .375, 0>, .015625 } cone { <0, 0, 0>, .0625 <0, -.375, 0>, .015625 } cone { <0, 0, 0>, .0625 < .375, 0, 0>, .015625 } cone { <0, 0, 0>, .0625 <-.375, 0, 0>, .015625 } cone { <0, 0, 0>, .0625 <0, 0, .375>, .015625 } cone { <0, 0, 0>, .0625 <0, 0, -.375>, .015625 } sphere { <-.3125, 0, 0>, .0625 } sphere { < .3125, 0, 0>, .0625 } sphere { <0, 0, -.3125>, .0625 } sphere { <0, 0, .3125>, .0625 } } texture { Silver3 } finish {phong 0.9 phong_size 60 metallic} bounded_by { sphere { <0,0,0>, .3751 } } translate y*.375 // raise to ground level rotate y*45 // place in stable resting position rotate z*51 } declare rubber_ball = object { union { sphere { <0,0,0>, .5 } cylinder { <-.01,0,0>, <.01,0,0>, .515 } // mold line } pigment { color red 1 green 0.2 blue 0.2 } normal {bumps 0.1 scale 0.05} finish {specular 0.7 roughness 0.1 ambient .5 } rotate <0,14,41> // dis-orient mold line translate y*.5 bounded_by { sphere { <0,.5,0>, .515 } } } //--------- The scene // sidewalk object { walk_segment translate x*0 } object { walk_segment translate x*30 } object { grass_clump scale .7 rotate y*76 translate x*30 translate z*14.1 } object { grass_clump scale .6 translate x*30 translate z*20.2 } object { grass_blade scale .4 translate x*30 translate z*23.0 } object { grass_blade scale .3 rotate y*49 translate x*30 translate z*19.1 } // scatter jacks around object { jack rotate y*23 translate x*26.5 translate z*14 } object { jack rotate y*138 translate x*24 translate z*18.5 } object { jack rotate y*43 translate x*22 translate z*13.5 } object { jack rotate y*265 translate x*22.2 translate z*17.1} object { jack rotate y*332 translate x*24 translate z*15.6 } object { jack rotate y*49 translate x*25.6 translate z*17.4 } object { jack rotate y*145 translate x*27.4 translate z*15.9 } object { jack rotate y*81 translate x*22.2 translate z*14.1 } object { jack rotate y*290 translate x*23.3 translate z*11.2 } object { jack rotate y*210 translate x*26.6 translate z*13.6 } object { jack rotate y*110 translate x*25.8 translate z*12.2 } object { jack rotate y*0 translate x*27.6 translate z*12.6 } // place the ball object { rubber_ball translate <25,0,15> } -----------------------------------------------------------------------------