// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2021-12-09 10:42:54 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.2, 0.2, 0.4 > } #declare tx_dirt = texture{ pigment{ color rgb < 0.2, 0.2, 0.2 > } finish{ diffuse 0.8 reflection 0.25 ambient 0.0 specular 0.5 roughness 0.1} } #declare tx_trunk = texture{ pigment{ color rgb < 0.5, 0.2, 0.1 > } finish{ diffuse 0.8 ambient 0.0 specular 0.5 roughness 0.8} normal { bumps 1 scale .05 } } #declare tx_leaf = texture{ pigment{ color rgb < 0.4, 1, 0.2 > } finish{ diffuse 0.8 ambient 0.0 specular 0.5 roughness 0.5} } #declare tx_ground = texture{ pigment{ color rgb < 0.7, 0.6, 0.2 > } finish{ diffuse 0.8 specular 0.9 roughness 0.1} normal { bumps 0.1 scale 1 } } #declare tx_clank_dark_gray = texture{ pigment{ color rgb < 0.1, 0.1, 0.1 > } finish{ diffuse 0.8 specular 0.5 roughness 0.1} } #declare tx_clank_light_gray = texture{ pigment{ color rgb < 0.5, 0.5, 0.5 > } finish{ diffuse 0.8 specular 0.5 roughness 0.1} } #declare tx_clank_mid_gray = texture{ pigment{ color rgb < 0.2, 0.2, 0.2 > } finish{ diffuse 0.8 specular 0.5 roughness 0.1} } #declare tx_eye = texture{ pigment{ color rgb < 1, 0.2, 0.2 > } finish{ diffuse 1 ambient 0.5 specular 0.5 roughness 0.1} } #declare tx_fire = texture{ pigment{ color rgb < 1.000, 0.650, 0.200 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_fire_red= texture{ pigment{ color rgb < 1.000, 0.450, 0.200 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 1 specular 0.25 roughness 0.005 } } // ====================================================================== // DESCRICAO DA CENA #declare ground = box{ <-400,-400,-1>, <+400,+400,0> texture{ tx_ground } } #macro clank_chin(head_angle) object{ union{ difference { sphere { <0, 0, 0>, 0.05 // , radius texture{ tx_clank_light_gray} scale <1,1,1.2> } box { <2, 2, 2>, <-1,-1, 0.0> // near lower left corner, far upper right corner texture{ tx_clank_dark_gray} } } // neck cylinder { <0, 0, -0.04>, <0, 0, -0.09>, 0.01 // center of one end, center of other end, radius texture{ tx_clank_dark_gray} } object { clank_forehead() rotate <0, -head_angle, 0> translate <-0.05,0, 0> } } translate <0, 0, 0.05*1.2> // } #end #macro clank_forehead() object { union { difference { sphere { <0, 0, 0>, 0.05 // , radius texture{ tx_clank_light_gray} scale <1,1,1.2> } box { <-2, -2, -2>, <2,2, 0.0> // near lower left corner, far upper right corner texture{ tx_clank_dark_gray} } } // Eye Right cylinder { <0, 0.025, 0.025>, <0.05, 0.025, 0.025>, 0.015 // center of one end, center of other end, radius texture{ tx_clank_mid_gray} } sphere { <0.05, 0.025, 0.025>, 0.013 // , radius texture{ tx_eye} } // Eye Left cylinder { <0, -0.025, 0.025>, <0.05, -0.025, 0.025>, 0.015 // center of one end, center of other end, radius texture{ tx_clank_mid_gray} } sphere { <0.05, -0.025, 0.025>, 0.013 // , radius texture{ tx_eye} } } translate <0.05, 0, 0> } #end #macro clank_top_falange() object{ union { box { <-0.0095, 0, -0.005>, <0.0095, 0.01, 0.005> // near lower left corner, far upper right corner texture{ tx_clank_dark_gray} } box { <-0.01, 0.01, -0.005>, <0.01, 0.02, 0.005> // near lower left corner, far upper right corner texture{ tx_clank_mid_gray} } } } #end #macro clank_bot_falange(top_falange_angle) object{ // create finger middle union { box { <-0.0095, 0, -0.005>, <0.0095, 0.01, 0.005> // near lower left corner, far upper right corner texture{ tx_clank_dark_gray} } box { <-0.01, 0.01, -0.005>, <0.01, 0.02, 0.005> // near lower left corner, far upper right corner texture{ tx_clank_mid_gray} } // append top falange object { clank_top_falange() rotate // translate <0, 0.02, 0> // } } } #end #macro clank_hand(thumb_bot_falange_angle, thumb_top_falange_angle, f1_bot_falange_angle, f1_top_falange_angle, f2_bot_falange_angle, f2_top_falange_angle) object{ union { // create hand object { box { <-0.02, 0, -0.005>, <0.02, 0.04, 0.005> // near lower left corner, far upper right corner texture{ tx_clank_light_gray} } } // append fingers object{ union { // Finger 1 object { clank_bot_falange(f1_top_falange_angle) rotate // translate <-0.01, 0.04, 0> // } // Finger 2 object { clank_bot_falange(f2_top_falange_angle) rotate // translate <0.01, 0.04, 0> // } // Thumb object { clank_bot_falange(thumb_top_falange_angle) scale <1.1, 0.5, 1> rotate // translate <0.02, 0.01, 0> // } } } } } #end #macro clank_forearm(hand_angle, thumb_bot_falange_angle, thumb_top_falange_angle, f1_bot_falange_angle, f1_top_falange_angle, f2_bot_falange_angle, f2_top_falange_angle) object{ union { // create forearm object { union{ cylinder { <0, 0, -0.0045>, <0, 0, 0.0045>, 0.006 // center of one end, center of other end, radius texture{ tx_clank_light_gray} } cylinder { <0, 0, -0.0055>, <0, 0, 0.0055>, 0.005 // center of one end, center of other end, radius texture{ tx_clank_dark_gray} } cylinder { <0, 0, 0>, <0, 0.03, 0>, 0.004 // center of one end, center of other end, radius texture{ tx_clank_dark_gray} } } } // append fingers object{ // hand object { clank_hand( thumb_bot_falange_angle, thumb_top_falange_angle, f1_bot_falange_angle, f1_top_falange_angle, f2_bot_falange_angle, f2_top_falange_angle ) rotate // translate <0, 0.028, 0> // } } } } #end #macro clank_arm(forearm_angle, hand_angle, thumb_bot_falange_angle, thumb_top_falange_angle, f1_bot_falange_angle, f1_top_falange_angle, f2_bot_falange_angle, f2_top_falange_angle) object{ union { // create arm object { union{ // ombrera cylinder { <0, 0, -0.005>, <0, 0, 0.005>, 0.015 // center of one end, center of other end, radius texture{ tx_clank_light_gray} } cylinder { <0, 0, 0.005>, <0, 0, 0.02>, 0.004 // center of one end, center of other end, radius texture{ tx_clank_dark_gray} } cylinder { <0, 0, 0>, <0, 0.03, 0>, 0.004 // center of one end, center of other end, radius translate <0, 0.015, 0> // texture{ tx_clank_dark_gray} } } } // append fingers object{ union { // hand object { clank_forearm( hand_angle, thumb_bot_falange_angle, thumb_top_falange_angle, f1_bot_falange_angle, f1_top_falange_angle, f2_bot_falange_angle, f2_top_falange_angle ) rotate <0, 0, -forearm_angle> // translate <0, 0.045, 0> // } } } } } #end #macro clank_propulsor() object { union { cone { <0, 0, 0>, 0.03 // , center & radius of one end <0, 0.01, -0.09>, 0 // , center & radius of the other end texture{ tx_fire} } cone { <0, 0, 0>, 0.03 // , center & radius of one end <0.01, 0, -0.09>, 0 // , center & radius of the other end texture{ tx_fire} } cone { <0, 0, 0>, 0.03 // , center & radius of one end <0, -0.01, -0.09>, 0 // , center & radius of the other end texture{ tx_fire} } cone { <0, 0, 0>, 0.03 // , center & radius of one end <-0.01, 0, -0.09>, 0 // , center & radius of the other end texture{ tx_fire} } cone { <0, 0, 0>, 0.038 // , center & radius of one end <0, 0, -0.1>, 0 // , center & radius of the other end texture{ tx_fire_red} } } } #end #macro clank_body(prop_rot, prop_trans, mouth_angle, head_angle, arm_angle1_right, arm_angle_2_right, forearm_angle_right, hand_angle_right, thumb_bot_falange_angle_right, thumb_top_falange_angle_right, f1_bot_falange_angle_right, f1_top_falange_angle_right, f2_bot_falange_angle_right, f2_top_falange_angle_right, arm_angle1_left, arm_angle_2_left, forearm_angle_left, hand_angle_left, thumb_bot_falange_angle_left, thumb_top_falange_angle_left, f1_bot_falange_angle_left, f1_top_falange_angle_left, f2_bot_falange_angle_left, f2_top_falange_angle_left) object{ union { // create arm object { union { box { <-0.07, -0.05, 0>, <0.07, 0.05, 0.12> // near lower left corner, far upper right corner texture{ tx_clank_light_gray} } box { <-0.075, -0.04, 0.03>, <0.075, 0.04, 0.1> // near lower left corner, far upper right corner texture{ tx_clank_dark_gray} } } } // append arms object{ // hand union { object { clank_arm( forearm_angle_left,hand_angle_left, thumb_bot_falange_angle_left, thumb_top_falange_angle_left, f1_bot_falange_angle_left, f1_top_falange_angle_left, f2_bot_falange_angle_left, f2_top_falange_angle_left ) rotate <-90, 0, -forearm_angle_left> // translate <0, -0.07, 0.08> // } object { clank_arm( forearm_angle_right,hand_angle_right, thumb_bot_falange_angle_right, thumb_top_falange_angle_right, f1_bot_falange_angle_right, f1_top_falange_angle_right, f2_bot_falange_angle_right, f2_top_falange_angle_right ) scale <1,-1,1> rotate <90, 0, -forearm_angle_right> // translate <0, 0.07, 0.08> // } } } // append head object { clank_chin(mouth_angle) rotate <0,0,head_angle> translate <0, 0, 0.13> // } // Propulsor cylinder { <0, 0, -0.02>, <0, 0, 0.010>, 0.04 // center of one end, center of other end, radius open // remove end caps texture{ tx_clank_dark_gray} } object { clank_propulsor() rotate <0,0,prop_rot> translate <0, 0, prop_trans> // } } } #end #include "eixos.inc" // Aqui est� a cena, finalmente: union{ object{ground} // object{ eixos(0.1) } object{ clank_body(12, 0.01, 30, 10, -30, 20, 10, -40, 60, 40, -30, 50, -20, -60, 40, -20, 60, 50, -30, -80, 50, 40, -30, 30) translate <00.00, -0.30, +0.20> } object{ clank_body(12, 0.01, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) translate <00.00, 00.00, +0.20> } object{ clank_body(12, 0.01, 40, -76, 88, -85, 17, 43, 39, -67, 1, 77, 65, -43, 17, -88, -72, 83, -40, 54, -19, 77, 4, 11 ) translate <00.00, +0.30, +0.20> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0, 0.3 >; #declare raio_cena = 0.55; #declare dir_camera = < 20.00, 8.00, 3.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)