// Last edited on 2013-12-11 11:25:14 by stolfilocal // Processed by remove-cam-lights background{ color rgb < 1, 1, 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.005 } } #declare tx_gray = texture{ pigment{ color rgb < 1.00, 1.00, 1.00 > } } #declare tx_red = texture{ pigment{ color rgb < 1.00, 0.00, 0.00 > } } #declare raio = 1.000; #declare esfera = sphere{ <0,0,0> 0.25 texture{ tx_red } } #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,p12,tt); #local p123 = interpola2(p12,p23,tt); #local p0123 = interpola2(p012,p123,tt); p0123 #end #macro tentaculo(p0,p1,p2,q1,q2,q3) #local p3 = (p2 + q1)/2; #local q0 = p3; union{ #declare i=0; #while (i< 1) object{ sphere { interpola4(p0,p1,p2,p3, i) interpola4(0.5,0.45,0.40,0.35, i) texture{ tx_red } } } #declare i= i+1/20; #end #declare i=0; #while (i< 1) object{ sphere { interpola4(q0,q1,q2,q3, i) interpola4(0.35,0.25,0.15,0.05, i) texture{ tx_red } } } #declare i= i+1/20; #end } #end #macro polvo (k) union{ object { sphere{ <0,0,-0.5> 1 texture{ tx_red } } } #declare j=0; #while (j< 360) #local p = array[18]{0,0,0,0,0,-1,0,1,-2,0,2,-3,0,2,-4,0,1,-3}; object {tentaculo_vetor(p) rotate <0,0,j> } #declare j= j+k; #end } #end #macro tentaculo_vetor(q) #local p0 = < q[0], q[1], q[2] >; #local p1 = < q[3], q[4], q[5] >; #local p2 = < q[6], q[7], q[8] >; #local q1 = < q[9], q[10], q[11] >; #local p3 = (p2 + q1)/2; #local q0 = p3; #local q2 = < q[12], q[13], q[14] >; #local q3 = < q[15], q[16], q[17] >; union{ #declare i=0; #while (i< 1) object{ sphere { interpola4(p0,p1,p2,p3, i) interpola4(0.5,0.45,0.40,0.35, i) texture{ tx_red } } } #declare i= i+1/20; #end #declare i=0; #while (i< 1) object{ sphere { interpola4(q0,q1,q2,q3, i) interpola4(0.35,0.25,0.15,0.05, i) texture{ tx_red } } } #declare i= i+1/20; #end } #end #macro polvo_quadro (q, nt) union{ object { sphere{ <0,0,-0.5> 1 texture{ tx_red } } } #local k=360/nt; #declare j=0; #while (j< 360) object {tentaculo_vetor(q) rotate <0,0,j> } #declare j= j+k; #end } #end #macro polvo_animado(tempo) union{ #if ( tempo < 0.3 ) object { polvo_quadro(quadros[0], nt) translate <0,0,2> } #end #if ( tempo > 0.3 ) #if ( tempo < 0.6) object { polvo_quadro(quadros[1], nt) translate <0,0,2> } #end #end #if ( tempo > 0.3 ) #if ( tempo > 0.6 ) #if ( tempo <= 1) object { polvo_quadro(quadros[2], nt) translate <0,0,2> } #end #end #end } #end #include "eixos.inc" object{ eixos(3.00) } #declare nq = 3; // numero de quadros chave #declare nt = 4; // numero de tentaculos #declare np = 18; // numero de parametros por tentaculo #declare d = array[nq]{0, 0.5, 1}; // tempos de cada quadro chave #declare q = array[nq+1][nt][np]; // parametros de cada tentaculo em cada quadro-chaves #declare quadro0 = array[np]{0,0,0,0,0,-1,0,1,-2,0,2,-3,0,2,-4,0,1,-3}; #declare quadro1 = array[np]{0,0,0,0,0,-1,0,1,-2,0,2,-3,0,2,-4,0,2,-3}; #declare quadro2 = array[np]{0,0,0,0,0,-1,0,1,-2,0,2,-3,0,2,-4,0,3,-3}; #declare quadros = array[nq]{quadro0, quadro1, quadro2} object { polvo_animado(clock)} #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 100.01, 100.01, 30.01 >; #declare dist_camera = 30.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)