// Last edited on DATE TIME by USER // Processed by remove-cam-lights #macro interpola(c0, c1, v0, v1) ((v0) + (clock - (c0)) * ((v1) - (v0)) / ((c1) - (c0))) #end #declare angulo_rotacao_rato = 0; #declare desloca_rato_x = 0; #declare desloca_rato_y = 0; #declare desloca_rato_z = 0; #declare angulo_rotacao_cabeca = 0; #declare angulo_inclinacao_cabeca = 0 ; #declare angulo_abertura_braco_direito = -90 ; #declare angulo_inclinacao_braco_direito = -90 ; #declare angulo_inclinacao_antebraco_direito = 130 ; #declare angulo_abertura_braco_esquerdo = 90; #declare angulo_inclinacao_braco_esquerdo = 90; #declare angulo_inclinacao_antebraco_esquerdo = 130; #if (clock < 0.5) #declare angulo_inclinacao_perna_esquerda = interpola(0.0, 0.5, 75, -60); #declare angulo_inclinacao_perna_direita = interpola(0.0, 0.5, -60, 75); #else #declare angulo_inclinacao_perna_esquerda = interpola(0.5, 1.0, -60, 75); #declare angulo_inclinacao_perna_direita = interpola(0.5, 1.0, 75, -60); #end #if (clock < 0.25) #declare angulo_inclinacao_joelho_esquerdo = interpola(0.00, 0.25, -15, 0); #declare angulo_inclinacao_joelho_direito = interpola(0.00, 0.25, -15, -75); #declare angulo_pe_esquerdo = interpola(0.00, 0.25, -30, 0); #declare angulo_pe_direito = interpola(0.00, 0.25, 45, 0); #else #if (clock < 0.50) #declare angulo_inclinacao_joelho_esquerdo = interpola(0.25, 0.50, 0, -15); #declare angulo_inclinacao_joelho_direito = interpola(0.25, 0.50, -75, -15); #declare angulo_pe_esquerdo = interpola(0.25, 0.50, 0, 45); #declare angulo_pe_direito = interpola(0.25, 0.50, 0, -30); #else #if (clock < 0.75) #declare angulo_inclinacao_joelho_esquerdo = interpola(0.50, 0.75, -15, -75); #declare angulo_inclinacao_joelho_direito = interpola(0.50, 0.75, -15, 0); #declare angulo_pe_esquerdo = interpola(0.50, 0.75, 45, 0); #declare angulo_pe_direito = interpola(0.50, 0.75, -30, 0); #else #declare angulo_inclinacao_joelho_esquerdo = interpola(0.75, 1.00, -75, -15); #declare angulo_inclinacao_joelho_direito = interpola(0.75, 1.00, 0, -15); #declare angulo_pe_esquerdo = interpola(0.75, 1.00, 0, -30); #declare angulo_pe_direito = interpola(0.75, 1.00, 0, 45); #end #end #end #declare PEY = sin(angulo_inclinacao_perna_esquerda) * 3 - sin(180 + angulo_inclinacao_perna_esquerda + angulo_inclinacao_joelho_esquerdo) * 3; #declare PEX = cos(angulo_inclinacao_perna_esquerda) * 3 + 0; #declare desloca_rato_y = 9.1 * clock; background{ color rgb < 0.50, 0.50, 0.50 > } #declare tinta_pele = texture { pigment { color rgb < 0.45, 0.45, 0.50 > } finish { ambient 0.6 diffuse 0.8 phong 0.1 reflection 0.05 roughness 0.05 brilliance 1 } } #declare tinta_focinho = texture { pigment { color rgb < 0.00, 0.00, 0.00 > } finish { ambient 0.6 diffuse 0.8 phong 4 reflection 0.2 roughness 0.05 brilliance 1 } } #declare tinta_orelha = texture { pigment { color rgb < 8.00, 4.00, 3.00 > } finish { ambient 0.1 diffuse 0.1 phong 0.5 reflection 0.05 roughness 0.05 brilliance 1 } } #declare chao = box { < -8, -8, -1 >, < 8, 8, 0 > texture { pigment { color rgb < 0.10, 0.10, 0.10 > } finish { ambient 0.6 diffuse 0.8 phong 10 reflection 0.3 roughness 0.05 brilliance 10 } } } #declare cabeca_1 = cone { <0, 0, 0>, 1 <0, 4, 0>, 0 texture { tinta_pele } } #declare cabeca_2 = sphere { < 0.0, -0.40, 0 >, 1.1 texture { tinta_pele } } #declare focinho = sphere { < 0.0, 3.6, 0 >, 0.5 texture { tinta_focinho } } #declare orelha = difference { object { sphere { < 0, 0, 0 >, 1.1 texture { tinta_pele } } } object { sphere { < 0, 1.60, 0 >, 2 texture { tinta_orelha } } } } #declare cabeca = union { object { cabeca_1 } object { cabeca_2 } object { focinho } object { orelha translate <-1.2, -0.70, 0.8> } object { orelha translate <1.2, -0.70, 0.8> } } #declare pescoco = cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, 1.60 >, 0.50 texture { tinta_pele } } #declare corpo = union { object { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, 3.0 >, 1.2 texture { tinta_pele } } } object { sphere { < 1.4, 0, 2.4 >, 1 texture { tinta_pele } } } object { sphere { < -1.4, 0, 2.4 >, 1 texture { tinta_pele } } } object { sphere { < 0.5, 0, -0.40 >, 1 texture { tinta_pele } } } object { sphere { < -0.5, 0, -0.40 >, 1 texture { tinta_pele } } } object { sphere { < 0, -0.6, -0.20 >, 0.8 texture { tinta_pele } } } } #declare antebraco = union { object { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -3.0 >, 0.5 texture { tinta_pele } } } object { sphere { < 0, 0, -3.4 >, 0.8 texture { tinta_pele } } } } #macro braco (angulo_antebraco) union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -3.0 >, 0.5 texture { tinta_pele } } object { sphere { < 0, 0, -3.4 >, 0.8 texture { tinta_pele } } } object { antebraco rotate angulo_antebraco * x translate -3.4 * z } } #end #macro canela_peh(angulo_peh) union { object { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -3.0 >, 0.5 texture { tinta_pele } } } object { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 2.00, 0.0 >, 0.5 texture { tinta_pele } } rotate angulo_peh * x translate -3 * z } } #end #macro perna (angulo_canela_peh, angulo_peh) union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -3.0 >, 0.5 texture { tinta_pele } } object { sphere { < 0, 0, -3.4 >, 0.8 texture { tinta_pele } } } object { canela_peh(angulo_peh) rotate angulo_canela_peh * x translate -3.4 * z } } #end #macro rato(ang_cabeca_a, ang_cabeca_b, ang_braco_d1, ang_braco_d2, ang_antebraco_d, ang_braco_e1, ang_braco_e2, ang_antebraco_e, ang_perna_d, ang_canela_peh_d, ang_perna_e, ang_canela_peh_e, ang_peh_d, ang_peh_e) object { union { object { cabeca rotate ang_cabeca_a * z rotate ang_cabeca_b * x translate <0, 0.4, 11.6> } object { pescoco translate <0, 0, 9.4>} object { corpo translate <0, 0, 7> } object { braco(ang_antebraco_d) rotate ang_braco_d1 * y rotate ang_braco_d2 * x translate <1.8, 0, 9.6> } object { braco(ang_antebraco_e) rotate ang_braco_e1 * y rotate ang_braco_e2 * x translate <-1.8, 0, 9.6> } object { perna(ang_canela_peh_d, ang_peh_d) rotate ang_perna_d * x translate <0.5, 0, 6.4> } object { perna(ang_canela_peh_e, ang_peh_e) rotate ang_perna_e * x translate <-0.5, 0, 6.4> } } } #end object { rato (angulo_rotacao_cabeca, angulo_inclinacao_cabeca, angulo_abertura_braco_direito, angulo_inclinacao_braco_direito, angulo_inclinacao_antebraco_direito, angulo_abertura_braco_esquerdo, angulo_inclinacao_braco_esquerdo, angulo_inclinacao_antebraco_esquerdo, angulo_inclinacao_perna_direita, angulo_inclinacao_joelho_direito, angulo_inclinacao_perna_esquerda, angulo_inclinacao_joelho_esquerdo, angulo_pe_direito, angulo_pe_esquerdo) rotate z * angulo_rotacao_rato translate } // Original camera parameters: // #local cam_ctr = <0.00,0.00,8.00> // #local cam_vec = (<-30.00,30.00,12.00>-<0.00,0.00,8.00>) // #local cam_sky = z #include "camlight.inc" // camlight(<0.00,0.00,8.00>,<10,10,10>,20.0,z,1.0) camlight(<0.00,0.00,8.00>,<7,10,5>,23.0,z,1.0)