429 lines
8.9 KiB
PHP
429 lines
8.9 KiB
PHP
/*
|
|
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
|
*/
|
|
|
|
/* voir aussi le fichier 'globals.inc' */
|
|
|
|
/* ======================================================= */
|
|
/*
|
|
* nouveau debut fevrier 2025 - we love raytracing
|
|
*
|
|
* une cabane pour faire riche.
|
|
*/
|
|
|
|
|
|
/*
|
|
* une seule forme de cabane pour le moment
|
|
*/
|
|
#declare Base_cabane_forme = object
|
|
{
|
|
difference {
|
|
#local Hc = 0.90;
|
|
box { <-0.90, 0, 0>, <0.90, Hc, 0.80> }
|
|
box { <-0.89, 0.01, -1> <0.89, Hc-0.01, 0.79> }
|
|
#local Hc = Hc * 0.75;
|
|
cylinder { <-1, Hc, -0.29>, <1, Hc, 0.29>, 0.09 }
|
|
#undef Hc
|
|
}
|
|
}
|
|
|
|
/*
|
|
* 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 }
|
|
}
|
|
|
|
/* ======================================================= */
|
|
|
|
#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_a = object
|
|
{
|
|
union {
|
|
#local Dx = 1.5;
|
|
#local Dz = 1.0;
|
|
box { <-Dx, 0, -Dz>, <Dx, H_base, Dz> }
|
|
#local Ha = y*(H_base*2);
|
|
cylinder { 0, Ha, 0.08 translate <Dx, 0, -Dz> }
|
|
#local Hb = Ha * 1.17;
|
|
cone { Ha, 0.08, Hb, 0.05 translate < Dx, 0, -Dz> }
|
|
cone { Ha, 0.08, Hb, 0.05 translate <-Dx, 0, -Dz> }
|
|
#undef Ha
|
|
#undef Hb
|
|
#undef Dx
|
|
#undef Dz
|
|
}
|
|
texture { T_Grnt7 rotate 49 scale 0.22 }
|
|
}
|
|
|
|
#declare GroundBase_b = object
|
|
{
|
|
#local Sz = SzBase - 0.02;
|
|
union {
|
|
box { <-SzBase, 0, -SzBase>, <SzBase, H_base, 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_Grnt27 rotate 9 scale 0.32 }
|
|
#undef Sz
|
|
}
|
|
|
|
/* ------------------------------------------------------------ */
|
|
|
|
#declare La_GroundBase = object
|
|
{
|
|
union {
|
|
object { GroundBase_b }
|
|
/*
|
|
* ici, mettre la cabane
|
|
*/
|
|
#local Dz = <0, 0, -7>;
|
|
object { GroundBase_a translate Dz }
|
|
object { Cabane_Base_2 rotate y*180 translate Dz }
|
|
}
|
|
}
|
|
/* ======================================================= */
|
|
|
|
#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.02)
|
|
}
|
|
#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*H_gylampe, R_gyro }
|
|
cylinder { y*0.01, y*(H_gylampe-0.01), R_gyro*0.97 }
|
|
#local WB = 0.015;
|
|
box { <-1, 0.03, -WB>, <1, (H_gylampe-0.03), WB> }
|
|
box { <-WB, 0.03, -1>, <WB, (H_gylampe-0.03), 1> }
|
|
#undef WB
|
|
pigment { color Gray90 }
|
|
#local Ro = 5.89*(0.5-rand(Rng1));
|
|
#if (abs(Ro) < 0.06)
|
|
#local Ro = Ro * 10;
|
|
#end
|
|
#undef Ro
|
|
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.488;
|
|
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 <clock/3, clock/6, clock/9>
|
|
translate <2, -1.1+1.01*Cos_010(NormClock), 4>
|
|
}
|
|
|
|
object { HexaBalls
|
|
texture { Lightning2 scale 0.56 }
|
|
rotate <-clock, clock*0.33333, clock>
|
|
translate <5, -1+0.92*Cos_010(NormClock), -3>
|
|
}
|
|
}
|
|
}
|
|
/* ------------------------------------------------------------ */
|
|
#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 <SzSol, 1, SzSol>
|
|
texture {
|
|
pigment {
|
|
// color DarkGreen
|
|
image_map { png "datas/cmap.png" }
|
|
rotate x*90
|
|
translate <-.5, 0, -.5>
|
|
scale <SzSol, 1, SzSol>
|
|
}
|
|
// normal { bumps 0.035 scale 0.186 }
|
|
finish { phong 0.105 }
|
|
}
|
|
}
|
|
}
|
|
|
|
/* ======================================================= */
|
|
|
|
#declare Underground = object
|
|
{
|
|
difference {
|
|
// plane { y, 0 }
|
|
#local Big = 300;
|
|
box { <-Big, -0.01, -Big>, < Big, 0.01, Big> }
|
|
#undef Big
|
|
#local W = SzSol * 1.204;
|
|
cylinder { <-W, -1, -W>, <-W, 1, -W>, 5 }
|
|
cylinder { <-W, -1, W>, <-W, 1, W>, 7 }
|
|
cylinder { < W, -1, W>, < W, 1, W>, 9 }
|
|
#undef W
|
|
}
|
|
texture {
|
|
pigment { color Gray20 }
|
|
normal { bumps 0.38 scale 3 }
|
|
finish { phong 0.125 }
|
|
}
|
|
rotate y*35
|
|
translate -y*2.55
|
|
}
|
|
|
|
/* ======================================================= */
|
|
|
|
#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 }
|
|
}
|
|
}
|
|
|
|
/* ======================================================= */
|
|
/*
|
|
* nouvel éclairage du 10 février 2025
|
|
*/
|
|
#declare Quad_lampe = object
|
|
{
|
|
light_source {
|
|
0
|
|
color White
|
|
fade_distance SzSol * 0.40
|
|
fade_power 1.20
|
|
}
|
|
}
|
|
|
|
#declare QuadriLight = object
|
|
{
|
|
#local T = E_QuadriLight;
|
|
#local H = H_QuadriLight;
|
|
// #local H = 5;
|
|
|
|
union {
|
|
object { Quad_lampe translate <-T, H, -T> }
|
|
object { Quad_lampe translate < T, H, -T> }
|
|
object { Quad_lampe translate <-T, H, T> }
|
|
object { Quad_lampe translate < T, H, T> }
|
|
}
|
|
rotate -12 * y
|
|
}
|
|
/* ======================================================= */
|
|
|
|
#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 rgb <.4, .3, .8> ]
|
|
[ 0.7 color Gray20 ]
|
|
[ 0.8 color rgb <.95, .7, .6> ]
|
|
[ 1.0 color Gray10 ]
|
|
}
|
|
turbulence 3.14159 + 0.74 * Cos_010(NormClock)
|
|
scale 1.620
|
|
// translate -1
|
|
}
|
|
#local Kem = 0.09;
|
|
emission rgb <Kem, Kem, Kem>
|
|
}
|
|
// }
|
|
|
|
/* ======================================================= */
|
|
|
|
/* XXX XXX */
|
|
light_source {
|
|
<-4, 54, -17>
|
|
colour Gray40
|
|
parallel
|
|
point_at 0
|
|
}
|
|
|
|
/*
|
|
* Et on rassemble tous les éléments...
|
|
*/
|
|
#declare Le_Decor = object
|
|
{
|
|
union {
|
|
object { Le_Sol }
|
|
object { Underground }
|
|
object { La_GroundBase }
|
|
// object { Les_Bibelots }
|
|
// object { Les_Lumieres }
|
|
object { QuadriLight }
|
|
object { Les_GyroPhares () }
|
|
}
|
|
}
|
|
/* ------------------------------------------------------------ */
|