// Last edited on 2023-12-25 11:54:33 by stolfi background{ color rgb < 0.75, 0.80, 0.95 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.40, 0.70, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.60 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 1.00, 1.00 > } finish{ diffuse 0.2 reflection 0.7*< 1.00, 1.00, 1.00 > ambient 0.1 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.00, 0.00, 0.00 >, color rgb < 1.00, 1.00, 1.0 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare r_cilindro_maior = 0.5; #declare r_cilindro_menor = 0.3; #declare r_bola = 0.7; #macro cabeca() union{ object{sphere{<0,0,0>, 2 texture{tx_plastico}}} object{sphere{<2,0,0>,0.5 texture{tx_plastico}}} } #end #macro subpescoco(c3,c4) #local osso = cylinder{<0,0,0>,<0,0,3>,r_cilindro_maior texture{tx_plastico}} #local cab = object{cabeca()} #local articulacao = sphere{<0,0,0>, r_bola texture{tx_plastico}} union{ object{osso} object{articulacao translate<0,0,3>} object{cab rotate c4*y rotate c3*z translate <0,0,3>} } #end #macro pescoco(c2,c3,c4) #local osso = cylinder{<0,0,0>,<0,0,2>,r_cilindro_maior texture{tx_plastico}} #local subpesc = object{subpescoco(c3,c4)} #local articulacao = sphere{<0,0,0>, r_bola texture{tx_plastico}} union{ object{articulacao} object{osso} object{articulacao translate<0,0,2>} object{subpesc rotate c2*y translate <0,0,2>} } #end #macro pata() #local dedo1 = cylinder{<0,0,0>,<0,2,0.5>,r_cilindro_menor texture{tx_plastico}} #local dedo2 = cylinder{<0,0,0>,<0,2,0>,r_cilindro_menor texture{tx_plastico}} #local dedo3 = cylinder{<0,0,0>,<0,2,-0.5>,r_cilindro_menor texture{tx_plastico}} union{ object{dedo1} object{dedo2} object{dedo3} } #end #macro subbraco(b3,b4) #local osso = cylinder{<0,0,0>,<0,4,0>,r_cilindro_maior texture{tx_plastico}} #local subpata = object{pata()} #local articulacao = sphere{<0,0,0>, r_bola texture{tx_plastico}} union{ object{osso} object{articulacao translate<0,4,0>} object{subpata rotate b3*x rotate b4*y translate <0,4,0>} } #end #macro braco(b2, b3, b4) #local osso = cylinder{<0,0,0>,<0,4,0>,r_cilindro_maior texture{tx_plastico}} #local sub = object{subbraco(b3,b4)} #local articulacao = sphere{<0,0,0>, r_bola texture{tx_plastico}} union{ object{articulacao} object{osso} object{articulacao translate<0,4,0>} object{sub rotate b2*z translate <0,4,0>} } #end #macro unir_corpo(c1,c2,c3,c4,be11,be12,be13,be14,be21,be22,be23,be24,bd11,bd12,bd13,bd14,bd21,bd22,bd23,bd24) union{ object{box{<-1,-2,-5>, <1,2,5> texture{tx_plastico}}} object{braco(bd12,bd13,bd14) rotate bd11*z translate<0,2,4>} object{braco(be12,be13,be14) rotate be11*z scale<+1,-1,+1> translate<0,-2,4>} object{braco(bd22,bd23,bd24) rotate bd21*z scale<+1,+1,-1> translate<0,2,-4>} object{braco(be22,be23,be24) rotate be21*z scale<+1,-1,-1> translate<0,-2,-4>} object{pescoco(c2,c3,c4) rotate c1*y translate<0,0,5>} } #end #include "eixos.inc" union{ // object{ eixos(3.00) } #local c1 = 45*sin(radians(45)*clock*8); #local c2 = 45*sin(radians(45)*clock*8); #local c3 = 0; #local c4 = 0; #local be11 = 45*sin(radians(45)*clock*8); #local be12 = 45*sin(radians(45)*clock*8); #local be13 = 0; #local be14 = 0; #local be21 = 45*sin(radians(45)*clock*8); #local be22 = 45*sin(radians(45)*clock*8); #local be23 = 0; #local be24 = 0; #local bd11 = -45*sin(radians(45)*clock*8); #local bd12 = -45*sin(radians(45)*clock*8); #local bd13 = 0; #local bd14 = 0; #local bd21 = -45*sin(radians(45)*clock*8); #local bd22 = -45*sin(radians(45)*clock*8); #local bd23 = 0; #local bd24 = 0; object{unir_corpo(c1,c2,c3,c4,be11,be12,be13,be14,be21,be22,be23,be24,bd11,bd12,bd13,bd14,bd21,bd22,bd23,bd24)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 3.00 >; #declare raio_cena = 20.0; #declare dir_camera = < 7, 5, 3 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)