/* * nouveau projet Thu Dec 5 11:37:05 AM UTC 2024 */ /* voir aussi le fichier 'globals.inc' */ /* ======================================================= */ #declare GroudBase_coin = object { merge { cylinder { 0, y*0.4, 0.09 } sphere { 0, 0.09 scale <1, 0.23, 1> translate y*0.4 } } } #declare GroundBase = object { #local Sz = SzBase - 0.02; union { box { <-SzBase, 0, -SzBase>, } object { GroudBase_coin translate <-Sz, 0, -Sz> } object { GroudBase_coin translate < Sz, 0, -Sz> } object { GroudBase_coin translate <-Sz, 0, Sz> } object { GroudBase_coin translate < Sz, 0, Sz> } } texture { T_Stone6 rotate 9 scale 0.32 } #undef Sz } /* ======================================================= */ #macro GyroPhare_mat () union { cylinder { 0, y*H_gyro, R_gyro } intersection { sphere { 0, R_gyro scale <1, 1.414, 1> } box { <-1, 0, -1>, <1, 1, 1> } translate y*(H_gyro+H_gylampe+0.01) } #if (rand(Rng1) < 0.5) texture { T_Stone25 scale 1+rand(Rng1) } #else texture { T_Stone6 } #end } #end // macro #macro GyroPhare_lampe () union { difference { cylinder { 0, y*0.20, R_gyro } cylinder { y*0.01, y*0.19, R_gyro*0.97 } #local WB = 0.015; box { <-1, 0.03, -WB>, <1, 0.18, WB> } box { <-WB, 0.03, -1>, } #undef WB pigment { color Gray90 } #local Ro = 0.5-rand(Rng1); #if (abs(Ro) < 0.01) #local Ro = Ro * 10; #end rotate y*(0.5-rand(Rng1)) * clock } light_source { y*0.10 rgb <0.8, 0.9, 0.999999999> fade_distance 3.96 fade_power 1.55 } } #end // macro #macro GyroPhare () union { object { GyroPhare_mat () } object { GyroPhare_lampe () // rotate y*rand(Rng1)*clock translate y*(H_gyro+0.02) } } #end // macro #macro Les_GyroPhares () union { #local E = SzSol * 0.485; object { GyroPhare () translate <-E, 0, -E> } object { GyroPhare () translate < E, 0, -E> } object { GyroPhare () translate <-E, 0, E> } object { GyroPhare () translate < E, 0, E> } object { GyroPhare () translate <-E, 0, 0> } object { GyroPhare () translate < E, 0, 0> } object { GyroPhare () translate < 0, 0, -E> } object { GyroPhare () translate < 0, 0, E> } #undef E } #end /* ======================================================= */ #declare Rhxba = 0.30; #declare R2hxba = Rhxba * 0.48; #declare HexaBalls = object { merge { sphere { 0, Rhxba } #local E = Rhxba * 1.260; sphere { 0, R2hxba translate <-E, 0, 0> } sphere { 0, R2hxba translate < E, 0, 0> } sphere { 0, R2hxba translate < 0, -E, 0> } sphere { 0, R2hxba translate < 0, E, 0> } sphere { 0, R2hxba translate < 0, 0, -E> } sphere { 0, R2hxba translate < 0, 0, E> } #undef E } } #declare Les_Bibelots = object { union { object { HexaBalls texture { Lightning1 scale 0.33 } rotate translate <5, -1.1+1.01*Cos_010(NormClock), 7> } object { HexaBalls texture { Lightning2 scale 0.56 } // rotate <-clock, clock*0.33333, clock> translate <7, -1+0.92*Cos_010(NormClock), -6> } } } /* ------------------------------------------------------------ */ #declare RHBlo = 0.24; #declare RHBlo2 = RHBlo * 0.666; #declare HexaBlob = object { blob { // threshold 0.01 + NormClock threshold 0.01 sphere { <0, 0, 0>, RHBlo, 1 } #local E = RHBlo * 1.210; #local W = 0.1; sphere { <-E, 0, 0>, RHBlo2, W } sphere { < E, 0, 0>, RHBlo2, W } sphere { < 0, -E, 0>, RHBlo2, W } sphere { < 0, E, 0>, RHBlo2, W } sphere { < 0, 0, -E>, RHBlo2, W } sphere { < 0, 0, E>, RHBlo2, W } } } /* ======================================================= */ #declare Le_Sol = object { height_field { png "datas/hf.png" smooth translate <-.5, 0, -.5> scale texture { pigment { // color DarkGreen image_map { png "datas/noise.png" } rotate x*90 translate <-.5, 0, -.5> scale } // normal { bumps 0.035 scale 0.186 } finish { phong 0.105 } } } } #declare Underground = object { plane { y, -1.75 } texture { pigment { color Gray20 } normal { bumps 0.38 scale 4 } finish { phong 0.125 } } } /* ======================================================= */ #declare Repere = object { union { #local R = 0.008; cylinder { 0, <1, 0, 0>, R pigment { color Red } } cylinder { 0, <0, 1, 0>, R pigment { color Green } } cylinder { 0, <0, 0, 1>, R pigment { color Blue } } } } /* ======================================================= */ #declare OpenBox = object { union { #local R = 0.010; /* les verticales */ cylinder { <-1, -1, -1>, <-1, 1, -1>, R } cylinder { < 1, -1, -1>, < 1, 1, -1>, R } cylinder { <-1, -1, 1>, <-1, 1, 1>, R } cylinder { < 1, -1, 1>, < 1, 1, 1>, R } /* en bas */ cylinder { < 1, -1, 1>, <-1, -1, 1>, R } cylinder { < 1, -1, -1>, <-1, -1, -1>, R } cylinder { <-1, -1, 1>, <-1, -1, -1>, R } cylinder { < 1, -1, 1>, < 1, -1, -1>, R } /* en haut */ cylinder { < 1, 1, 1>, <-1, 1, 1>, R } cylinder { < 1, 1, -1>, <-1, 1, -1>, R } cylinder { <-1, 1, 1>, <-1, 1, -1>, R } cylinder { < 1, 1, 1>, < 1, 1, -1>, R } #undef R texture { WIP_color } } } /* ======================================================= */ #declare Les_Lumieres = object { union { #if (1) light_source { <2.3, 5.50, 2.8> color Gray70 spotlight radius 14 falloff 10 tightness 10 point_at <0, 0.95, 0.22222222> } #end #if (1) light_source { <-5, 5.60, 18> #if ( (clock > 290) & (clock<344) ) #local Couleur = rgb <0.20, 0.20, 0.90>; #else #local Couleur = rgb <0.80, 0.80, 0.70>; #end color Couleur spotlight radius 12 falloff 10 tightness 5 point_at <0, 0.95, -0.22> } #end light_source { <-4, 54, -7> colour Gray50 parallel point_at 0 } } } /* ======================================================= */ // #declare Le_Ciel = object // { sky_sphere { pigment { gradient y color_map { [ 0.2 color Gray10 ] [ 0.4 color Gray60 ] [ 0.7 color Black ] [ 0.8 color White ] [ 1.0 color Gray10 ] } turbulence 3.14159 + 0.78 * Cos_010(NormClock) scale 1.804 // translate -1 } #local Kem = 0.09; emission rgb } // } /* ======================================================= */ /* * Et on rassemble tous les éléments... */ #declare Le_Decor = object { union { object { Le_Sol } object { Underground } object { GroundBase } object { Les_Bibelots } object { Les_Lumieres } object { Les_GyroPhares () } } } /* ------------------------------------------------------------ */