// Last edited on DATE TIME by USER // Processed by remove-cam-lights #include "metals.inc" background{ color rgb < 1.0, 1.0, 1.0 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.50, 0.50, 0.50 > } finish{ diffuse 0.8 ambient 0.1 specular 5.8 roughness 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.1 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.42, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare NQ=6; #declare angPehD= array[NQ]; #declare angPehD[0]=0; #declare angPehD[1]=0; #declare angPehD[2]=0; #declare angPehD[3]=0; #declare angPehD[4]=0; #declare angPehD[5]=0; #declare angPehE= array[NQ]; #declare angPehE[0]=0; #declare angPehE[1]=0; #declare angPehE[2]=0; #declare angPehE[3]=90; #declare angPehE[4]=0; #declare angPehE[5]=0; #declare angAntBraE= array[NQ]; #declare angAntBraE[0]=90; #declare angAntBraE[1]=30; #declare angAntBraE[2]=150; #declare angAntBraE[3]=150; #declare angAntBraE[4]=90; #declare angAntBraE[5]=90; #declare angAntBraD= array[NQ]; #declare angAntBraD[0]=-30; #declare angAntBraD[1]=-90; #declare angAntBraD[2]=-90; #declare angAntBraD[3]=-150; #declare angAntBraD[4]=-150; #declare angAntBraD[5]=-30; #declare angBraD= array[NQ]; #declare angBraD[0]=-150; #declare angBraD[1]=-90; #declare angBraD[2]=-90; #declare angBraD[3]=-150; #declare angBraD[4]=-150; #declare angBraD[5]=-150; #declare angBraE= array[NQ]; #declare angBraE[0]=90; #declare angBraE[1]=150; #declare angBraE[2]=150; #declare angBraE[3]=150; #declare angBraE[4]=90; #declare angBraE[5]=90; #declare angPerE= array[NQ]; #declare angPerE[0]=0; #declare angPerE[1]=0; #declare angPerE[2]=90; #declare angPerE[3]=90; #declare angPerE[4]=0; #declare angPerE[5]=0; #declare angPerD= array[NQ]; #declare angPerD[0]=0; #declare angPerD[1]=0; #declare angPerD[2]=0; #declare angPerD[3]=0; #declare angPerD[4]=-50; #declare angPerD[5]=0; #declare angAntPerE= array[NQ]; #declare angAntPerE[0]=0; #declare angAntPerE[1]=0; #declare angAntPerE[2]=0; #declare angAntPerE[3]=90; #declare angAntPerE[4]=0; #declare angAntPerE[5]=0; #declare angAntPerD= array[NQ]; #declare angAntPerD[0]=0; #declare angAntPerD[1]=0; #declare angAntPerD[2]=0; #declare angAntPerD[3]=0; #declare angAntPerD[4]=-50; #declare angAntPerD[5]=0; #declare tempo= array[NQ]; #declare tempo[0]= 0.00; #declare tempo[1]= 0.20; #declare tempo[2]= 0.40; #declare tempo[3]= 0.60; #declare tempo[4]= 0.80; #declare tempo[5]= 1.00; #macro interpola(f0, v0, f1, v1, f) #local ss= (f-f0)/(f1-f0); #local rr= 1 - ss; (rr*v0 + ss*v1) #end #macro quadro_anterior(fase) #local i= 0; #while(i < NQ-1 ) #if((tempo[i] <= fase) & ((i = NQ) | (tempo[i+1] >= fase))) #local resp= i; #end #local i= i+1; #end resp #end #macro mcpt() #declare cabeca = cylinder{ < 0, 0, 5.0 >, < 0, 0, +7.0 >, 1.0 texture { pigment {color rgb <0.64, 0.16, 0.16> }} } #declare olho = sphere { <0.8,0,6.7> , 0.13 } #declare nariz = sphere { <0.9,0,6.0>, 0.2 } #declare tronco = cylinder{ < 0, 0, 0.0 >, < 0, 0, +4.0 >, 2.0 texture { pigment {color rgb <0.64, 0.16, 0.16> } } } #declare pesc = cylinder{ < 0, 0, 4.0 >, < 0, 0, 5.0 >, 0.4 texture { pigment {color rgb <0.64, 0.16, 0.16> } } } union { object { cabeca } object { tronco } object { pesc } object { nariz } object { olho translate <0, -0.5, 0>} object { olho translate <0, 0.5, 0>} } #end #macro mpeh(n) #declare peh = box { <-0.9, -0.8, -0.02>, < 0.9, 0.8, 0.02> texture { pigment {color rgb <0.64, 0.16, 0.16> }} } object { peh rotate } #end #macro anteperna(aa, ap) #declare c1 = cylinder{ < 0, 0, 0.0 >, < 0, 0, -3.0>, 0.25 } union { object { c1 rotate } object { mpeh(ap) rotate <-aa, 0, 0> translate < 0, 0, -3> rotate } } #end #macro perna(ap, aap, apeh) #declare c1 = cylinder{ < 0, 0, 0 >, < 0, 0, -4.0>, 0.3 texture { pigment {color rgb <0.64, 0.16, 0.16> }} } union { object { c1 rotate } object { anteperna(aap, apeh) rotate <-ap, 0, 0> translate <0, 0, -4> rotate } } #end #macro antebrac(n) #declare c1 = cylinder{ < 0, 0, 0 >, < 0, 0, -1.5>, 0.25 } #declare mao = sphere{ < 0, 0, -2.0 >, 0.5 texture{ pigment { color rgb <0,1,0> } } } union { object { c1 rotate } object { mao rotate } } #end #macro braco(ab, aa) #declare cil = cylinder{ < 0, 0, -1.5 >, < 0, 0, 0 >, 0.5 texture { pigment {color rgb <0.74, 0.26, 0.26> } } } union { object { antebrac(aa) rotate <-ab,0,0> translate <0, 0, -1.5> rotate } object { cil rotate } } #end #declare caixa = box{ < -2.00, +2.00, -1.00 >, < +2.00, -2.00, +1.00 > texture {tx_vidro} } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #include "eixos.inc" #macro boneco(bracD, antebracD, pernaD, antepernaD, pehD, bracE, antebracE, pernaE, antepernaE, pehE) union { object{ eixos(3.00) } object { mcpt() } object { braco(bracE, antebracE) translate <0, 2.1, 3.7> } object { braco(bracD, antebracD) translate <0, -2.1, 3.7> } object { perna(pernaE,antepernaE , pehE) translate <0, 1.8, 0>} object { perna(pernaD, antepernaD, pehD) translate <0, -1.8, 0>} } #end #macro boneco_dancando(fase) #local ant= quadro_anterior(fase); #local fa= fase; #declare braD = interpola(tempo[ant], angBraD[ant], tempo[ant+1], angBraD[ant+1], fa); #declare antBraD = interpola(tempo[ant], angAntBraD[ant], tempo[ant+1], angAntBraD[ant+1], fa); #declare perD = interpola(tempo[ant], angPerD[ant], tempo[ant+1], angPerD[ant+1], fa); #declare antPerD = interpola(tempo[ant], angAntPerD[ant], tempo[ant+1], angAntPerD[ant+1], fa); #declare pehD = interpola(tempo[ant], angPehD[ant], tempo[ant+1], angPehD[ant+1], fa); #declare braE = interpola(tempo[ant], angBraE[ant], tempo[ant+1], angBraE[ant+1], fa); #declare antBraE = interpola(tempo[ant], angAntBraE[ant], tempo[ant+1], angAntBraE[ant+1], fa); #declare perE = interpola(tempo[ant], angPerE[ant], tempo[ant+1], angPerE[ant+1], fa); #declare antPerE = interpola(tempo[ant], angAntPerE[ant], tempo[ant+1], angAntPerE[ant+1], fa); #declare pehE = interpola(tempo[ant], angPehE[ant], tempo[ant+1], angPehE[ant+1], fa); object { boneco(braD, antBraD, perD, antPerD, pehD, braE, antBraE, perE, antPerE, pehE) translate <0, 0, 1>} #end union { object{ chao translate < 0,0,-8 > texture{ tx_xadrez } } boneco_dancando(clock) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 14.0; #declare dir_camera = < 34.00, 10.00, 14.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)