#version 3.1; #macro mC(vRGB) colour rgb vRGB #end #macro mG(vRGB) colour rgb ( (0.3*vRGB.x) + (0.59*vRGB.y) + (0.11*vRGB.z) ) #end plane { x,0 pigment { colour rgb 0 } finish { ambient 0 diffuse 0 reflection 0 } hollow } plane { z,5 texture { pigment { checker pigment { hexagon colour rgb 0 colour rgb 1/2 colour rgb 1 scale 1/3 } pigment { hexagon colour rgb <1,0,0> colour rgb <0,1,0> colour rgb <0,0,1> scale 1/3 } scale 3 } finish { ambient 0 diffuse 1 reflection 0 } rotate 90*x } hollow } global_settings { assumed_gamma 1.0 } #declare W = 14; camera { orthographic up <0, W*0.75, 0> right location <0, 0, -100> look_at <0, 0, 0> } #declare vBox = <0.0, 0.0, 1.0>; #declare vCyl1 = <1.0, 1.0, 0.0>; #declare vCyl2 = <1.0, 0.0, 1.0>; #declare vLight1 = <0.7, 0.7, 0.7>; #declare vLight2 = <0.0, 2.0, 0.0>; #declare vSphere1 = <1.0, 0.0, 0.0>; #declare vSphere2 = <1.0, 1.0, 1.0>; #macro mScene() union { sphere { <0.0, 0.0, 0.0>, 2 finish { phong 1 ambient .2 diffuse 0.6 } pigment { radial frequency 3 colour_map { [0 cSphere1] [1 cSphere2] } rotate y*10 } } box { <-2.0, -0.2, -2.0>, <2.0, 0.2, 2.0> pigment { cBox } finish { ambient cBox diffuse 0.8 } rotate <-20, 30, 0> } cylinder { <0,-3,0>,<0,3,0>,.6 finish { ambient .2 diffuse .8 } pigment { gradient y frequency 2 colour_map { [0/2 cCyl1] [2/2 cCyl2] } } rotate <00, -15, 15> } light_source { <-3, 5, -20> cLight1 } light_source { <0, -5, -20> cLight2 } //I tried to make it _shadowless_ but it didn't work at all. reason is obvious. pigment { transmit 15 } } #end //Left Side image. #declare cSphere1 = mG(vSphere1); #declare cSphere2 = mG(vSphere2); #declare cBox = mG(vBox); #declare cLight1 = mG(vLight1); #declare cLight2 = mG(vLight2); #declare cCyl1 = mG(vCyl1); #declare cCyl2 = mG(vCyl2); object { mScene() translate <-4,0,0> } //End //Right Side Image. #declare cSphere1 = mC(vSphere1); #declare cSphere2 = mC(vSphere2); #declare cBox = mC(vBox); #declare cLight1 = mC(vLight1); #declare cLight2 = mC(vLight2); #declare cCyl1 = mC(vCyl1); #declare cCyl2 = mC(vCyl2); object { mScene() translate <4,0,0> }