// Last edited on 2023-12-25 13:02:39 by stolfi background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_rosa = texture{ pigment{ color rgb < 0.90, 0.40, 0.70 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #macro subMembro(e13, e14, e15) #local tamanhoSubMembro = <0,0,4>; #local objSubMembro = cylinder{ <0,0,0>, tamanhoSubMembro, 0.5 texture{ tx_rosa } } #local objDedo = cylinder{ <0,0,0>, <0,0,2>, 0.3 texture{ tx_rosa } } union{ object{ objSubMembro } object{ objDedo rotate e13 * y translate tamanhoSubMembro } object{ objDedo rotate e14 * y translate tamanhoSubMembro } object{ objDedo rotate e15 * y translate tamanhoSubMembro } } #end #macro membro(e12, e13, e14, e15) #local tamanhoMembro = <0,0,4>; #local objMembro = cylinder{ <0,0,0>, tamanhoMembro, 0.5 texture{ tx_rosa } } #local objSubMembro = object{ subMembro(e13, e14, e15) } union{ object{ objMembro } object{ objSubMembro rotate e12 * y translate tamanhoMembro } } #end #macro subPecoco(pk3) #local tamanhoSubPescoco = <0,0,3>; #local objSubPecoco = cylinder{ <0,0,0>, tamanhoSubPescoco, 0.5 texture{ tx_rosa } } #local objCabeca = sphere{ <0,0,0>, 2 } union{ object{ objSubPecoco } object{ objCabeca rotate pk3 * y translate tamanhoSubPescoco texture{ tx_rosa } } } #end #macro pescoco(pk2, pk3) #local tamanhoPescoco = <0,0,3>; #local objPecoco = cylinder{ <0,0,0>, tamanhoPescoco, 0.5 texture{ tx_rosa } } #local objSubPecoco = object{ subPecoco(pk3) } union{ object{ objPecoco } object{ objSubPecoco rotate pk2 * y translate tamanhoPescoco } } #end #macro robo( posFim, e11, e12, e13, e14, e15, e21, e22, e23, e24, e25, d11, d12, d13, d14, d15, d21, d22, d23, d24, d25, pk1, pk2, pk3 ) #local troncoPrincipal = cylinder{ <0,0,0>, posFim, 5 texture{ tx_rosa } } #local objPernaEsquerda = object{ membro(e12, e13, e14, e15) } #local objPernaDireita = object{ membro(d12, d13, d14, d15) } #local objMaoEsquerda = object{ membro(e22, e23, e24, e25) } #local objMaoDireita = object{ membro(d22, d23, d24, d25) } #local objPescoco = object{ pescoco(pk2, pk3) } union{ object{ troncoPrincipal } object{ objPernaEsquerda rotate e11 * y translate posFim - <4.5,0,0> } object{ objPernaDireita rotate d11 * y translate posFim + <4.5,0,0> } object{ objMaoEsquerda rotate e21 * y translate <0,0,0> - <4.5,0,0> scale <+1,+1,-1> } object{ objMaoDireita rotate d21 * y translate <0,0,0> + <4.5,0,0> scale <+1,+1,-1> } object{ objPescoco rotate pk1 * y translate <0,0,0> scale <+1,+1,-1> } } #end #macro cena(tt) #declare posFim = <0,0,11>; #declare art1Ang = 225; #declare art2Ang = -180; #if(tt <= 0.5) #declare e11 = -45 - (tt * art1Ang); #declare d11 = 45 + (tt * art1Ang); #declare e21 = -45 - (tt * art1Ang); #declare d21 = 45 + (tt * art1Ang); #else #declare e11 = (-45 - 0.5 * art1Ang) + ((tt - 0.5) * art1Ang); #declare d11 = (45 + 0.5 * art1Ang) - ((tt - 0.5) * art1Ang); #declare e21 = (-45 - 0.5 * art1Ang) + ((tt - 0.5) * art1Ang); #declare d21 = (45 + 0.5 * art1Ang) - ((tt - 0.5) * art1Ang); #end #if(tt <= 0.5) #declare e12 = 90 - (tt * art2Ang); #declare d12 = -90 + (tt * art2Ang); #declare e22 = 90 - (tt * art2Ang); #declare d22 = -90 + (tt * art2Ang); #else #declare e12 = (90 - 0.5 * art2Ang) + ((tt - 0.5) * art2Ang); #declare d12 = (-90 + 0.5 * art2Ang) - ((tt - 0.5) * art2Ang); #declare e22 = (90 - 0.5 * art2Ang) + ((tt - 0.5) * art2Ang); #declare d22 = (-90 + 0.5 * art2Ang) - ((tt - 0.5) * art2Ang); #end #declare e13 = 45; #declare e14 = -45; #declare e15 = 90; #declare e23 = -45; #declare e24 = 45; #declare e25 = -90; #declare d13 = -45; #declare d14 = 45; #declare d15 = -90; #declare d23 = 45; #declare d24 = -45; #declare d25 = 90; #declare pk1 = 0; #declare pk2 = 0; #declare pk3 = -180; union { object{ robo( posFim, e11, e12, e13, e14, e15, e21, e22, e23, e24, e25, d11, d12, d13, d14, d15, d21, d22, d23, d24, d25, pk1, pk2, pk3 ) } } #end #include "eixos.inc" // object{ eixos(20) } object{ cena(clock) } #include "camlight.inc" #declare centro_cena = < 0, 0, 6 >; #declare raio_cena = 21.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)