// ----------------------------------------------------------------------------------- // louis bellotto - louisbel @ free.fr // // radiosity test // ----------------------------------------------------------------------------------- #version unofficial MegaPov 1.1; // -------------------------------------------------------------------------- // --- INCLUDES ------------------------------------------------------------- // -------------------------------------------------------------------------- #include "colors.inc" #include "rad_def.inc" #include "myMacros.inc" #declare displayAxis = true; #declare pieceLargeur = 5000; // les dimensions sont en millimetres. #declare pieceLongueur = 10000; #declare pieceHauteur = 2800; #declare murEpaisseur = 200; // -------------------------------------------------------------------------- // --- SCENE ---------------------------------------------------------------- // -------------------------------------------------------------------------- global_settings { assumed_gamma 1.8 max_trace_level 16 radiosity { // Rad_Settings(Radiosity_Default, off, off) // Rad_Settings(Radiosity_Normal, off, off) // Rad_Settings(Radiosity_Final, off, off) // Rad_Settings(Radiosity_IndoorLQ, off, off) Rad_Settings(Radiosity_IndoorHQ, off, off) // les temps de rendus sont de plus en plus longs... } } #declare camera1 = camera { location p2r(45, 30, 25000,false) look_at <0, 0, 0> } #declare camera2 = camera { location <pieceLongueur-3*murEpaisseur, 1700, pieceLargeur-3*murEpaisseur> look_at <2*murEpaisseur, 1700, 2*murEpaisseur> } #declare camera3 = camera { location <(2*murEpaisseur+pieceLongueur)*0.50, pieceHauteur-200,(2*murEpaisseur+pieceLargeur)*0.50> look_at <(2*murEpaisseur+pieceLongueur)*0.50, 1200,(2*murEpaisseur+pieceLargeur)*0.50> } camera { camera2 } light_source { p2r(45, 45, 500000,false) color White } background { color White } #if (displayAxis) drawAxis (25000, 100) #end // -------------------------------------------------------------------------- // --- PIECE ---------------------------------------------------------------- // -------------------------------------------------------------------------- #declare piece = union { // --- plafond box { <0, 0, 0> <pieceLongueur+2*murEpaisseur, -murEpaisseur, pieceLargeur+2*murEpaisseur> translate pieceHauteur*y } // --- murs box { <0, 0, 0> <pieceLongueur+2*murEpaisseur, pieceHauteur, murEpaisseur> } box { <0, 0, 0> <pieceLongueur+2*murEpaisseur, pieceHauteur, murEpaisseur> translate (pieceLargeur+murEpaisseur)*z } box { <0, 0, 0> <+murEpaisseur, pieceHauteur, pieceLargeur+2*murEpaisseur> } box { <0, 0, 0> <+murEpaisseur, pieceHauteur, pieceLargeur+2*murEpaisseur> translate (pieceLongueur+murEpaisseur)*x } } #declare ambientValue = 0.30; #declare diffuseValue = 1.10-ambientValue; // --- sol box { <0, 0, 0> <pieceLongueur+2*murEpaisseur, -murEpaisseur, pieceLargeur+2*murEpaisseur> pigment { checker Black, White scale 500 translate < murEpaisseur, 0, murEpaisseur> } finish { ambient ambientValue diffuse diffuseValue } } object { piece pigment { color White } finish { ambient ambientValue diffuse diffuseValue } } // -------------------------------------------------------------------------- // --- NEONS ---------------------------------------------------------------- // -------------------------------------------------------------------------- #declare tube = cylinder { <0, 25, 0> <0, 25, 600> 25 } #declare tubes = union { object { tube translate -200*x } object { tube } object { tube translate +200*x } } #declare tubeAltitude = pieceHauteur-murEpaisseur-50; // -2*murEpaisseur; union { object { tubes translate <murEpaisseur+pieceLongueur*0.25, tubeAltitude, murEpaisseur+pieceLargeur*0.25-300> } object { tubes translate <murEpaisseur+pieceLongueur*0.75, tubeAltitude, murEpaisseur+pieceLargeur*0.25-300> } object { tubes translate <murEpaisseur+pieceLongueur*0.25, tubeAltitude, murEpaisseur+pieceLargeur*0.75-300> } object { tubes translate <murEpaisseur+pieceLongueur*0.75, tubeAltitude murEpaisseur+pieceLargeur*0.75-300> } pigment { color White+Gold*0.25 } finish { ambient 0 diffuse 25 } } // -------------------------------------------------------------------------- // --- TABLE ---------------------------------------------------------------- // -------------------------------------------------------------------------- #declare table = union { cylinder { <0, 0, 0> <0, 20, 0> 300 } torus { 300, 10 translate 10*y } cylinder { <0, 20, 0> <0, 40, 0> 260 } torus { 260, 10 translate 30*y } cylinder { <0, 40, 0> <0, 60, 0> 220 } torus { 220, 10 translate 50*y } cylinder { <0, 1100, 0> <0, 1200, 0> 750 } torus { 750, 50 translate 1150*y } } union { object { table pigment { color White*0.25 } finish { ambient ambientValue diffuse diffuseValue phong 0.90 } } cylinder { <0, 0, 0> <0, 1190, 0> 80 pigment { color White*0.05 } finish { ambient ambientValue diffuse diffuseValue reflection 1 metallic } } translate <(2*murEpaisseur+pieceLongueur)*0.50, 0,(2*murEpaisseur+pieceLargeur)*0.50> } // -------------------------------------------------------------------------- // --- OBJETS SUR LA TABLE -------------------------------------------------- // -------------------------------------------------------------------------- cone { <0, 0, 0>, 350, <0, 500, 0>, 0 pigment { color Yellow } finish { ambient ambientValue+0.1 diffuse diffuseValue phong 0.90 } translate <(2*murEpaisseur+pieceLongueur)*0.50-300, 1200,(2*murEpaisseur+pieceLargeur)*0.50-300> } cylinder { <0, 0, 0>, <0, 450, 0> 100 pigment { color Red } finish { ambient ambientValue+0.1 diffuse diffuseValue phong 0.90 } translate <(2*murEpaisseur+pieceLongueur)*0.50+400, 1200,(2*murEpaisseur+pieceLargeur)*0.50+150> } box { <-200, 0, -200> <+200, 400, +200> rotate -30*y pigment { color Blue } finish { ambient ambientValue+0.1 diffuse diffuseValue phong 0.90 } translate <(2*murEpaisseur+pieceLongueur)*0.50-150, 1200,(2*murEpaisseur+pieceLargeur)*0.50+350> } sphere { <0, 200, 0> 200 pigment { color Green } finish { ambient ambientValue+0.1 diffuse diffuseValue phong 0.90 phong_size 50 } translate <(2*murEpaisseur+pieceLongueur)*0.50+300, 1200,(2*murEpaisseur+pieceLargeur)*0.50-200> } // -------------------------------------------------------------------------- // --- MIRROIR -------------------------------------------------------------- // -------------------------------------------------------------------------- #declare mirroirEpaisseur = 20; #declare mirroirHauteur = 1600; #declare mirroirLargeur = 2500; #declare mirroirAltitude = (pieceHauteur-mirroirHauteur)*0.50; box { <0, 0, 0> <mirroirEpaisseur, mirroirHauteur, mirroirLargeur> pigment { color Black } finish { ambient 0 diffuse 1 reflection 1 } translate <murEpaisseur+mirroirEpaisseur+1, mirroirAltitude, (pieceLargeur*0.50)+murEpaisseur-(mirroirLargeur*0.50)> } // -------------------------------------------------------------------------- // --- TABOURETS ------------------------------------------------------------ // -------------------------------------------------------------------------- #include "tabouret.inc" #set tabouret = object { tabouret scale 1.10 } object { tabouret rotate 30*y translate <3500, 0, 3250> } object { tabouret rotate 110*y translate <6000, 0, 2000> } object { tabouret rotate 200*y translate <7000, 0, 3000> } object { tabouret rotate 260*y translate <3500, 0, 4600> }