// Last edited on 2013-12-11 11:26:11 by stolfilocal // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.50, 0.80, 0.70 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_plastico2 = texture{ pigment{ color rgb < 0.90, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_plastico3 = texture{ pigment{ color rgb < 0.90, 0.40, 0.20 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca = texture{ pigment{ color rgb < 0.40, 0.40, 0.40 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca2 = texture{ pigment{ color rgb < 0.80, 0.40, 0.40 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #macro Interpola2(p0, p1, tt) ((1-tt)*p0 + tt*p1) #end #macro Interpola4(p0,p1,p2,p3,tt) #local p01 = Interpola2(p0,p1,tt); #local p12 = Interpola2(p1,p2,tt); #local p23 = Interpola2(p2,p3,tt); #local p012 = Interpola2(p01,p2,tt); #local p123 = Interpola2(p12,p3,tt); #local p0123 = Interpola2(p012,p123,tt); p0123 #end #macro criareta(pp0, pp1, tt) #local i = 0; #while(i <=1) object{sphere{ Interpola2(pp0, pp1, i*tt), 0.1 texture {tx_plastico}}} #local i = i + 1; #end #end #macro criacurva(pp0,pp1,pp2,pp3) #declare i = 0; #local pl = pp0; #while(i<=1) #local pl = Interpola4(pp0,pp1,pp2,pp3, i); object{sphere{pl, 0.1 texture {tx_plastico}}} #declare i = i + 0.1; #end #end #macro criacurvavar(pp0,pp1,pp2,pp3,raio1, raio2, tt, ttr) union{ #declare i = 0; #declare rr = raio1; #local pl = pp0; #while(i<=1) #local pl = Interpola4(pp0,pp1,pp2,pp3, i); object{sphere{pl, Interpola2(raio1,raio2,rr) texture {tx_plastico}}} #declare i = i + tt; #declare rr = rr + ttr; #end } #end #macro criacurva2(pp0,pp1,pp2,qq0,qq1,qq2) union{ object{criacurvavar(pp0,pp1,pp2,(pp2+qq0)/2,0.3, 0.1, 0.08,0.07)} object{criacurvavar((pp2+qq0)/2,qq0,qq1,qq2,0.105, 0.06, 0.055,0.07)} } #end #macro tentaculo_animado(pos0,pos1,pos2,pos3,tempo) #local n = 18; #local post = array[n]; #local i = 0; #while (i; #local p1 = ; #local p2 = ; #local q0 = ; #local q1 = ; #local q2 = ; object{criacurva2(p0,p1,p2,q0,q1,q2)} #end #macro copia_parametros_entre_quadros(q,i1,t1,i2,t2) #local p = 0; #while(p < np) #declare q[i2][t2][p] = q[i1][t1][p]; #local p = p+1; #end #end #macro copia_quadro(q,i1,i2) #local lt = 0; #while(lt < nt) copia_parametros_entre_quadros(q,i1,lt,i2,lt) #local lt = lt+1; #end #end #declare nq = 3; #declare nt = 8; #declare np = 18; #declare d = array[nq+1]; #declare q = array[nq+1][nt][np]; #declare d[0] = 0; #declare d[1] = 0.3; #declare d[2] = 0.7; #declare d[3] = 1; #declare q[0][0][0] = 0; #declare q[0][0][1] = 0; #declare q[0][0][2] = 0; #declare q[0][0][3] = 1; #declare q[0][0][4] = 1; #declare q[0][0][5] = 1; #declare q[0][0][6] = 1.5; #declare q[0][0][7] = 1.5; #declare q[0][0][8] = 0.5; #declare q[0][0][9] = 2; #declare q[0][0][10] = 2; #declare q[0][0][11] = 0; #declare q[0][0][12] = 2.5; #declare q[0][0][13] = 2.5; #declare q[0][0][14] = -0.5; #declare q[0][0][15] = 3; #declare q[0][0][16] = 3; #declare q[0][0][17] = 0.25; #declare q[0][1][0] = 0; #declare q[0][1][1] = 0; #declare q[0][1][2] = 0; #declare q[0][1][3] = 1.3; #declare q[0][1][4] = 1.3; #declare q[0][1][5] = -0.8; #declare q[0][1][6] = 1; #declare q[0][1][7] = 1; #declare q[0][1][8] = 0.5; #declare q[0][1][9] = 2.8; #declare q[0][1][10] = 2.8; #declare q[0][1][11] = 0; #declare q[0][1][12] = 2.5; #declare q[0][1][13] = 2.5; #declare q[0][1][14] = -0.5; #declare q[0][1][15] = 3.1; #declare q[0][1][16] = 3.1; #declare q[0][1][17] = -0.25; #declare q[0][2][0] = 0; #declare q[0][2][1] = 0; #declare q[0][2][2] = 0; #declare q[0][2][3] = 1; #declare q[0][2][4] = 1; #declare q[0][2][5] = -1; #declare q[0][2][6] = 1.5; #declare q[0][2][7] = 1.5; #declare q[0][2][8] = -0.5; #declare q[0][2][9] = 2; #declare q[0][2][10] = 2; #declare q[0][2][11] = 0; #declare q[0][2][12] = 2.5; #declare q[0][2][13] = 2.5; #declare q[0][2][14] = 0.5; #declare q[0][2][15] = 3; #declare q[0][2][16] = 3; #declare q[0][2][17] = -0.25; #declare q[0][3][0] = 0; #declare q[0][3][1] = 0; #declare q[0][3][2] = 0; #declare q[0][3][3] = 1.3; #declare q[0][3][4] = 1.3; #declare q[0][3][5] = 0.8; #declare q[0][3][6] = 1; #declare q[0][3][7] = 1; #declare q[0][3][8] = -0.5; #declare q[0][3][9] = 2.8; #declare q[0][3][10] = 2.8; #declare q[0][3][11] = 0; #declare q[0][3][12] = 2.5; #declare q[0][3][13] = 2.5; #declare q[0][3][14] = 0.5; #declare q[0][3][15] = 3.1; #declare q[0][3][16] = 3.1; #declare q[0][3][17] = 0.25; copia_parametros_entre_quadros(q,0,2,0,4) copia_parametros_entre_quadros(q,0,0,0,5) copia_parametros_entre_quadros(q,0,3,0,6) copia_parametros_entre_quadros(q,0,1,0,7) copia_parametros_entre_quadros(q,0,0,1,5) copia_parametros_entre_quadros(q,0,1,1,2) copia_parametros_entre_quadros(q,0,2,1,7) copia_parametros_entre_quadros(q,0,3,1,1) copia_parametros_entre_quadros(q,0,4,1,3) copia_parametros_entre_quadros(q,0,5,1,0) copia_parametros_entre_quadros(q,0,6,1,4) copia_parametros_entre_quadros(q,0,7,1,6) copia_parametros_entre_quadros(q,0,0,2,2) copia_parametros_entre_quadros(q,0,1,2,5) copia_parametros_entre_quadros(q,0,2,2,4) copia_parametros_entre_quadros(q,0,3,2,7) copia_parametros_entre_quadros(q,0,4,2,6) copia_parametros_entre_quadros(q,0,5,2,1) copia_parametros_entre_quadros(q,0,6,2,3) copia_parametros_entre_quadros(q,0,7,2,0) copia_quadro(q,0,3) #macro desenha_tentaculo_animado(pack,nnt) #local p0 = ; #local p1 = ; #local p2 = ; #local q0 = ; #local q1 = ; #local q2 = ; object{criacurva2(p0,p1,p2,q0,q1,q2)} #end #macro polvo_animado(tempo) #if(tempo < d[1]) #local i = 0; #end #if((tempo >= d[1]) & (tempo < d[2])) #local i = 1; #end #if((tempo >= d[2]) & (tempo < d[3])) #local i = 2; #end #local tloc = (tempo - d[i])/(d[i+1] + d[i]); #local qtempo = array[nt][np]; #local j=0; #while(j, 1 texture {tx_plastico}} } object{ sphere{<0.7,0.7,0.7>, 0.2 texture {tx_plastico}} } } union{ object{ sphere{<0.8,0.3,1>, 0.2 texture {tx_plastico}} } object{ sphere{<0.3,0.8,1>, 0.2 texture {tx_plastico}} } } } #local lt = 0; #while(lt < nt) object{desenha_tentaculo_animado(qt,lt) translate<0.7,0.7,0> rotate <0,0,lt*45>} #local lt = lt + 1; #end } #end union{ object{ eixos(3.00) } object{ chao translate < 0,0,-5 > texture{ tx_xadrez } } object{polvo_animado(clock)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 6.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)