// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-09-30 19:57:13 by jstolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_verde = texture{ pigment{ color rgb < 0.15, 1.00, 0.15 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_vermelho = texture{ pigment{ color rgb < 1.00, 0.10, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_azul = texture{ pigment{ color rgb < 0.10, 0.10, 1.00 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA // MACROS QUE CONSTITUEM OS OBJETOS DA CENA #macro param_interpola1(tt, tt0, tt1, vv0, vv1) #local rr = (tt - tt0)/(tt1 - tt0); #local vv = (1 - rr)*vv0 + rr*vv1; vv #end #macro param_interpola3(tt, tt0,tt3, vv0,vv1,vv2,vv3) #local vv01 = param_interpola1(tt, tt0,tt3, vv0,vv1); #local vv12 = param_interpola1(tt, tt0,tt3, vv1,vv2); #local vv23 = param_interpola1(tt, tt0,tt3, vv2,vv3); #local vv012 = param_interpola1(tt, tt0,tt3, vv01,vv12); #local vv123 = param_interpola1(tt, tt0,tt3, vv12,vv23); #local vv0123 = param_interpola1(tt, tt0,tt3, vv012,vv123); vv0123 #end #macro bola(posicao, raio) sphere{ posicao, raio texture {tx_verde} } #end #macro segtentaculo(M, P0, R0, P1, R1, P2, R2, P3, R3) #local i = 0; #local tt0 = 0; #local tt1 = M; union{ #while(i < M) #local posicao = param_interpola3(i, tt0, tt1, P0, P1, P2, P3); #local raio = param_interpola3(i, tt0, tt1, R0, R1, R2, R3); object { bola(posicao, raio) } #local i = i + 1; #end } #end #macro tentaculo(M, N, QPP, QRR) #local j = 0; union{ #while(j < N) object { segtentaculo(M, QPP[j][0], QRR[j][0], QPP[j][1], QRR[j][1], QPP[j][2], QRR[j][2], QPP[j][3], QRR[j][3]) } #local j = j + 1; #end } #end #macro tentaculo_animado(M, tt) # local N = 5; # local K = 4; # local QPP = array[K][4][N][4]; # local QRR = array[K][4][N][4]; //quadro 0 #local QPP[0][1][0][0] = <70, 0, 20>; #local QPP[0][1][0][1] = <120, 0, 40>; #local QPP[0][1][0][2] = <150, 0, 60>; #local QPP[0][1][1][1] = <170, 0, 80>; #local QPP[0][1][1][2] = <210, 0, 100>; #local QPP[0][1][2][1] = <250, 0, 120>; #local QPP[0][1][2][2] = <280, 0, 160>; #local QPP[0][1][3][1] = <290, 0, 180>; #local QPP[0][1][3][2] = <310, 0, 210>; #local QPP[0][1][4][1] = <350, 0, 290>; #local QPP[0][1][4][2] = <370, 0, 300>; #local QPP[0][1][4][3] = <400, 0, 310>; #local QPP[0][1][0][3] = (QPP[0][1][0][2] + QPP[0][1][1][1])/2; #local QPP[0][1][1][0] = QPP[0][1][0][3]; #local QPP[0][1][1][3] = (QPP[0][1][1][2] + QPP[0][1][2][1])/2; #local QPP[0][1][2][0] = QPP[0][1][1][3]; #local QPP[0][1][2][3] = (QPP[0][1][2][2] + QPP[0][1][3][1])/2; #local QPP[0][1][3][0] = QPP[0][1][2][3]; #local QPP[0][1][3][3] = (QPP[0][1][3][2] + QPP[0][1][4][1])/2; #local QPP[0][1][4][0] = QPP[0][1][3][3]; #local QRR[0][1][0][0] = 30; #local QRR[0][1][0][1] = 29; #local QRR[0][1][0][2] = 27; #local QRR[0][1][1][1] = 25; #local QRR[0][1][1][2] = 25; #local QRR[0][1][2][1] = 20; #local QRR[0][1][2][2] = 20; #local QRR[0][1][3][1] = 20; #local QRR[0][1][3][2] = 20; #local QRR[0][1][4][1] = 14; #local QRR[0][1][4][2] = 7; #local QRR[0][1][4][3] = 5; #local QRR[0][1][0][3] = (QRR[0][1][0][2] + QRR[0][1][1][1])/2; #local QRR[0][1][1][0] = (QRR[0][1][0][2] + QRR[0][1][1][1])/2; #local QRR[0][1][1][3] = (QRR[0][1][1][2] + QRR[0][1][2][1])/2; #local QRR[0][1][2][0] = (QRR[0][1][1][2] + QRR[0][1][2][1])/2; #local QRR[0][1][2][3] = (QRR[0][1][2][2] + QRR[0][1][3][1])/2; #local QRR[0][1][3][0] = (QRR[0][1][2][2] + QRR[0][1][3][1])/2; #local QRR[0][1][3][3] = (QRR[0][1][3][2] + QRR[0][1][4][1])/2; #local QRR[0][1][4][0] = (QRR[0][1][3][2] + QRR[0][1][4][1])/2; //quadro 1 #local QPP[0][2][0][0] = <70, 0, 20>; #local QPP[0][2][0][1] = <120, 0, 40>; #local QPP[0][2][0][2] = <150, 0, 60>; #local QPP[0][2][1][1] = <170, 0, 80>; #local QPP[0][2][1][2] = <210, 0, 100>; #local QPP[0][2][2][1] = <250, 0, 120>; #local QPP[0][2][2][2] = <280, 0, 160>; #local QPP[0][2][3][1] = <290, 0, 180>; #local QPP[0][2][3][2] = <310, 0, 210>; #local QPP[0][2][4][1] = <350, 0, 290>; #local QPP[0][2][4][2] = <370, 0, 310>; #local QPP[0][2][4][3] = <400, 0, 290>; #local QPP[0][2][0][3] = (QPP[0][2][0][2] + QPP[0][2][1][1])/2; #local QPP[0][2][1][0] = QPP[0][2][0][3]; #local QPP[0][2][1][3] = (QPP[0][2][1][2] + QPP[0][2][2][1])/2; #local QPP[0][2][2][0] = QPP[0][2][1][3]; #local QPP[0][2][2][3] = (QPP[0][2][2][2] + QPP[0][2][3][1])/2; #local QPP[0][2][3][0] = QPP[0][2][2][3]; #local QPP[0][2][3][3] = (QPP[0][2][3][2] + QPP[0][2][4][1])/2; #local QPP[0][2][4][0] = QPP[0][2][3][3]; #local QRR[0][2][0][0] = 30; #local QRR[0][2][0][1] = 29; #local QRR[0][2][0][2] = 27; #local QRR[0][2][1][1] = 25; #local QRR[0][2][1][2] = 25; #local QRR[0][2][2][1] = 20; #local QRR[0][2][2][2] = 20; #local QRR[0][2][3][1] = 20; #local QRR[0][2][3][2] = 20; #local QRR[0][2][4][1] = 14; #local QRR[0][2][4][2] = 7; #local QRR[0][2][4][3] = 5; #local QRR[0][2][0][3] = (QRR[0][2][0][2] + QRR[0][2][1][1])/2; #local QRR[0][2][1][0] = (QRR[0][2][0][2] + QRR[0][2][1][1])/2; #local QRR[0][2][1][3] = (QRR[0][2][1][2] + QRR[0][2][2][1])/2; #local QRR[0][2][2][0] = (QRR[0][2][1][2] + QRR[0][2][2][1])/2; #local QRR[0][2][2][3] = (QRR[0][2][2][2] + QRR[0][2][3][1])/2; #local QRR[0][2][3][0] = (QRR[0][2][2][2] + QRR[0][2][3][1])/2; #local QRR[0][2][3][3] = (QRR[0][2][3][2] + QRR[0][2][4][1])/2; #local QRR[0][2][4][0] = (QRR[0][2][3][2] + QRR[0][2][4][1])/2; //quadro 2 #local QPP[1][1][0][0] = <70, 0, 20>; #local QPP[1][1][0][1] = <120, 0, 40>; #local QPP[1][1][0][2] = <150, 0, 60>; #local QPP[1][1][1][1] = <170, 0, 80>; #local QPP[1][1][1][2] = <210, 0, 100>; #local QPP[1][1][2][1] = <250, 0, 120>; #local QPP[1][1][2][2] = <280, 0, 160>; #local QPP[1][1][3][1] = <290, 0, 160>; #local QPP[1][1][3][2] = <310, 0, 140>; #local QPP[1][1][4][1] = <350, 0, 120>; #local QPP[1][1][4][2] = <370, 0, 100>; #local QPP[1][1][4][3] = <400, 0, 80>; #local QPP[1][1][0][3] = (QPP[1][1][0][2] + QPP[1][1][1][1])/2; #local QPP[1][1][1][0] = QPP[1][1][0][3]; #local QPP[1][1][1][3] = (QPP[1][1][1][2] + QPP[1][1][2][1])/2; #local QPP[1][1][2][0] = QPP[1][1][1][3]; #local QPP[1][1][2][3] = (QPP[1][1][2][2] + QPP[1][1][3][1])/2; #local QPP[1][1][3][0] = QPP[1][1][2][3]; #local QPP[1][1][3][3] = (QPP[1][1][3][2] + QPP[1][1][4][1])/2; #local QPP[1][1][4][0] = QPP[1][1][3][3]; #local QRR[1][1][0][0] = 30; #local QRR[1][1][0][1] = 29; #local QRR[1][1][0][2] = 27; #local QRR[1][1][1][1] = 25; #local QRR[1][1][1][2] = 25; #local QRR[1][1][2][1] = 20; #local QRR[1][1][2][2] = 20; #local QRR[1][1][3][1] = 20; #local QRR[1][1][3][2] = 20; #local QRR[1][1][4][1] = 14; #local QRR[1][1][4][2] = 7; #local QRR[1][1][4][3] = 5; #local QRR[1][1][0][3] = (QRR[1][1][0][2] + QRR[1][1][1][1])/2; #local QRR[1][1][1][0] = (QRR[1][1][0][2] + QRR[1][1][1][1])/2; #local QRR[1][1][1][3] = (QRR[1][1][1][2] + QRR[1][1][2][1])/2; #local QRR[1][1][2][0] = (QRR[1][1][1][2] + QRR[1][1][2][1])/2; #local QRR[1][1][2][3] = (QRR[1][1][2][2] + QRR[1][1][3][1])/2; #local QRR[1][1][3][0] = (QRR[1][1][2][2] + QRR[1][1][3][1])/2; #local QRR[1][1][3][3] = (QRR[1][1][3][2] + QRR[1][1][4][1])/2; #local QRR[1][1][4][0] = (QRR[1][1][3][2] + QRR[1][1][4][1])/2; //quadro 3 #local QPP[1][2][0][0] = <70, 0, 20>; #local QPP[1][2][0][1] = <120, 0, 40>; #local QPP[1][2][0][2] = <150, 0, 60>; #local QPP[1][2][1][1] = <170, 0, 80>; #local QPP[1][2][1][2] = <210, 0, 100>; #local QPP[1][2][2][1] = <250, 0, 120>; #local QPP[1][2][2][2] = <280, 0, 160>; #local QPP[1][2][3][1] = <290, 0, 180>; #local QPP[1][2][3][2] = <310, 0, 210>; #local QPP[1][2][4][1] = <350, 0, 290>; #local QPP[1][2][4][2] = <370, 0, 300>; #local QPP[1][2][4][3] = <400, 0, 310>; #local QPP[1][2][0][3] = (QPP[1][2][0][2] + QPP[1][2][1][1])/2; #local QPP[1][2][1][0] = QPP[1][2][0][3]; #local QPP[1][2][1][3] = (QPP[1][2][1][2] + QPP[1][2][2][1])/2; #local QPP[1][2][2][0] = QPP[1][2][1][3]; #local QPP[1][2][2][3] = (QPP[1][2][2][2] + QPP[1][2][3][1])/2; #local QPP[1][2][3][0] = QPP[1][2][2][3]; #local QPP[1][2][3][3] = (QPP[1][2][3][2] + QPP[1][2][4][1])/2; #local QPP[1][2][4][0] = QPP[1][2][3][3]; #local QRR[1][2][0][0] = 30; #local QRR[1][2][0][1] = 29; #local QRR[1][2][0][2] = 27; #local QRR[1][2][1][1] = 25; #local QRR[1][2][1][2] = 25; #local QRR[1][2][2][1] = 20; #local QRR[1][2][2][2] = 20; #local QRR[1][2][3][1] = 20; #local QRR[1][2][3][2] = 20; #local QRR[1][2][4][1] = 14; #local QRR[1][2][4][2] = 7; #local QRR[1][2][4][3] = 5; #local QRR[1][2][0][3] = (QRR[1][2][0][2] + QRR[1][2][1][1])/2; #local QRR[1][2][1][0] = (QRR[1][2][0][2] + QRR[1][2][1][1])/2; #local QRR[1][2][1][3] = (QRR[1][2][1][2] + QRR[1][2][2][1])/2; #local QRR[1][2][2][0] = (QRR[1][2][1][2] + QRR[1][2][2][1])/2; #local QRR[1][2][2][3] = (QRR[1][2][2][2] + QRR[1][2][3][1])/2; #local QRR[1][2][3][0] = (QRR[1][2][2][2] + QRR[1][2][3][1])/2; #local QRR[1][2][3][3] = (QRR[1][2][3][2] + QRR[1][2][4][1])/2; #local QRR[1][2][4][0] = (QRR[1][2][3][2] + QRR[1][2][4][1])/2; //quadros calculados #local i = 0; #if(tt <= 0.5) #local tt0 = 0; #local tt1 = 0.5; #while(i < N) #local j = 0; #while(j < 4) #local QPP[0][0][i][j] = param_interpola1(tt, tt0, tt1, QPP[1][2][i][j], QPP[0][1][i][j]); #local QPP[0][3][i][j] = param_interpola1(tt, tt0, tt1, QPP[0][2][i][j], QPP[1][1][i][j]); //!!!!!!!!!!!!!!!!!! #local j = j + 1; #end #local i = i + 1; #end #local QRR[0][0][0][0] = 30; #local QRR[0][0][0][1] = 29; #local QRR[0][0][0][2] = 27; #local QRR[0][0][1][1] = 25; #local QRR[0][0][1][2] = 25; #local QRR[0][0][2][1] = 20; #local QRR[0][0][2][2] = 20; #local QRR[0][0][3][1] = 20; #local QRR[0][0][3][2] = 20; #local QRR[0][0][4][1] = 14; #local QRR[0][0][4][2] = 7; #local QRR[0][0][4][3] = 5; #local QRR[0][0][0][3] = (QRR[0][0][0][2] + QRR[0][0][1][1])/2; #local QRR[0][0][1][0] = (QRR[0][0][0][2] + QRR[0][0][1][1])/2; #local QRR[0][0][1][3] = (QRR[0][0][1][2] + QRR[0][0][2][1])/2; #local QRR[0][0][2][0] = (QRR[0][0][1][2] + QRR[0][0][2][1])/2; #local QRR[0][0][2][3] = (QRR[0][0][2][2] + QRR[0][0][3][1])/2; #local QRR[0][0][3][0] = (QRR[0][0][2][2] + QRR[0][0][3][1])/2; #local QRR[0][0][3][3] = (QRR[0][0][3][2] + QRR[0][0][4][1])/2; #local QRR[0][0][4][0] = (QRR[0][0][3][2] + QRR[0][0][4][1])/2; #local QPP[1][3][0][0] = QPP[0][0][0][0]; #local QPP[1][3][0][1] = QPP[0][0][0][1]; #local QPP[1][3][0][2] = QPP[0][0][0][2]; #local QPP[1][3][1][1] = QPP[0][0][1][1]; #local QPP[1][3][1][2] = QPP[0][0][1][2]; #local QPP[1][3][2][1] = QPP[0][0][2][1]; #local QPP[1][3][2][2] = QPP[0][0][2][2]; #local QPP[1][3][3][1] = QPP[0][0][3][1]; #local QPP[1][3][3][2] = QPP[0][0][3][2]; #local QPP[1][3][4][1] = QPP[0][0][4][1]; #local QPP[1][3][4][2] = QPP[0][0][4][2]; #local QPP[1][3][4][3] = QPP[0][0][4][3]; #local QPP[1][3][0][3] = QPP[0][0][0][3]; #local QPP[1][3][1][0] = QPP[0][0][1][0]; #local QPP[1][3][1][3] = QPP[0][0][1][3]; #local QPP[1][3][2][0] = QPP[0][0][2][0]; #local QPP[1][3][2][3] = QPP[0][0][2][3]; #local QPP[1][3][3][0] = QPP[0][0][3][0]; #local QPP[1][3][3][3] = QPP[0][0][3][3]; #local QPP[1][3][4][0] = QPP[0][0][4][0]; #local QRR[1][3][0][0] = 30; #local QRR[1][3][0][1] = 29; #local QRR[1][3][0][2] = 27; #local QRR[1][3][1][1] = 25; #local QRR[1][3][1][2] = 25; #local QRR[1][3][2][1] = 20; #local QRR[1][3][2][2] = 20; #local QRR[1][3][3][1] = 20; #local QRR[1][3][3][2] = 20; #local QRR[1][3][4][1] = 14; #local QRR[1][3][4][2] = 7; #local QRR[1][3][4][3] = 5; #local QRR[1][3][0][3] = (QRR[1][3][0][2] + QRR[1][3][1][1])/2; #local QRR[1][3][1][0] = (QRR[1][3][0][2] + QRR[1][3][1][1])/2; #local QRR[1][3][1][3] = (QRR[1][3][1][2] + QRR[1][3][2][1])/2; #local QRR[1][3][2][0] = (QRR[1][3][1][2] + QRR[1][3][2][1])/2; #local QRR[1][3][2][3] = (QRR[1][3][2][2] + QRR[1][3][3][1])/2; #local QRR[1][3][3][0] = (QRR[1][3][2][2] + QRR[1][3][3][1])/2; #local QRR[1][3][3][3] = (QRR[1][3][3][2] + QRR[1][3][4][1])/2; #local QRR[1][3][4][0] = (QRR[1][3][3][2] + QRR[1][3][4][1])/2; #local QRR[0][3][0][0] = 30; #local QRR[0][3][0][1] = 29; #local QRR[0][3][0][2] = 27; #local QRR[0][3][1][1] = 25; #local QRR[0][3][1][2] = 25; #local QRR[0][3][2][1] = 20; #local QRR[0][3][2][2] = 20; #local QRR[0][3][3][1] = 20; #local QRR[0][3][3][2] = 20; #local QRR[0][3][4][1] = 14; #local QRR[0][3][4][2] = 7; #local QRR[0][3][4][3] = 5; #local QRR[0][3][0][3] = (QRR[0][3][0][2] + QRR[0][3][1][1])/2; #local QRR[0][3][1][0] = (QRR[0][3][0][2] + QRR[0][3][1][1])/2; #local QRR[0][3][1][3] = (QRR[0][3][1][2] + QRR[0][3][2][1])/2; #local QRR[0][3][2][0] = (QRR[0][3][1][2] + QRR[0][3][2][1])/2; #local QRR[0][3][2][3] = (QRR[0][3][2][2] + QRR[0][3][3][1])/2; #local QRR[0][3][3][0] = (QRR[0][3][2][2] + QRR[0][3][3][1])/2; #local QRR[0][3][3][3] = (QRR[0][3][3][2] + QRR[0][3][4][1])/2; #local QRR[0][3][4][0] = (QRR[0][3][3][2] + QRR[0][3][4][1])/2; #else #local tt0 = 0.5; #local tt1 = 1; #local i = 0; #while(i < N) #local j = 0; #while(j < 4) #local QPP[1][0][i][j] = param_interpola1(tt, tt0, tt1, QPP[0][2][i][j], QPP[1][1][i][j]); #local QPP[1][3][i][j] = param_interpola1(tt, tt0, tt1, QPP[1][2][i][j], QPP[0][1][i][j]); #local j = j + 1; #end #local i = i + 1; #end #local QRR[1][3][0][0] = 30; #local QRR[1][3][0][1] = 29; #local QRR[1][3][0][2] = 27; #local QRR[1][3][1][1] = 25; #local QRR[1][3][1][2] = 25; #local QRR[1][3][2][1] = 20; #local QRR[1][3][2][2] = 20; #local QRR[1][3][3][1] = 20; #local QRR[1][3][3][2] = 20; #local QRR[1][3][4][1] = 14; #local QRR[1][3][4][2] = 7; #local QRR[1][3][4][3] = 5; #local QRR[1][3][0][3] = (QRR[1][3][0][2] + QRR[1][3][1][1])/2; #local QRR[1][3][1][0] = (QRR[1][3][0][2] + QRR[1][3][1][1])/2; #local QRR[1][3][1][3] = (QRR[1][3][1][2] + QRR[1][3][2][1])/2; #local QRR[1][3][2][0] = (QRR[1][3][1][2] + QRR[1][3][2][1])/2; #local QRR[1][3][2][3] = (QRR[1][3][2][2] + QRR[1][3][3][1])/2; #local QRR[1][3][3][0] = (QRR[1][3][2][2] + QRR[1][3][3][1])/2; #local QRR[1][3][3][3] = (QRR[1][3][3][2] + QRR[1][3][4][1])/2; #local QRR[1][3][4][0] = (QRR[1][3][3][2] + QRR[1][3][4][1])/2; #local QRR[1][0][0][0] = 30; #local QRR[1][0][0][1] = 29; #local QRR[1][0][0][2] = 27; #local QRR[1][0][1][1] = 25; #local QRR[1][0][1][2] = 25; #local QRR[1][0][2][1] = 20; #local QRR[1][0][2][2] = 20; #local QRR[1][0][3][1] = 20; #local QRR[1][0][3][2] = 20; #local QRR[1][0][4][1] = 14; #local QRR[1][0][4][2] = 7; #local QRR[1][0][4][3] = 5; #local QRR[1][0][0][3] = (QRR[1][0][0][2] + QRR[1][0][1][1])/2; #local QRR[1][0][1][0] = (QRR[1][0][0][2] + QRR[1][0][1][1])/2; #local QRR[1][0][1][3] = (QRR[1][0][1][2] + QRR[1][0][2][1])/2; #local QRR[1][0][2][0] = (QRR[1][0][1][2] + QRR[1][0][2][1])/2; #local QRR[1][0][2][3] = (QRR[1][0][2][2] + QRR[1][0][3][1])/2; #local QRR[1][0][3][0] = (QRR[1][0][2][2] + QRR[1][0][3][1])/2; #local QRR[1][0][3][3] = (QRR[1][0][3][2] + QRR[1][0][4][1])/2; #local QRR[1][0][4][0] = (QRR[1][0][3][2] + QRR[1][0][4][1])/2; #end //******************************************************************** //********************************************************************** #local framePP = array[N][4]; #local frameRR = array[N][4]; #local i = 0; #if(tt <= 0.5) #local tt0 = 0; #local tt1 = 0.5; #while(i < N) #local j = 0; #while(j < 4) #local framePP[i][j] = param_interpola3(tt, tt0, tt1, QPP[0][0][i][j], QPP[0][1][i][j], QPP[0][2][i][j], QPP[0][3][i][j]); #local frameRR[i][j] = param_interpola3(tt, tt0, tt1, QRR[0][0][i][j], QRR[0][1][i][j], QRR[0][2][i][j], QRR[0][3][i][j]); #local j = j + 1; #end #local i = i + 1; #end #else #local tt0 = 0.5; #local tt1 = 1; #local i = 0; #while(i < N) #local j = 0; #while(j < 4) #local framePP[i][j] = param_interpola3(tt, tt0, tt1, QPP[1][0][i][j], QPP[1][1][i][j], QPP[1][2][i][j], QPP[1][3][i][j]); #local frameRR[i][j] = param_interpola3(tt, tt0, tt1, QRR[1][0][i][j], QRR[1][1][i][j], QRR[1][2][i][j], QRR[1][3][i][j]); #local j = j + 1; #end #local i = i + 1; #end #end object{ tentaculo(M, N, framePP, frameRR) } #end #include "eixos.inc" #local M = 70; union{ object{ tentaculo_animado(M, clock) } } #include "camlight.inc" #declare centro_cena = < 150, 300, 150>; #declare raio_cena = 370; #declare dir_camera = < 20, -300, 10 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)