#include "colors.inc" camera { location <0,-4.5,-17> look_at <0,-4.5,0> } light_source { <0,100,-75> White } light_source { <5,0,-20> rgb .5 shadowless } light_source { <-5,0,20> rgb .2 shadowless } #declare ROBOT_RED = texture { pigment { rgb <1,0,0> } finish { ambient .2 diffuse .45 specular 1 roughness .05 reflection .01} } #declare ROBOT_ORANGE = texture { pigment { rgb <1,.5,0> } finish { ambient .3 diffuse .5 specular .8 roughness .05 reflection .01} } #declare ROBOT_GRAY = texture { pigment { rgb .5 } finish { ambient .3 diffuse .6 specular .5 roughness .1 reflection .05 } } #declare should_pad = union { difference { sphere { 0,1 scale <3,1,1> } box { <-3,1,1>,<0,-1,-1> } box { <-.1,-1.1,1>,<3,0,-1> } cylinder { <0,0,-1.1>,<0,0,1.1>,.5 scale <1,2,1> translate y*1.2 } cylinder { <0,0,1.1>,<0,0,-1.1>,.2 scale <5,1,1> translate x*2 } } intersection { difference { sphere { 0,1 scale <3,1,1> } box { <-3,1,1>,<0,-1,-1> } box { <-.1,1.1,1>,<3,0,-1> } } cylinder { <.5,0,1.1>,<.5,0,-1.1>,.5 } } } #declare Shoulder_Pad = difference { object { should_pad scale 1.75} object { should_pad scale 1.7 translate <-.1,-.1,0> } } #declare Lower_Arm = union { union { difference { sphere { 0,1 scale <1,2,1> } box { <-1,-.5,-1>,<1,-2.1,1> } } difference { sphere { 0,.91 } cylinder { <0,0,0>,<0,-1.1,0>,.75 } translate y*-.4 } } cylinder { <0,1.5,0>,<0,2.3,0>,.3 texture { ROBOT_GRAY } } sphere { <0,2.45,0>,.4 } texture { ROBOT_RED } } #declare Upper_Arm = union { cylinder { <0,2.6,0>,<0,4,0>,.3 texture { ROBOT_GRAY } } union { sphere { 0,1.5 texture { ROBOT_ORANGE } } object { Shoulder_Pad } translate y*5.5 texture { ROBOT_RED } } } #declare Left_Arm = union { object { Upper_Arm } object { Lower_Arm } } #declare Right_Arm = union { object { Upper_Arm } object { Lower_Arm } scale <-1,1,1> } #declare neck_rest = prism{ cubic_spline -1, 1, 8, <-3,5>, <3,5>, <6,0>, <0,-5>, <-6,0>, <-3,5>, <3,5>, <6,0> scale <.5,1,.5> } #declare Body = union { difference { object { neck_rest } object { neck_rest scale <.9,1.2,.9> } cylinder { <-4,0,0>,<4,0,0>,3 scale <1,.5,1.5> translate <0,1.5,2> } texture { ROBOT_ORANGE } rotate x*-15 scale <.7,1,1> translate <0,2.0,-.5> } union { difference { sphere { 0,3 } box { <-3,2,-3>,<3,3.1,3> } box { <-3,-1.5,-3>,<3,-3.1,3> } cylinder { <0,0,3>,<0,0,-3>,sqrt(6.75/4) scale <1,.8,1> translate y*-2 } } intersection { difference { sphere { 0,3 } box { <-3,-1.5,-3>, <3,3.1,3> } } union { cylinder { <-3*sqrt(6.75/16),0,3>,<-3*sqrt(6.75/16),0,-3>,sqrt(6.75/16) } cylinder { <3*sqrt(6.75/16),0,3>,<3*sqrt(6.75/16),0,-3>,sqrt(6.75/16) } translate y*-1.5 } } } union { difference { sphere { 0,2 } box { <2,-.9,2>,<-2,-2,-2> } cylinder { <0,0,-2>,<0,0,2>,sqrt(2.19/4) scale <1,1,1> translate y*-1.2 } } intersection { difference { sphere { 0,2 } box { <2,-.9,2>,<-2,2,-2> } } union { cylinder { <-3*sqrt(2.19/16),0,3>,<-3*sqrt(2.19/16),0,-3>,sqrt(2.19/16) } cylinder { <3*sqrt(2.19/16),0,3>,<3*sqrt(2.19/16),0,-3>,sqrt(2.19/16) } translate -y*.9 } } texture { ROBOT_ORANGE } scale <1.25,1,1.25> translate -y } cylinder { <0,-1.5,0>,<0,-3,0>,1.5 texture { ROBOT_GRAY } scale <1,1,1.25> } texture { ROBOT_RED } scale <1,1,.75> } #declare Waist = union { sphere { 0,2 clipped_by { box { <-2,0,-2>,<2,-2,2> } } scale <1,.85,1> } torus { 1.6,.45 texture { ROBOT_ORANGE } scale <1,.7,1> } texture { ROBOT_RED } scale <1,1,.75> } #declare Thigh = union { cone { <0,0,0>,.5, <0,-3,0>,.4 texture { ROBOT_GRAY } } sphere { <0,-3,0>,.6 texture { ROBOT_ORANGE } } } #declare Leg = union { difference { sphere { 0,1 clipped_by { box {<-1,0,-1>,<1,1,1>} } scale <1,4,1> } cylinder { <-2,0,0>,<2,0,0>,.75 scale <1,1,1.5> translate <0,-.2,-.9> } cylinder { <-1,0,0>,<1,0,0>,.8 translate <0,3.7,.2> } } intersection { sphere { 0,1 scale <1,4,1> } cylinder { <-2,.4,.55>,<2,.4,.55>,.6 } } texture { ROBOT_RED } translate -y*4 } #declare Shoe = union { sphere { 0,1 } sphere { 0,1 clipped_by { box {<-1,1,0>,<1,-1,-1>} } scale <1,1,2> } clipped_by { box {<-1,1,1>,<1,0,-2>} } texture { ROBOT_ORANGE } translate <0,-1,0> } #declare Foot = union { object { Leg } object { Shoe translate -y*3.5 } } #declare EyeGlass = prism { cubic_spline -1,1, 10, <.7,.5>,<.7,-.5>, <-.4,-.5>,<-1,-.2>, <-1.1,.3>,<-.9,.5>, <-.3,.6>,<.7,.5>, <.7,-.5>,<-.4,-.5> rotate x*-90 } #declare EyeWear = difference { intersection { sphere { 0,.95 } merge { object { EyeGlass } box { <.7,.3,-1>,<1.5,-.3,1> } scale <.3,.25,1> translate <.6,0,0> } } sphere { 0, .925 } clipped_by { box { <-1,-1,0>,<1,1,-1> } } pigment { rgbt <0,2,0,.8> } finish { ambient .3 diffuse .5 specular .7 roughness .02 } } #declare Ear = union { difference { sphere { 0,.3 clipped_by { box {<-.5,-.5,.5>,<.5,.5,0>}} } cylinder { <0,0,-.1>,<0,0,.1>,.25 } texture { ROBOT_ORANGE } } cylinder { <0,0,.05>,<0,0,.07>,.25 pigment { rgb <0,.3,1> } finish { ambient 1 diffuse 1 } } scale <1,1,2> } #declare Head = union { difference { union { sphere { 0, 1 } torus { 1,.1 texture { ROBOT_ORANGE } rotate z*90 scale <1.5,1,1> } } cylinder { <-2,-.75,-.75>,<2,-.75,-.75>,1 } texture { ROBOT_RED } } sphere { 0, .95 texture { ROBOT_GRAY } } object { Ear translate <.8,0,-.25> } object { Ear translate <-.8,0,-.25> } object { EyeWear translate -z*.05 } } union { object { Head scale 1.3 translate <0,1.9,-.25> } object { Body scale (3/4)} object { Right_Arm translate <(-sqrt(6.75)*3/4)-1.25,-4.25,0> } object { Left_Arm translate <(sqrt(6.75)*3/4)+1.25,-4.25,0> } object { Waist translate y*-2.5 scale <.85,.95,.85> } union { // Right foot object { Thigh rotate <1,0,5> translate <.8,-3,0> scale <1.2,1,1.2> } object { Foot scale <1.25,1.5,1.25> rotate <0,-5,5> translate <1.2,-5,-.2> } } union { // Left foot object { Thigh rotate <1,0,5> translate <.8,-3,0> scale <1.2,1,1.2> } object { Foot scale <1.25,1.5,1.25> rotate <0,-5,5> translate <1.2,-5,-.2> } scale <-1,1,1> } }