// Last edited on 2023-12-24 16:23:12 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 } } //Definições das macros para o desenho #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 #include "eixos.inc" #macro bicho1() #declare posFim = <0,0,11>; #declare e11 = 45; #declare e12 = -90; #declare e13 = 45; #declare e14 = -45; #declare e15 = 90; #declare e21 = -45; #declare e22 = 90; #declare e23 = -45; #declare e24 = 45; #declare e25 = -90; #declare d11 = -45; #declare d12 = 90; #declare d13 = -45; #declare d14 = 45; #declare d15 = -90; #declare d21 = 45; #declare d22 = -270; #declare d23 = 45; #declare d24 = -45; #declare d25 = 90; #declare pk1 = 1; #declare pk2 = 45; #declare pk3 = -180; 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 ) rotate 90*x } #end #macro bicho2() #declare posFim = <0,0,11>; #declare e11 = -60; #declare e12 = +90; #declare e13 = 0; #declare e14 = +60; #declare e15 = -60; #declare e21 = -75; #declare e22 = +90; #declare e23 = -45; #declare e24 = 45; #declare e25 = -90; #declare d11 = +60; #declare d12 = -90; #declare d13 = -45; #declare d14 = 45; #declare d15 = -90; #declare d21 = 75; #declare d22 = -90; #declare d23 = 45; #declare d24 = -45; #declare d25 = 90; #declare pk1 = 60; #declare pk2 = -45; #declare pk3 = 0; 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 ) rotate 90*x } #end #declare DX = 14; #declare DY = 15; #declare DZ = 10; union { object{ bicho1() translate -DX*x } object{ bicho2() translate +DX*x } } #declare cmin = < -2*DX, -DY-5, -DZ >; #declare cmax = < +2*DX, +DY-5, +DZ >; #include "gaiola.inc" // object{ gaiola(cmin,cmax) } #declare centro_cena = (cmin + cmax)/2; #declare raio_cena = 0.50*vlength(cmax-cmin); #declare dist_camera = 7*raio_cena; #include "camlight.inc" #declare dir_camera = < 5, 3, 7 >; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)