/* * H E X A C O N E - E S S A I * nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024 */ #version 3.7; #include "globals.inc" #include "contexte.inc" #include "elements.inc" #include "hexabenz.inc" // ======================================================= /* * nouveau debut fevrier 2025 - we love raytracing */ /* * deux textures */ #declare T_Beton_1 = texture { pigment { color <0.9, 0.8, 0.8> } normal { dents 0.75 scale 0.3 } } #declare T_Beton_2 = texture { pigment { color <0.9, 0.8, 0.8> } normal { dents 0.25 scale 2 } } /* * une seule forme de cabane pour le moment */ #declare Base_cabane_forme = object { difference { box { <-0.90, 0, 0>, <0.90, 1.00, 0.80> } box { <-0.89, -1, -1> <0.89, 0.99, 0.79> } cylinder { <-1, 0.75, -0.23>, <1, 0.75, 0.23>, 0.09 } } } /* * comparaison des deux textures par le rendu * de la meme forme de cabane. */ #declare Cabane_Base_1 = object { object { Base_cabane_forme } texture { T_Beton_1 } } #declare Cabane_Base_2 = object { object { Base_cabane_forme } texture { T_Beton_2 } } /* * assemblage des deux versions face a face */ #declare Les_Cabanes = object { union { #local E = 1.10; object { Cabane_Base_1 rotate 270*y translate -x*E } object { Cabane_Base_2 rotate 90*y translate x*E } #undef E } } // ======================================================= #declare QuadriPole = object { #local R = 0.02; #local E = 0.25; #local H = H_cone*2; union { cylinder { 0, y*H, R translate -x*E } cylinder { 0, y*H, R translate x*E } cylinder { 0, y*H, R translate -z*E } cylinder { 0, y*H, R translate z*E } } texture { WIP_color } #undef E #undef H #undef R } // ======================================================= #macro Bubble () sphere { 0, 0.065 #if ( rand(Rng1) < 0.333 ) texture { Ruby_Glass } #elseif ( rand(Rng1) < 0.666 ) texture { Orange_Glass } #else texture { Gold_Nugget } #end } #end #macro Un_Machin () union { #for (Y, 1, 8, 1) object { Bubble() translate y*Y*0.1 } #end } #end #declare Les_Machins = object { union { #local Rk = 3.95 + NormClock; #for (foo, 0, 359, 45) #local Xpos = Rk * sin(radians(foo)); #local Zpos = Rk * cos(radians(foo)); #local RND = rand(Rng1); object { Un_Machin () translate } #end #undef RND #undef Rk } } // ======================================================= object { GroundBase } object { Les_Cabanes rotate -y*(clock*0.75) translate y*H_base } // object { OpenBox translate y*1.2 } object { Les_Machins translate y*1.5 } object { Le_Decor } object { Repere translate y*2 } // ======================================================= // light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> } // light_source { < 11, 7, 4>, rgb <1-NormClock, 0.28, 0.80> } #local CamX = -2.7 + (3.8*Cos_01(NormClock)); #local CamY = 1.81 + (4*sqrt(NormClock)); #local CamZ = 1.7 + (3.8*Cos_01(NormClock)); camera { // fisheye location look_at <0, 0.5, 0> angle 32 + 4*Cos_01(NormClock) }