Compare commits

...

49 Commits

Author SHA1 Message Date
Tonton Th
c37530d999 reglage texture 2026-03-04 21:40:09 +01:00
Tonton Th
15849c4aa2 ajustement horloge double 2026-03-04 21:39:25 +01:00
Tonton Th
3f57aec353 another another camera twiddling 2026-03-03 19:42:05 +01:00
Tonton Th
90562d2ce6 camera tuning 2026-03-01 21:09:10 +01:00
Tonton Th
daaa8eeb01 better metadata in vidz 2026-02-27 22:38:56 +01:00
Tonton Th
35e6c0dfb5 camera change 2026-02-25 14:14:45 +01:00
Tonton Th
6ee8932ba4 typographic perversity 2026-02-20 23:20:17 +01:00
Tonton Th
a3558cc1db adjust cameras before the next rendering batch 2026-02-20 23:14:10 +01:00
Tonton Th
2eea147f82 another bunch of little changes 2026-02-20 12:54:57 +01:00
Tonton Th
4dca1e7d79 geometry tuning 2026-02-20 12:52:50 +01:00
Tonton Th
0207fc942b add the "Vase" concept 2026-02-20 12:51:23 +01:00
Tonton Th
59c2b266ef small changes 2026-02-19 13:04:02 +01:00
Tonton Th
f6104c8b5d that was a bad idea 2026-02-18 19:19:20 +01:00
Tonton Th
676cf5bd87 clean the brotch 2026-02-18 02:02:10 +01:00
Tonton Th
c0a0d2467e hardening the camera 2026-02-17 23:15:31 +01:00
Tonton Th
5e5d0ae116 fix an excessive psychedelic effect 2026-02-17 23:14:51 +01:00
Tonton Th
b6ac4f8ce5 dynamic and camera tuning 2026-02-17 22:28:18 +01:00
Tonton Th
3fdfa5a0c0 swap two elements 2026-02-17 14:16:36 +01:00
Tonton Th
fd452889ea correction du planning 2026-02-17 14:16:08 +01:00
Tonton Th
b3030b886d Blob_Boxed is alive 2026-02-16 23:55:40 +01:00
Tonton Th
b246f3ba23 another try... 2026-02-16 23:53:20 +01:00
Tonton Th
27b37f17dd fix an of-by-0.2 bug 2026-02-16 19:51:47 +01:00
Tonton Th
ffd3f48b9d moving Blob_Boxed to the right file 2026-02-16 18:22:43 +01:00
Tonton Th
dfedf5f52c fine tuning 2026-02-16 18:10:58 +01:00
Tonton Th
dd4fe05229 radical change of the camera position 2026-02-16 12:44:06 +01:00
Tonton Th
0649930f7e hexablob + openbox -> boxed_blob 2026-02-15 16:12:53 +01:00
Tonton Th
606536c3f3 welcome here, hexa-patrol 2026-02-14 13:35:54 +01:00
Tonton Th
6a983ee560 add the "patrouille" sequence 2026-02-13 23:28:37 +01:00
Tonton Th
d349b23a91 fix a bug & enhance cli 2026-02-13 12:11:52 +01:00
Tonton Th
77c82f6e96 essential adjustements 2026-02-12 10:35:40 +01:00
Tonton Th
e5439eee54 nice try, but... 2026-02-12 10:21:52 +01:00
Tonton Th
fe3bdff7dd better hole borders 2026-02-11 00:00:47 +01:00
Tonton Th
f1fcebd77d a better name 2026-02-10 20:15:14 +01:00
Tonton Th
c47606438f last commits of this night 2026-02-10 04:59:43 +01:00
Tonton Th
ceb4dea907 add border to the hole 2026-02-10 04:08:49 +01:00
Tonton Th
1bef5baa93 tweak the dynamic 2026-02-10 01:21:32 +01:00
Tonton Th
2d5093eab9 changes are to small to be commited 2026-02-09 18:53:47 +01:00
Tonton Th
1ed6ce79d1 pour faire plaisir à brunus 2026-02-09 14:40:34 +01:00
Tonton Th
47a2089561 un bon gros paquet de changements :) 2026-02-09 12:29:28 +01:00
Tonton Th
9de6929b48 keep cool, bro ! 2026-02-02 14:41:01 +01:00
Tonton Th
9779b15176 slow down, bro ! 2026-02-02 14:39:38 +01:00
Tonton Th
8a6f4b3e12 + archi things 2026-01-31 09:27:58 +01:00
Tonton Th
a4025b907f add a new sequence: "around" 2026-01-26 22:23:49 +01:00
Tonton Th
957fb39ec2 add a new sequence: "around" 2026-01-26 22:22:32 +01:00
Tonton Th
438cb71b43 increase zoom-out 2026-01-25 08:42:30 +01:00
Tonton Th
d479b566b3 patch emerging tridents 2026-01-25 08:41:18 +01:00
Tonton Th
02556e71d3 commit su soir, espoir 2026-01-22 02:38:31 +01:00
Tonton Th
c08cd56637 silent superflous msg 2026-01-20 21:37:07 +01:00
Tonton Th
a51a963ba0 commit for rabbit 2026-01-16 18:29:15 +01:00
41 changed files with 995 additions and 420 deletions

View File

@@ -5,6 +5,7 @@ POVOPT = +q9 +A0.05 -WT2 Declare=NbFrames=450 -d
POVDEP = contexte.inc hexacone.inc hexabenz.inc \ POVDEP = contexte.inc hexacone.inc hexabenz.inc \
all.inc hexastar.inc \ all.inc hexastar.inc \
architecture.inc \
globals.inc hexawood.inc datas/hf.png \ globals.inc hexawood.inc datas/hf.png \
dynamic.inc trident.inc groundbase.inc \ dynamic.inc trident.inc groundbase.inc \
gadgets.inc xperiment.inc gadgets.inc xperiment.inc
@@ -20,9 +21,16 @@ PNG: essai.png scene.png topview.png passage.png \
hexacone.png remote.png survol.png cutoff.png \ hexacone.png remote.png survol.png cutoff.png \
carto.png hexawood.png bubblecut.png \ carto.png hexawood.png bubblecut.png \
circular.png panoramic.png splined.png \ circular.png panoramic.png splined.png \
trident.png approche.png hexastar.png trident.png approche.png hexastar.png \
patrouille.png
echo "make PNG ck=$(CK) done" >> WS/log echo "make PNG ck=$(CK) done" >> WS/log
patrouille.png: patrouille.pov Makefile $(POVDEP)
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
around.png: around.pov Makefile $(POVDEP)
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
approche.png: approche.pov Makefile $(POVDEP) approche.png: approche.pov Makefile $(POVDEP)
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@ povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@

View File

@@ -19,6 +19,7 @@
- Songer à un cadriciel pour la piste son. - Songer à un cadriciel pour la piste son.
- Trouver un compositeur et les musiciens. - Trouver un compositeur et les musiciens.
- Étudier à fond la documentation de `sox`
## ... en bref ... ## ... en bref ...

View File

@@ -15,7 +15,7 @@
#include "hexastar.inc" #include "hexastar.inc"
// les machins avec des bugs // les machins avec des bugs
// #include "hexastar.inc" #include "architecture.inc"
// les constructions en chantier // les constructions en chantier
#include "xperiment.inc" #include "xperiment.inc"

View File

@@ -15,11 +15,11 @@ object { Le_Decor }
// ======================================================= // =======================================================
#declare LocX = 0; #declare LocX = -0.5 + Cos_010(NormClock);
#declare LocY = 3.6 - NormClock; #declare LocY = 2.6 - NormClock;
#declare LocZ = -220 + (120 * NormClock); #declare LocZ = -200 + (118 * NormClock);
#declare LocCam = <LocX, LocY, LocZ>; #declare LocCam = <LocX, LocY, LocZ>;
#declare LatCam = <0, 1.2, 0>; #declare LatCam = <0, 0.92+NormClock, 0>;
// object { Repere scale 5 translate Interpolate(LocCam, LatCam, 0.50) } // object { Repere scale 5 translate Interpolate(LocCam, LatCam, 0.50) }

106
architecture.inc Normal file
View File

@@ -0,0 +1,106 @@
/*
* H E X A C O N E - A R C H I T E C T U R E
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
*
* file created on Sat Jan 31 07:07:28 AM UTC 2026
*/
// ===========================================================
#declare SzC = 0.3;
#macro Base_Col_A ()
merge {
box { <-SzC, 0, -SzC>, <SzC, 0.222, SzC> }
#local B = SzC * 0.7;
box { <-B, 0, -B>, <B, 0.333, B> }
#local R = rand(Rng1);
#if (R < 0.33)
texture { T_Stone25 }
#else
texture { T_Stone26 }
#end
}
#end
// -----------------------------------------------------------
#macro Haut_Col_A ()
difference {
#local S = SzC * 0.87;
box { <-S, 0, -S>, <S, 0.222, S> }
#local E = SzC + 1;
#local R = S * 0.42;
cylinder { <-E, 0, S>, <E, 0, S>, R }
cylinder { <-E, 0, -S>, <E, 0, -S>, R }
#local R = rand(Rng1);
#if (R < 0.33)
texture { T_Stone27 }
#else
texture { T_Stone28 }
#end
}
#end
// -----------------------------------------------------------
#macro Fut_Col_A (H)
object {
cylinder { 0, H*y, 0.15 }
#local R = rand(Rng1);
#if (R < 0.43)
texture { T_Stone29 }
#else
texture { T_Stone34 scale 3 }
#end
}
#end
// -----------------------------------------------------------
#macro Colonne_A (H)
union {
object { Haut_Col_A () translate y*H }
object { Fut_Col_A (H) }
object { Base_Col_A () }
}
#end
// ===========================================================
// bon, on a un pilier/colonne donc de quoi poser
// dessus un linteau pour avoir un genre de portique
// pour remplacer les arches de l'approche.
#macro Linteau_A (Lg, Epp)
merge {
#local L = Lg + 0.42;
#local K = 0.28;
box { <-L, 0, -K>, <L, Epp, K> }
cylinder { <0, Epp, -K*0.9>, <0, Epp, K*0.9>, K }
#local R = rand(Rng1);
#if (R < 0.63)
texture { T_Grnt6 scale 4 }
#else
texture { T_Stone34 scale 3+rand(Rng1) }
#end
}
#end // macro
// -----------------------------------------------------------
#macro Linteau_B (Lg, Epp)
merge {
#local L = Lg + 0.20;
#local K = 0.36;
box { <-L, 0, -K>, <L, Epp, K> }
cylinder { <0, Epp, -K*0.9>, <0, Epp, K*0.9>, K }
texture { T_WIP_dents rotate y*(rand(Rng1)*77) }
}
#end // macro
// ===========================================================
#macro Portique_A ()
union {
#local Larg = 2.8;
#local Haut = 3.4;
object { Colonne_A (Haut) translate -x*Larg }
object { Colonne_A (Haut) translate x*Larg }
#local R = rand(Rng1);
#if (R < 0.80)
object { Linteau_A (Larg,0.26) translate y*(Haut+0.20) }
#else
object { Linteau_B (Larg,0.28) translate y*(Haut+0.20) }
#end
}
#end // macro
// ===========================================================

31
around.pov Normal file
View File

@@ -0,0 +1,31 @@
/*
* H E X A C O N E - A R O U N D
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
*
* scene imaginée le 26 janvier 2026
*/
#version 3.7;
#include "globals.inc"
#declare NO_DYNAMIC = 0;
#include "all.inc"
object { Le_Decor }
// =======================================================
#declare R_around = 120;
#declare CK = 2.9 + (3.141592654 * NormClock);
#declare CamX = R_around * cos(CK);
#declare CamY = 15 + (6*Cos_010(NormClock));
#declare CamZ = R_around * 1.8 * sin(CK);
camera {
location <CamX, CamY, CamZ>
look_at <0, 0.5 + NormClock, 0>
right <image_width/image_height, 0, 0>
angle 36
}

View File

@@ -13,22 +13,24 @@
#include "all.inc" #include "all.inc"
// --------------------------------------------------------- // ---------------------------------------------------------
object { Repere scale 20 translate y*20 }
// --------------------------------------------------------- // ---------------------------------------------------------
// dessiner une grille // dessiner une grille
union {
#for (Foo, -140, 140, 10) #for (Foo, -140, 140, 10)
#local H = 0.17; #local H = 0.07;
cylinder { <-150, H, Foo>, <150, H, Foo>, 0.06 } #local Ra = 0.05;
cylinder { <Foo, H, -150>, <Foo, H, 150>, 0.06 } cylinder { <-150, H, Foo>, <150, H, Foo>, Ra }
#end cylinder { <Foo, H, -150>, <Foo, H, 150>, Ra }
#end
pigment { color Black }
}
// --------------------------------------------------------- // ---------------------------------------------------------
object { Repere scale 20 translate y*20 }
object { Le_Decor } object { Le_Decor }
camera { camera {
location <45, 179+(76*NormClock), 18-(17*NormClock)> location <46, 149+(117*NormClock), 18-(12*NormClock)>
look_at <0, 1.18, 0.17 + (2.4*NormClock)> look_at <0, 1.18, 0.17 + (2.4*NormClock)>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 50 angle 50

View File

@@ -17,7 +17,7 @@ object { Le_Decor }
// ======================================================= // =======================================================
#declare R_circ = R_circular + 0.07; #declare R_circ = R_circular + 0.07;
#declare CK = 1.9 + (1.23 * Cos_01(NormClock)); #declare CK = 2.9 + (1.51 * Cos_01(NormClock));
#declare CamX = R_circ * cos(CK); #declare CamX = R_circ * cos(CK);
#declare CamY = 3.08 + abs(sin(CK/4.00)); #declare CamY = 3.08 + abs(sin(CK/4.00));
@@ -26,12 +26,12 @@ object { Le_Decor }
#declare AV = 0.070; #declare AV = 0.070;
#declare LatX = R_circ * 0.96 * cos(CK + AV); #declare LatX = R_circ * 0.96 * cos(CK + AV);
#declare LatY = 2.65; #declare LatY = 2.65;
#declare LatZ = R_circ * 0.97 * sin(CK + AV); #declare LatZ = R_circ * 0.95 * sin(CK + AV);
camera { camera {
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at <LatX, LatY, LatZ> look_at <LatX, LatY, LatZ>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 60 angle 64
} }

View File

@@ -4,26 +4,32 @@
/* voir aussi le fichier 'globals.inc' */ /* voir aussi le fichier 'globals.inc' */
/* ======================================================= */
// #debug "+++++++++++++++++++++ debut contexte\n"
/* ======================================================= */ /* ======================================================= */
#debug "+++++++++++++++++++++ debut contexte\n" #macro Trois_Portiques (Dist)
union {
object { Portique_A () }
object { Portique_A () scale <1, 1.2, 1> translate z*11 }
object { Portique_A () rotate y*11 translate z*22 }
// XXX scale 1.85
}
#end // macro trois portiques
/* ======================================================= */ /* ======================================================= */
/* /*
* essai du 12 mars 2025 * essai du 12 mars 2025
*/ */
#declare RedB_0_X = 19; #declare RedB_0_X = 19; #declare RedB_0_Z = 29;
#declare RedB_0_Z = 29;
#declare RedB_1_X = -24; #declare RedB_1_X = -24; #declare RedB_1_Z = 8;
#declare RedB_1_Z = 8;
#declare RedB_2_X = 36; // XXX #declare RedB_2_X = 36; #declare RedB_2_Z = -21;
#declare RedB_2_Z = -21; #declare RedB_2_X = 2; #declare RedB_2_Z = -40;
#declare RedB_3_X = 42; #declare RedB_3_X = 42; #declare RedB_3_Z = -5;
#declare RedB_3_Z = -5;
#declare Pos_RedB_0 = <RedB_0_X, 0, RedB_0_Z>; #declare Pos_RedB_0 = <RedB_0_X, 0, RedB_0_Z>;
#declare Pos_RedB_1 = <RedB_1_X, 0, RedB_1_Z>; #declare Pos_RedB_1 = <RedB_1_X, 0, RedB_1_Z>;
@@ -37,7 +43,7 @@ difference {
cylinder { 0, y*0.36, R*0.99 } cylinder { 0, y*0.36, R*0.99 }
cone { y*0.37, R*0.80, y*0.425, R*0.83 } cone { y*0.37, R*0.80, y*0.425, R*0.83 }
#for (Foo, 0, 359, 10) #for (Foo, 0, 359, 10)
#if (rand(Rng1) > 0.16) #if (rand(Rng1) > 0.17)
#local Dx = R * sin(radians(Foo)); #local Dx = R * sin(radians(Foo));
#local Dz = R * cos(radians(Foo)); #local Dz = R * cos(radians(Foo));
cone { 0, 0.01, y*0.41, 0.10 translate <Dx, 0, Dz> } cone { 0, 0.01, y*0.41, 0.10 translate <Dx, 0, Dz> }
@@ -58,9 +64,9 @@ union {
translate y*(H_gyro+H_gylampe+0.04) translate y*(H_gyro+H_gylampe+0.04)
} }
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R < 0.33333) texture { T_Stone25 scale 1+rand(Rng1) } #if (R < 0.33) texture { T_Stone25 scale 1+rand(Rng1) }
#elseif (R < 0.66666) texture { T_Stone15 scale 1+rand(Rng1) } #elseif (R < 0.66) texture { T_Stone15 scale 1+rand(Rng1) }
#else texture { T_Stone6 } #else texture { T_Stone6 scale 1+rand(Rng1) }
#end #end
#undef R #undef R
} }
@@ -103,7 +109,7 @@ union {
#macro Les_GyroPhares () #macro Les_GyroPhares ()
union { union {
#local E = SzSol * 0.455; #local E = SzSol * 0.471;
#for (Idx, 0, 359, 60) #for (Idx, 0, 359, 60)
#local Ang = radians(Idx+9.33); #local Ang = radians(Idx+9.33);
#local Dx = E * sin(Ang); #local Dx = E * sin(Ang);
@@ -116,11 +122,10 @@ union {
/* ======================================================= */ /* ======================================================= */
/* 11 avril 2025, je pose un grand cercle d'hexapoles /* 11 avril 2025, je pose un grand cercle d'hexapoles
* 9 octobre 2025, je rajoute un rail circulaire * 9 octobre 2025, je rajoute un rail circulaire
* les navettes qui circulent sont dans 'dynamic.inc'
*/ */
#declare Les_HexaPoles = object #declare Les_HexaPoles = object
{ {
union { union {
#for (Ang, 0, 359, 6) #for (Ang, 0, 359, 6)
#local De = 3.6 + (0.5*rand(Rng1)); #local De = 3.6 + (0.5*rand(Rng1));
@@ -189,26 +194,6 @@ union {
} }
} }
} }
/* ------------------------------------------------------------ */
#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.15;
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 }
}
}
/* ======================================================= */ /* ======================================================= */
@@ -217,11 +202,26 @@ blob {
*/ */
#declare UnderHoles = array[6] #declare UnderHoles = array[6]
#ifdef (DEBUG_LEVEL)
#debug "Underholes : DEBUG_LEVEL activated\n"
#fopen Trid "WS/underholes.log" write
#end // if debulevel
#for (Idx, 0, 5) #for (Idx, 0, 5)
#local Angle = (Idx + 0.19) * 1.09; // magic numbers ? #local Angle = (Idx + 0.19) * 1.09; // magic numbers ?
#local Px = sin(Angle) * (SzSol * 0.98); #local Kr = 5 - (rand(Rng1)*2.5);
#local Pz = cos(Angle) * (SzSol * 1.02); #local Px = Kr + sin(Angle) * (SzSol * 0.98);
#local Kr = 5 - (rand(Rng1)*2.5);
#local Pz = Kr + cos(Angle) * (SzSol * 1.02);
#ifdef (DEBUG_LEVEL)
#write (Trid, "Def_", Idx, " ", NormClock, " ", Px, " ", Pz, "\n")
#end
// put the coords in the array.
#declare UnderHoles[Idx] = <Px, 0, Pz>; #declare UnderHoles[Idx] = <Px, 0, Pz>;
#end // for loop
#ifdef (DEBUG_LEVEL)
#fclose Trid
#end #end
#declare Underground = object #declare Underground = object
@@ -232,14 +232,27 @@ difference {
box { <-Big, -0.21, -Big>, < Big, 0.0000, Big> } box { <-Big, -0.21, -Big>, < Big, 0.0000, Big> }
#undef Big #undef Big
#for (Foo, 0, 5) #for (Foo, 0, 5)
cylinder { -y*5, y*5, 3.1 translate UnderHoles[Foo] } cylinder { -y*5, y*5, R_hole translate UnderHoles[Foo] }
#end #end
texture { Ground_Texture } texture { Ground_Texture }
} }
} }
/* XXX /* 10 fev 2026, on place des bordures autour des trous */
* L'indispensable Repere est parti dans 'gadgets.inc' ! */ /* voir aussi -> xperiment.inc */
#declare Les_Bordures = object
{
union {
#for (foo, 0, 5)
// #local YHB = (0.08 + (0.5*rand(Rng1)) * y);
#if (rand(Rng1) < 0.5)
object { HoleBorder_A (1.04) translate UnderHoles[foo] }
#else
object { HoleBorder_B (1.06) translate UnderHoles[foo] }
#end // if
#end // for
}
}
/* ======================================================= */ /* ======================================================= */
/* /*
* nouvel éclairage du 10 février 2025 * nouvel éclairage du 10 février 2025
@@ -274,12 +287,12 @@ rotate -19 * y
union { union {
/* a l'interieur du 'circular' */ /* a l'interieur du 'circular' */
object { Chose () translate <-25, 0, -31> } object { Chose () translate <-25, 0, -31> }
object { Chose () translate < 20, 0, -32> } object { Chose () translate < 20, 0, -36> }
/* a l'exterieur du 'circular' */ /* a l'exterieur du 'circular' */
#for (foo, 0, 359, 18) #for (foo, 0, 359, 18)
#local CK = radians(foo + (9*rand(Rng1))); #local CK = radians(foo + (9*rand(Rng1)));
#local DX = 66 * sin(CK); #local DX = 76 * sin(CK);
#local DZ = 64 * cos(CK); #local DZ = 74 * cos(CK);
object { Chose () translate < DX, 0, DZ> } // XXX object { Chose () translate < DX, 0, DZ> } // XXX
#end #end
} }
@@ -348,6 +361,7 @@ sky_sphere {
{ {
union { union {
object { Underground } object { Underground }
object { Les_Bordures }
#include "groundbase.inc" #include "groundbase.inc"
object { La_GroundBase } object { La_GroundBase }
@@ -365,26 +379,30 @@ union {
object { QuadriLight } object { QuadriLight }
object { Les_GyroPhares () } object { Les_GyroPhares () }
object { Les_HexaPoles } object { Les_HexaPoles }
object { Horloge rotate y*27 translate < 3, 0, -30> } object { HorlogeDouble rotate y*(104*NormClock)
translate < 8, 0, -30> }
object { Les_Choses } object { Les_Choses }
object { Les_Arches (1.9) rotate y*132 translate <-34, 0, -26> } object { Les_Arches (1.9) rotate y*132 translate <-34, 0, -26> }
object { Les_Cahutes () translate <2, 0, -40> } // XXX object { Les_Cahutes () rotate y*17 translate <2, 0, -40> }
object { Les_Cahutes () rotate y*17 translate <37, 0, -20> }
/* --------- les trucs dans le Y négatif */ /* --------- les trucs dans le Y négatif */
object { Trois_Arches (1.4) scale 2.7 translate <0, 0, -131> } // object { Trois_Arches (1.4) scale 2.4 translate <0, 0, -131> }
object { Trois_Portiques (1.4) translate <0, 0, -111> }
object { OpenBox(1.5, 0.06) translate <-19, 1.49, -88> } object { OpenBox(1.5, 0.06) translate <-19, 1.49, -88> }
object { OpenBox(1.5, 0.06) translate <-19, 1.52, -104> } object { OpenBox(1.5, 0.06) translate <-21, 1.52, -104> }
object { OpenBox(1.5, 0.06) translate <-19, 1.52, -144> } object { OpenBox(1.5, 0.06) translate <-20, 1.52, -144> }
#for (Foo, 0, 5) #for (Foo, 0, 5)
object { Les_Cahutes () translate <29, 0, -(77+Foo*11)> } object { Les_Cahutes () translate <27, 0, -(77+Foo*11)> }
#end // for #end // for
/* --------- les trucs dans le Y positif */ /* --------- les trucs dans le Y positif */
object { OpenBox(1.6, 0.11) translate <0, 2.58, 112> } // object { OpenBox(1.6, 0.11) translate <-3, 3.58, 112> }
object { OpenBox(1.6, 0.11) rotate y*45 translate <0, 4.7, 166> } object { Blob_Boxed scale 4 translate <-3, 3.58, 112> }
object { Blob_Boxed scale 4 rotate y*45 translate <3, 6.7, 161> }
} }
} }

View File

@@ -18,7 +18,7 @@
#declare Kbox = (2.03*NormClock); #declare Kbox = (2.03*NormClock);
difference { difference {
object { HexaCone () } object { HexaCone () rotate <9-(11*NormClock), 6, -7> }
box { -1, 1 translate z*Kbox } box { -1, 1 translate z*Kbox }
translate y*TY + POS_Cutoff translate y*TY + POS_Cutoff
} }
@@ -29,7 +29,7 @@ difference {
// ======================================================= // =======================================================
light_source { light_source {
<-24, 0.4, -1> <-14, 0.4, -1>
colour Orange colour Orange
parallel parallel
point_at y*TY + POS_Cutoff point_at y*TY + POS_Cutoff
@@ -40,7 +40,7 @@ object { Le_Decor }
// ======================================================= // =======================================================
#local CamX = POS_Cutoff.x + 3.5 + (3.14*Cos_01(NormClock)); #local CamX = POS_Cutoff.x + 3.5 + (3.14*Cos_01(NormClock));
#local CamY = 2.1 + (1.11*sqrt(NormClock)); #local CamY = 2.01 + (1.14*sqrt(NormClock));
#local CamZ = POS_Cutoff.z + 4.30 - (1.02*NormClock); #local CamZ = POS_Cutoff.z + 4.30 - (1.02*NormClock);
camera { camera {

View File

@@ -5,25 +5,25 @@
// rajout d'une patrouille en vol // rajout d'une patrouille en vol
// 2 janvier 2026 // 2 janvier 2026
#local CK = clock / 150; // en radians
#local RD = 63; // rayon deplacement
#local Xp = RD * sin(CK);
#local Zp = RD * cos(CK);
object { object {
object { Patrouille } #local CK = (clock / 230) - 0.75; // en radians
rotate y*degrees(CK) #local RD = 63; // rayon deplacement
translate <Xp, 79+(11*NormClock), Zp> #local Xp = RD * sin(CK);
translate <-30, 0, 0> #local Zp = RD * cos(CK);
} #declare Loc_Patrouille = <Xp+10, 70+(11*NormClock), Zp>;
object { Patrouille }
rotate y*degrees(CK)
translate Loc_Patrouille
}
// ======================================================= // =======================================================
// on va tenter de placer quelques trucs // on va tenter de placer quelques trucs
// qui bougent sur le rail circulaire // qui bougent sur le rail circulaire
#for (foo, 0, 5) #for (foo, 0, 5)
#local CK = (NormClock+(foo*0.0200)) * 4.02; // radians #local CK = (NormClock+(foo*0.0200)) * 4.05; // radians
#declare Xpos = R_circular * sin(CK); #declare Xpos = R_circular * sin(CK);
#declare Zpos = R_circular * cos(CK); #declare Zpos = R_circular * cos(CK);
#declare AR = degrees(CK); #declare AR = degrees(CK);
@@ -36,8 +36,11 @@ object {
/// ======================================================= /// =======================================================
/* des trucs autour des trous du sol. */ /* des trucs autour des trous du sol. */
object { Les_HexaBalls rotate y*clock translate UnderHoles[2] } // Les_Machins --> 'gadgets.inc'
object { Les_Machins rotate -y*clock translate UnderHoles[3] } object { Les_Machins rotate -y*clock translate UnderHoles[2] }
object { Les_Machins rotate y*clock translate UnderHoles[5] }
// object { Les_HexaBalls rotate y*clock translate UnderHoles[2] }
/// ======================================================= /// =======================================================
/* /*
@@ -47,11 +50,11 @@ object { Les_Machins rotate -y*clock translate UnderHoles[3] }
{ {
#local K = 1.39; #local K = 1.39;
union { union {
object { HexaBenz () rotate y*90 translate <-K, 1.83, 0> } object { HexaBenz () rotate y*94 translate <-K, 1.86, 0> }
object { HexaBenz () translate < K, 1.66, 0> } object { HexaBenz () rotate -x*7 translate < K, 1.96, 0> }
} }
} }
object { BiBenz rotate -y*(clock*0.26) translate Pos_RedB_0 } object { BiBenz rotate -y*(clock*0.28) translate Pos_RedB_0 }
/* /*
* deux hexacones se tournent autour * deux hexacones se tournent autour
@@ -61,7 +64,7 @@ object { BiBenz rotate -y*(clock*0.26) translate Pos_RedB_0 }
#local K = 1.27; #local K = 1.27;
union { union {
object { HexaCone () rotate y*90 translate <-K, 1.7, 0> } object { HexaCone () rotate y*90 translate <-K, 1.7, 0> }
object { HexaCone () rotate <4, 1, 7> translate < K, 1.9, 0> } object { HexaCone () rotate <9, 1, 7> translate < K, 1.9, 0> }
} }
} }
object { BiCone rotate -y*(Cos_010(NormClock)*65.38) translate Pos_RedB_1 } object { BiCone rotate -y*(Cos_010(NormClock)*65.38) translate Pos_RedB_1 }
@@ -100,18 +103,26 @@ object { HexaCone () rotate y*((12*NormClock)+80) translate P }
* * les coordonnées de ces trous sont définies * * les coordonnées de ces trous sont définies
* dans le fichier 'contexte.inc'. * dans le fichier 'contexte.inc'.
*/ */
// #fopen Trid "WS/tridents.log" write #ifdef (DEBUG_LEVEL)
#fopen Trid "WS/underholes.log" append
#end
#for (Foo, 0, 5) #for (Foo, 0, 5)
#declare Dy = rand(Rng1)-4+(11*NormClock); #declare Dy = (14*rand(Rng1))-9+(14*NormClock);
#declare Tr = UnderHoles[Foo] + <0, Dy, 0>; #declare Tr = UnderHoles[Foo] + <0, Dy, 0>;
#declare Ry = (( 0.5+rand(Rng1)-NormClock ) * 97); #declare Ry = (( 0.5+rand(Rng1)-NormClock ) * 166);
// #write (Trid, Foo, " ", NormClock, " ", Dy, " ", #ifdef (DEBUG_LEVEL)
// Ry, " ", Tr, "\n") #write (Trid, "Trid ", Foo, " ", NormClock, " ", Dy, " ",
Ry, " ", Tr, "\n")
#end
object { Trident_A () rotate y*Ry object { Trident_A () rotate y*Ry
translate y+( (10*rand(Rng1)) - 5) // translate y+( (10*rand(Rng1)) - 5)
translate Tr } translate Tr }
#end #end
// #fclose Trid
#ifdef (DEBUG_LEVEL)
#fclose Trid
#end
/* /*
* ---------------------------- * ----------------------------
@@ -139,14 +150,14 @@ object { HexaBenz ()
/* /*
* passage d'un hexawood près de la base * passage d'un hexawood près de la base
*/ */
#declare A = <-25, 0.4, (SzSol/2)+4>; #declare A = <-25, 0.4, (SzSol/2)+5>;
#declare B = < 29, 0.5, (SzSol/2)+1>; #declare B = < 29, 0.5, (SzSol/2)+2>;
#declare P = Interpolate(A, B, NormClock); #declare P = Interpolate(A, B, NormClock);
#local K = NormClock*31; #local K = NormClock*31;
#local R = 16.64 * cos(K); #local R = 16.64 * cos(K);
#local H = 0.52 * pow(sin(K), 3); #local H = 0.50 * pow(sin(K), 3);
#declare P_hexawood = P + <0, 0.26+H, 0>; #declare P_hexawood = P + <0, 0.26+H, 0>;
#debug "+++++++++++++ P_hexawood defined\n" // #debug "+++++++++++++ P_hexawood defined\n"
object { HexaWood rotate z*R translate P_hexawood } object { HexaWood rotate z*R translate P_hexawood }
@@ -165,6 +176,3 @@ object { Trident_A () rotate y*(clock*2.7)
#debug "dynamic is loaded\n" #debug "dynamic is loaded\n"
/* ----------------------------------- */ /* ----------------------------------- */

View File

@@ -20,7 +20,7 @@
#for (idZ, -3, 3) #for (idZ, -3, 3)
#local posX = (idX * 4.76) + (rand(Rng1)-0.5); #local posX = (idX * 4.76) + (rand(Rng1)-0.5);
#local posY = 3.2 + (NormClock * 12 * (rand(Rng1)+0.75)); #local posY = 3.2 + (NormClock * 17 * (rand(Rng1)+0.95));
#local posZ = (idZ * 4.44) ; #local posZ = (idZ * 4.44) ;
#local Rx = (rand(Rng1) - 0.5) * 12; #local Rx = (rand(Rng1) - 0.5) * 12;
#local Ry = (rand(Rng1) - 0.5) * (24+NormClock); #local Ry = (rand(Rng1) - 0.5) * (24+NormClock);
@@ -52,18 +52,16 @@
object { Le_Decor } object { Le_Decor }
// object { Repere scale 5 translate y } #local CamX = 8.7 + ( 6.9 * Cos_01(NormClock));
#local CamY = 0.42 + (18.36 * Cos_01(NormClock));
#local CamX = -8.7 + ( 6.9 * Cos_01(NormClock)); #local CamZ = 122 - (22.9 * Cos_01(NormClock));
#local CamY = 0.42 + (17.36 * Cos_01(NormClock));
#local CamZ = 122 - (21.9 * Cos_01(NormClock));
#local LatY = (Y_mean / Y_count) - (0.5*NormClock); #local LatY = (Y_mean / Y_count) - (0.5*NormClock);
#debug concat("escadrille: Lat Y ", str(LatY, 7, 3),"\n") // #debug concat("escadrille: Lat Y ", str(LatY, 7, 3),"\n")
camera { camera {
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at <0.0, LatY, 0> look_at <0.0, LatY, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 56 - (21 * NormClock) angle 54 - (31 * NormClock)
} }

380
essai.pov
View File

@@ -5,42 +5,51 @@
#version 3.7; #version 3.7;
// #declare DEBUG_LEVEL = 1; // un nouveau test ?
#include "globals.inc" #include "globals.inc"
#declare NO_DYNAMIC = 1; #declare NO_DYNAMIC = 1;
#include "all.inc" #include "all.inc"
/*
* il faut faire le tri ici !
-* __________________________
*/
// ======================================================= // =======================================================
#declare LeGris = texture // nouveau du 10 février 2026
{ #macro Anemone_A (E, H)
/* moi j'dis qu'il est temps de définir un "gris de base" */ union {
pigment { color Gray70 } #for (foo, 0, 5)
finish { phong 0.33 ambient 0.33 } #local A = radians(foo*60);
} #local DX = E * sin(A);
// ======================================================= #local DZ = E * cos(A);
// nouveau du 3 janvier 2026 cone { y*(H/8), 0.20, <DX, H, DZ>, 0.001
#local Horloge2 = object #local Rv = 0.7 + (0.2*rand(Rng1));
{ #local Gv = 0.6 + (0.2*rand(Rng1));
object { Horloge scale <1, 0.24, 1> rotate -x*90 #local Bv = 0.6 + (0.3*rand(Rng1));
translate x*0.45 } texture {
} pigment { rgb <Rv, Gv, Bv> }
#declare HorlogeDouble = object finish { phong 0.51 reflection 0.05 }
{ }
union { }
box { <-3.20, -0.08, -0.07>, <3.20, 1.61, 0.07> sphere { 0, 0.45 texture { T_WIP_color } }
texture { LeGris } } #end // for
#local EC = 0.22;
object { Horloge2 rotate y*180 translate z*EC }
object { Horloge2 translate -z*EC }
} }
scale 0.8 #end // macro
translate y*2.35
}
// ======================================================= // =======================================================
/* /*
* new Thu Dec 18 01:14:19 AM UTC 2025 * new Thu Dec 18 01:14:19 AM UTC 2025
* 14 janvier 2026, j'ajoute un truc pour {enfin} gérer
* un DEBUG_LEVEL correct.
*/ */
#macro Le_ConeStack () #macro Le_ConeStack ()
#ifdef (DEBUG_LEVEL)
#debug "Cone Stack : DEBUG_LEVEL activated\n"
#fopen Log "WS/log.essai" write
#end // debug level
union { union {
#local Hcs = 0.550; #local Hcs = 0.550;
#local Rco = R_basecone * 3.333; #local Rco = R_basecone * 3.333;
@@ -48,6 +57,12 @@ union {
#local Dx = 0.385 * sin(Foo+NormClock); #local Dx = 0.385 * sin(Foo+NormClock);
#local Dy = Foo * (Hcs + 0.0333); #local Dy = Foo * (Hcs + 0.0333);
#local Dz = 0.385 * cos(Foo+NormClock); #local Dz = 0.385 * cos(Foo+NormClock);
#local DV = <Dx, Dy, Dz>;
#ifdef (DEBUG_LEVEL)
#write (Log, Foo, " ", DV, "\n")
#end
union { union {
cone { 0, Rco, <0, Hcs, 0>, 0.001 cone { 0, Rco, <0, Hcs, 0>, 0.001
#if (rand(Rng1) < 0.50) texture { Y_Texture } #if (rand(Rng1) < 0.50) texture { Y_Texture }
@@ -59,12 +74,18 @@ union {
#else texture { G_Texture } #else texture { G_Texture }
#end // if rand #end // if rand
} }
translate <Dx, Dy, Dz> translate DV
} }
#end // for Foo #end // for Foo
} }
#ifdef (DEBUG_LEVEL)
#fclose Log
#end // debug level
#end // macro #end // macro
// ======================================================= // =======================================================
/* nouveau du 20 octobre 2025 /* nouveau du 20 octobre 2025
* Un semblant de wagonnet qui va tourner sur le * Un semblant de wagonnet qui va tourner sur le
@@ -82,39 +103,6 @@ union {
} }
} }
// =======================================================
/* nouveau du 7 octobre 2025 */
#macro Une_Boule ()
sphere {
0, 0.18 + (rand(Rng1) * 0.06)
#local R = rand(Rng1);
#if (R < 0.333) texture { C_Texture }
#elseif (R < 0.666) texture { M_Texture }
#else texture { Y_Texture }
#end
finish { specular 0.6 }
}
#end // macro
/* TODO
* trouver une meilleure méthode de placement
*/
#declare Les_Boules = object
{
union {
#for (A, 0, 64, 1)
#local CK = (NormClock*55.00) + (A*0.28);
object { Une_Boule ()
#local TX = 3.2 * sin(CK);
#local TY = 0.4 * cos(sin(CK));
#local TZ = 3.0 * cos(1-CK);
translate <TX, TY, TZ>
}
object { Repere scale 2 }
#end // for
}
}
// ======================================================= // =======================================================
/* /*
* nouveau du 25 octobre 2025 * nouveau du 25 octobre 2025
@@ -137,78 +125,25 @@ merge {
// ------------------------------------------------------- // -------------------------------------------------------
#declare BasicTextures = object
{
#local TR = 2.20;
union {
object { Obj_BasicTexture texture { R_Texture }
translate <TR*1.4, 0, 0> }
object { Obj_BasicTexture texture { G_Texture }
translate <0, 0, -1> }
object { Obj_BasicTexture texture { B_Texture }
translate <0, 0, TR/2> }
object { Obj_BasicTexture texture { Y_Texture }
translate < TR, 0, TR> }
object { Obj_BasicTexture texture { M_Texture }
translate <-TR, 0, TR> }
object { Obj_BasicTexture texture { C_Texture }
translate <-TR, 0, -TR> }
object { Repere scale 1.5 translate y*2.5 }
}
}
// -------------------------------------------------------
/*
* Après lecture de la doc (et une bonne 8.6), j'ai
* décidé de me lancer dans la création de textures
*/
#declare T_WIP_R = texture
{
pigment { color Red }
finish { phong 0.42 ambient 0.50 }
}
#declare T_WIP_G = texture
{
pigment { color Green }
finish { phong 0.23 ambient 0.30 }
}
#declare T_WIP_B = texture
{
pigment { color Blue }
finish { phong 0.23 ambient 0.50 }
}
// deuxieme lot ----------------------
#declare T_WIP_1 = texture
{
pigment { color <0.36, 0.6, 0.79> }
normal { dents 2.94 scale 0.5}
finish { specular 0.40 ambient 0.69 }
}
// ------------------------------------------------------- // -------------------------------------------------------
// the place to try new textures // the place to try new textures
#declare ProtoTextures = object #declare ProtoTextures = object
{ {
#local TX = 2.35; #local TX = 2.55;
#local TZ = 2.95; #local TZ = 2.95;
#local Kro = 32 + (NormClock * 17); #local Kro = 32 + (NormClock * 37);
union { union {
object { Obj_BasicTexture texture { T_WIP_R } object { Obj_BasicTexture texture { R_Texture }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <TX, 0, -TZ> } translate <TX, 0, -TZ> }
object { Obj_BasicTexture texture { T_WIP_G } object { Obj_BasicTexture texture { G_Texture }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <TX, 0, 0> } translate <TX, 0, 0> }
object { Obj_BasicTexture texture { T_WIP_B } object { Obj_BasicTexture texture { B_Texture }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <TX, 0, TZ> } translate <TX, 0, TZ> }
object { Obj_BasicTexture texture { T_WIP_1 } object { Obj_BasicTexture texture { T_WIP_dents }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <-TX, 0, TZ> } translate <-TX, 0, TZ> }
object { Obj_BasicTexture texture { T_WIP_rasta } object { Obj_BasicTexture texture { T_WIP_rasta }
@@ -224,104 +159,219 @@ union {
// ======================================================= // =======================================================
/* Les choses, c'est l'espèce de vase avec des tiges /* Les choses, c'est l'espèce de vase avec des tiges
qui bougent, je devrais trouver un nom plus parlant */ qui bougent, je devrais trouver un nom plus parlant.
Mieux, on garde la chose mais on en dérive le vase
*/
#macro Vase_le_corps_a ()
intersection {
box { <-5, -5, -5>, <5, 0, 5> }
difference {
sphere { 0, 0.34 }
sphere { 0, 0.30 }
scale <1, 1.64, 1>
}
texture { T_WIP_redwave scale 0.15 + 0.333*rand(Rng1)
rotate <75*rand(Rng1), 75*rand(Rng1), 75*rand(Rng1)>
}
}
#end
// ------------------------------------
#macro Vase_le_corps_b ()
union {
#for (foo, 0, 359.999, 60)
#local Dx = 0.35 * sin(radians(foo));
#local Dz = 0.35 * cos(radians(foo));
torus { 0.09, 0.016
rotate z*30 rotate y*(foo-90)
translate <Dx, 0, Dz>
#local R = rand(Rng1);
#if (R < 0.50) texture { Y_Texture }
#else texture { M_Texture }
#end // end if
} // torus
#end // end for (foo
}
#end // end macro
// ------------------------------------
// ASSEMBLER LE CORPS
#macro Vase_le_corps ()
union {
object { Vase_le_corps_a () }
object { Vase_le_corps_b () }
translate y*0.95
}
#end
// ------------------------------------
// LE PIED
#macro Vase_le_pied ()
union {
cylinder { 0, y*0.80, 0.07 texture { T_WIP_dents scale 0.2 } }
cylinder { 0, y*0.08, 0.20 texture { T_WIP_dents scale 0.4 } }
}
#end
// ------------------------------------
// LES TIGES
#macro Vase_les_tiges ()
union {
#local CK = NormClock * (7.876+rand(Rng1));
#for (Foo, 0, 9)
// tout cela est bien tortueux !
#local CK2 = CK + Foo;
#local C2X = (R_C + 0.051) * sin(CK2+rand(Rng1)) * sin(CK*3);
#local C2Z = (R_C + 0.051) * (sin(-CK2+rand(Rng1)) *
cos(CK*(rand(Rng1))));
#local Rt = 0.02+(0.02*Cos_010(NormClock))-0.03*rand(Rng1);
#local H = 0.38 + 0.55*rand(Rng1);
union {
cylinder { 0, <C2X, H, C2Z>, Rt }
sphere { <C2X, H, C2Z>, Rt }
#local R = rand(Rng1);
#if (R < 0.25) texture { tPlasticOrange }
#elseif (R < 0.50) texture { tPlasticBlue }
#elseif (R < 0.75) texture { tPlasticPrune }
#else texture { tPlasticGreen }
#end // if
}
#end // for
translate y*0.87
}
// #debug "== Fin chose les tiges\n"
#end // macro
// ------------------------------------
// ------------------------------------
#macro Vase ()
union {
Vase_le_pied ()
Vase_le_corps ()
Vase_les_tiges ()
}
#end // macro
// ------------------------------------
// =======================================================
#declare Des_Choses = object #declare Des_Choses = object
{ {
union { union {
object { Chose () translate < 2.2, 0, 2.32> } object { Vase () scale 2 translate < 2.2, 0, 2.32> }
object { Chose () translate <-2.9, 0, 3.91> } object { Vase () scale 1.4 translate <-2.9, 0, 3.91> }
object { Chose () translate < 2.9, 0, -4.07> } object { Vase () scale 2 translate < 2.9, 0, -4.07> }
object { Chose () translate <-3.1, 0, -(3+NormClock)> } object { Vase () translate <-4.5, 0, -4> }
object { Chose () translate <-4.5, 0, -4> } object { Repere translate 0.15*y }
object { Repere translate 0.05*y }
} }
} }
// ======================================================= // =======================================================
#declare Gyros = object #declare GyroTrucs = object
{ {
// #debug " Les gyros !!!\n"
union { union {
#for (I, 0, 359, 30) #for (I, 0, 359, 30)
#declare E = 12 + (3*rand(Rng1)); #declare E = 12 + (3*rand(Rng1));
#declare Dx = E * sin(radians(I)); #declare Dx = E * sin(radians(I));
#declare Dz = E * cos(radians(I)); #declare Dz = E * cos(radians(I));
object { GyroPhare () translate <Dx, 0, Dz> } #local R = rand(Rng1);
#end #if (R > 0.52)
object { GyroPhare () translate <Dx, 0, Dz> }
#elseif (R > 0.36)
object { Colonne_A (3.8)
rotate y*(90*rand(Rng1))
translate <Dx, 0, Dz> }
#else
object { Colonne_A (2.8)
rotate y*(90*rand(Rng1))
translate <Dx, 0, Dz> }
#end
#end // for
} }
} }
object { Gyros } object { GyroTrucs }
// ========================================================## // ========================================================##
#local Fleche = object #declare Architecture = object
{ {
union { union {
cylinder { -5*x, 5*x, 0.09 } object { Portique_A () translate z*6.5 }
cone { 5*x, 0.27, 6.66*x, 0.00007 } object { Portique_A () scale 2 translate z*2 }
} object { Portique_A () scale 1.8 }
texture { LeGris } object { Portique_A () scale 2 translate -z*3 }
} object { Portique_A () rotate y*9 translate -z*6.5 }
// object { Fleche translate y }
// ------------------------------------------------------ ##
#declare La_Patrouille = object
{
union {
object { Patrouille }
object { Fleche translate y }
} }
} }
// ------------------------------------------------------ ## // ------------------------------------------------------ ##
#debug " !!! ACTION !!!\n" #debug " !!! ACTION !!!\n"
#local Rv = 0.5 + (0.1*sin(clock*0.113));
#local Gv = 0.11;
#local Bv = 0.2 * abs(sin(clock*0.014));
light_source { light_source {
<-18, 54, -7> <-32, 40, -7>
colour Gray50 colour <Rv, Gv, Bv>
parallel parallel
point_at 0 point_at 0
} }
// ------------------------------------------------------ ## // ------------------------------------------------------ ##
#declare Selector = mod(int(clock/60)+20, 8); #declare Selector = int(clock/57);
#debug concat("Selector = ", str(Selector, 6, 0), "\n") #debug concat("Selector = ", str(Selector, 6, 0), "\n")
#declare AngleCam = 17 - 3*Cos_01(NormClock); #declare AngleCam = 27 - 3*Cos_01(NormClock);
#switch (Selector) #switch (Selector)
#case (0) #case (0)
object { Des_Choses } object { Des_Choses }
#local AngleCam = 17;
#break #break
#case (1) #case (1)
object { La_Patrouille rotate -y*(clock*0.666) object { Architecture rotate -y*(clock*0.666) }
translate y*2.5 }
#local AngleCam = 31.0; #local AngleCam = 31.0;
#break #break
#case (2) #case (2)
object { Le_ConeStack () translate y*0.20 } object { HoleBorder_B (2.222) }
#break #break
#case (3) #case (3)
object { HorlogeDouble rotate -y*(5*clock) } object { HorlogeDouble scale 2 rotate -y*(6*clock) }
// object { Repere translate y*1 } object { Repere translate y*1 }
#break #break
#case (4) #case (4)
object { Trident_A() object { Blob_Boxed
scale 1.8 scale 4.000
rotate <28, 0, 12> translate 2.2*y rotate <7, 0, 12> translate 3.7*y
rotate -y*clock } }
#break #break
#case (5) #case (5)
object { Les_Boules translate y*0.8 } object { Anemone_A (3.10-NormClock, 1.50+NormClock)
translate < 4, 0, 0> }
object { Anemone_A (2.40-NormClock, 2.50+NormClock)
translate <-4, 0, 0> }
object { Anemone_A (1.40+NormClock, 1.50*NormClock)
translate < 0, 0, -4> }
object { Anemone_A (1.40+NormClock, 1.50-NormClock)
translate < 0, 0, 4> }
object { Repere }
#break #break
#case (6) #case (6)
object { HexaStar scale 3 translate y*3 } object { HexaStar scale 3 rotate y*(clock*1.5) translate y*3.5 }
#break #break
#case (7) #case (7)
#local Pos = <0.5-NormClock, 0, 0>; #local Pos = <0.5-NormClock, 0, 0>;
object { ProtoTextures rotate -y*clock translate 0 } object { ProtoTextures rotate -y*(55*Cos_01(NormClock)) }
#break #break
#end // switch selector #end // switch selector
@@ -331,24 +381,22 @@ plane {
texture { Ground_Texture } texture { Ground_Texture }
} }
// object { Repere translate y*1.0 }
// ======================================================= // =======================================================
#local CamX = -2.7 + (1.8*Cos_010(NormClock)); #local CamX = -2.7 + (1.8*Cos_010(NormClock));
#local CamY = 0.61 + (1.1*exp(NormClock)); #local CamY = 0.61 + (0.9*exp(NormClock));
#local CamZ = -5.777 + (1.2*Cos_01(NormClock)); #local CamZ = -5.777 + (1.2*Cos_01(NormClock));
#local K = 8.6; #local K = 8.6;
#local CamX = CamX * K; #local CamX = CamX * K;
#local CamY = CamY * K * 0.61; #local CamY = CamY * K * 0.41;
#local CamZ = CamZ * K; #local CamZ = CamZ * K;
camera { camera {
orthographic
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at <0, 1.6, 0> look_at <0, 1.5, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle AngleCam angle AngleCam
} }

View File

@@ -8,14 +8,37 @@
#declare Repere = object #declare Repere = object
{ {
union { union {
#local R = 0.01555555; #local R = 0.015;
cylinder { 0, <1, 0, 0>, R pigment { color Red } } #local R2 = R * 2.33;
cylinder { 0, <0, 1, 0>, R pigment { color Green } } #local LC = 1.15;
cylinder { 0, <0, 0, 1>, R pigment { color Blue } } merge {
cylinder { 0, <1, 0, 0>, R }
cone { <1, 0, 0>, R2, <LC, 0, 0>, 0 }
texture { R_Texture }
}
merge {
cylinder { 0, <0, 1, 0>, R }
cone { <0, 1, 0>, R2, <0, LC, 0>, 0 }
texture { G_Texture }
}
merge {
cylinder { 0, <0, 0, 1>, R }
cone { <0, 0, 1>, R2, <0, 0, LC>, 0 }
texture { B_Texture }
}
} }
} }
/* ======================================================= */ #declare Fleche = object
#declare R_C = 0.35; {
union {
cylinder { -5*x, 5*x, 0.09 }
cone { 5*x, 0.27, 6.66*x, 0.00007 }
}
texture { LeGris }
}
// ------------------------------------------------------ ##
#declare R_C = 0.335;
/* ce truc mérite un nom plus parlant ! */ /* ce truc mérite un nom plus parlant ! */
#macro Chose_le_pied () #macro Chose_le_pied ()
@@ -88,6 +111,36 @@ union {
#end // macro #end // macro
/* ======================================================= */ /* ======================================================= */
/* ------------------------------------------------------------ */
#declare HexaBlob = object
{
#declare RHBlo = 0.24;
#declare RHBlo2 = RHBlo * 0.777;
blob {
// threshold 0.01 + NormClock
threshold 0.07
sphere { <0, 0, 0>, RHBlo, 1 }
#local E = RHBlo * 1.210; // XXX
#local W = 0.15;
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 }
}
texture { T_WIP_bluewave scale 0.21 rotate <clock, clock/2, clock/3> }
}
/* ======================================================= */
/*
* 18 février 2026, cette horloge mérite vraiment
* d'être refaite de fond en comble, parce que ce
* code est vraiment gruik.
*/
#declare Horloge = object #declare Horloge = object
{ {
#local Texte = str(NormClock, 6, 3); #local Texte = str(NormClock, 6, 3);
@@ -96,13 +149,31 @@ union {
text { text {
// ttf "datas/DSEG7Classic-Regular.ttf" Texte 0.1, 0 // ttf "datas/DSEG7Classic-Regular.ttf" Texte 0.1, 0
ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0 ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0
texture { tPlasticPrune } texture { tPlasticBlue }
} }
scale 2.10 scale 1.96
rotate 90*x rotate 90*x
translate <-4.5, 0.043, 0> translate <-4.5, 0.046, 0>
}
// ----------------------------------------------------------
// nouveau du 3 janvier 2026
#local Horloge2 = object
{
object { Horloge scale <1, 0.28, 1> rotate -x*90
translate <0.802, 0.18, 0> }
}
#declare HorlogeDouble = object
{
union {
box { <-3.10, 0.0, -0.06>, <3.10, 1.68, 0.06>
texture { LeGris } }
#local EC = 0.18;
object { Horloge2 rotate y*180 translate z*EC }
object { Horloge2 translate -z*EC }
}
scale 0.42
translate y*0.666
} }
// ======================================================= // =======================================================
/* /*
* need more work ! * need more work !
@@ -118,7 +189,7 @@ prism {
#if (rand(Rng1) < 0.5) texture { T_Beton_1 } #if (rand(Rng1) < 0.5) texture { T_Beton_1 }
#else texture { T_Beton_2 } #else texture { T_Beton_2 }
#end // if #end // if
scale 0.666 // WTF ? scale 0.621 // WTF ?
/* Pourquoi ce scale ? /* Pourquoi ce scale ?
* parce que la spline est 'hardcoded' quelques * parce que la spline est 'hardcoded' quelques
* lignes plus haut, et qu'il y a des méthodes * lignes plus haut, et qu'il y a des méthodes
@@ -179,6 +250,7 @@ union {
cylinder { < D, -D, -D>, < D, D, -D>, R } cylinder { < D, -D, -D>, < D, D, -D>, R }
cylinder { <-D, -D, D>, <-D, D, D>, R } cylinder { <-D, -D, D>, <-D, D, D>, R }
cylinder { < D, -D, D>, < D, D, D>, R } cylinder { < D, -D, D>, < D, D, D>, R }
/* en bas */ /* en bas */
cylinder { < D, -D, D>, <-D, -D, D>, R } cylinder { < D, -D, D>, <-D, -D, D>, R }
cylinder { < D, -D, -D>, <-D, -D, -D>, R } cylinder { < D, -D, -D>, <-D, -D, -D>, R }
@@ -191,9 +263,29 @@ union {
cylinder { <-D, D, D>, <-D, D, -D>, R } cylinder { <-D, D, D>, <-D, D, -D>, R }
cylinder { < D, D, D>, < D, D, -D>, R } cylinder { < D, D, D>, < D, D, -D>, R }
/* les 8 coins */
#local R2 = R * 1.38;
sphere { <-D, -D, -D>, R2 }
sphere { < D, -D, -D>, R2 }
sphere { <-D, -D, D>, R2 }
sphere { < D, -D, D>, R2 }
sphere { <-D, D, -D>, R2 }
sphere { < D, D, -D>, R2 }
sphere { <-D, D, D>, R2 }
sphere { < D, D, D>, R2 }
texture { Soft_Silver scale 6.50 } texture { Soft_Silver scale 6.50 }
} }
#end #end
// ----------------------------------------------------------- ##
/* XXX +++ make this a #macro +++ */
#declare Blob_Boxed = object
{
union {
object { OpenBox(0.5, 0.01) }
object { HexaBlob rotate <clock*0.9, clock*0.7, clock*0.5> }
}
}
// ======================================================= // =======================================================
/* /*
* first written macro for testing the generation of * first written macro for testing the generation of
@@ -201,10 +293,11 @@ union {
*/ */
#macro Bubble () #macro Bubble ()
sphere { sphere {
0, 0.070 0, 0.070 + 0.056*rand(Rng1)
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.333 ) texture { Ruby_Glass } #if ( R < 0.25 ) texture { Ruby_Glass }
#elseif ( R < 0.666 ) texture { Orange_Glass } #elseif ( R < 0.50 ) texture { Orange_Glass }
#elseif ( R < 0.75 ) texture { Shadow_Clouds }
#else texture { Gold_Nugget } #else texture { Gold_Nugget }
#end #end
#undef R #undef R
@@ -215,7 +308,7 @@ sphere {
#macro Un_Machin () #macro Un_Machin ()
union { union {
#for (Y, 1, 8, 1) #for (Y, 1, 8, 1)
object { Bubble() translate y*Y*0.11 } object { Bubble() translate y*Y*0.115 }
#end #end
} }
#end #end
@@ -225,11 +318,11 @@ union {
#declare Les_Machins = object #declare Les_Machins = object
{ {
union { union {
#local Rk = 3.90 + NormClock; #local Rk = 3.60 + NormClock;
#for (foo, 0, 359, 45) #for (foo, 0, 359, 45)
#local Xpos = Rk * sin(radians(foo)); #local Xpos = Rk * sin(radians(foo));
#local Zpos = Rk * cos(radians(foo)); #local Zpos = Rk * cos(radians(foo));
object { Un_Machin () translate <Xpos, 0.20, Zpos> } object { Un_Machin () translate <Xpos, 0.22, Zpos> }
#end #end
#undef Rk #undef Rk
} }

3
gif89a/README.md Normal file
View File

@@ -0,0 +1,3 @@
Space for the flashy Compuserve pictures.

View File

@@ -11,7 +11,7 @@ global_settings {
#include "stones.inc" #include "stones.inc"
#include "woods.inc" #include "woods.inc"
#declare Rng1 = seed(1121); #declare Rng1 = seed(1221);
#declare foo = rand(Rng1); #declare foo = rand(Rng1);
#declare Rng2 = seed(now*24*60*60); #declare Rng2 = seed(now*24*60*60);
#declare bar = rand(Rng2); #declare bar = rand(Rng2);
@@ -41,15 +41,25 @@ global_settings {
#declare R_circular = (SzSol * 1.60); #declare R_circular = (SzSol * 1.60);
#declare R_hole = 3.1; // holes in the background
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/* /*
* Some textures... * Some textures...
*/ */
#declare LeGris = texture
{
/* moi j'dis qu'il est temps de définir un "gris de base" */
pigment { color Gray70 }
finish { phong 0.33 ambient 0.33 }
}
#declare T_WIP_color = texture #declare T_WIP_color = texture
{ {
pigment { color Cyan*NormClock } #local V = (sin(clock*0.142) / 2) + 0.5;
finish { phong 0.23 ambient 0.50 } pigment { color Orange * V }
finish { phong 0.23 ambient 0.30 }
} }
#declare T_WIP_alert = texture #declare T_WIP_alert = texture
@@ -113,7 +123,7 @@ finish { roughness 1.00 }
#declare tPlasticBlue = texture #declare tPlasticBlue = texture
{ {
pigment{rgb <0.50, 0, 2.0>} pigment{rgb <0.20, 0, 2.0>}
finish { finish {
ambient 0.1 ambient 0.1
diffuse 0.6 diffuse 0.6
@@ -193,7 +203,7 @@ pigment {
[1.00 color Black ] [1.00 color Black ]
} }
} }
finish { phong 0.23 ambient 0.40 } finish { phong 0.23 ambient 0.30 }
scale <3, 4, 3> scale <3, 4, 3>
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@@ -204,12 +214,12 @@ scale <3, 4, 3>
pigment { pigment {
wood wood
color_map { color_map {
[0.0 color Gray70 ] [0.0 color Gray60 ]
[0.5 color Gray80 ] [0.5 color Gray80 ]
[0.5 color Blue ] [0.5 color Blue ]
[1.0 color Blue ] [1.0 color Blue ]
} }
// XXX rotate y*49 turbulence 0.04
translate <NormClock*0.1, sqrt(NormClock*0.4), translate <NormClock*0.1, sqrt(NormClock*0.4),
NormClock*0.333> NormClock*0.333>
scale <0.2, 0.3, 1> scale <0.2, 0.3, 1>
@@ -217,6 +227,33 @@ scale <3, 4, 3>
finish { phong 1 } finish { phong 1 }
} }
#declare T_WIP_redwave = texture
{
pigment {
wood
color_map {
[0.0 color Gray60 ]
[0.49 color Gray80 ]
[0.51 color Red ]
[1.0 color Red ]
}
turbulence 0.14
translate <NormClock*0.5, sqrt(NormClock*0.49),
NormClock*0.6>
scale <0.7, 0.23, 1>
}
finish { ambient 0.7 }
}
// le 10 fevrier 2026 -----------------
#declare T_WIP_dents = texture
{
pigment { color <0.36, 0.6, 0.79> }
normal { dents 2.94 scale 0.15 }
rotate <12, 34, 56>
finish { specular 0.40 ambient 0.59 }
}
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
#declare GoldDark = texture #declare GoldDark = texture

View File

@@ -47,13 +47,14 @@ texture { T_Beton_2 }
text { text {
ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0 ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0
// texture { T_WIP_alert } // texture { T_WIP_alert }
texture { T_WIP_bluewave scale 0.65 } texture { T_WIP_bluewave rotate <clock, clock, clock>
scale 0.79 }
} }
} }
#declare Cabane_Compteur = object #declare Cabane_Compteur = object
{ {
union { union {
object { Compteur scale 0.55 object { Compteur scale 0.666
translate <-0.46, 0.22, 0.32> } translate <-0.46, 0.22, 0.32> }
object { Cabane_Base_2 } object { Cabane_Base_2 }
} }
@@ -77,7 +78,7 @@ intersection {
} }
} }
} }
cylinder { -y*5, y*5, SzSol*0.51 } cylinder { -y*5, y*5, SzSol*0.52 }
} }
finish { phong 0.096 } finish { phong 0.096 }
translate y*H_sol translate y*H_sol

View File

@@ -15,13 +15,15 @@ object { Le_Decor }
#declare Loc_cam = <0.63, 2, 2*NormClock> + (Pos_RedB_0 * 1.32); #declare Loc_cam = <0.63, 2, 2*NormClock> + (Pos_RedB_0 * 1.32);
#declare Lat_Y = 1.21 + 0.16*NormClock;
camera { camera {
location Loc_cam location Loc_cam
look_at Pos_RedB_0 + <0, 1.20, 0> look_at Pos_RedB_0 + <0, Lat_Y, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
// focal_point <0.37, 0.0, 0> // focal_point <0.37, 0.0, 0>
// aperture 0.046 // aperture 0.046
// blur_samples 30 // blur_samples 30
angle 40 - 14 * Cos_01(NormClock) angle 40 - 15 * Cos_01(NormClock)
} }

View File

@@ -6,6 +6,7 @@
#include "globals.inc" #include "globals.inc"
// #declare DEBUG_LEVEL = 1;
#declare NO_DYNAMIC = 0; #declare NO_DYNAMIC = 0;
#include "all.inc" #include "all.inc"
@@ -15,16 +16,16 @@ object { Le_Decor }
// object { Repere scale 2 } // object { Repere scale 2 }
#declare Loc_cam = <2, 2.7-NormClock, 1> + (Pos_RedB_1 * 1.383); #declare Loc_cam = <2, 2.7-NormClock, 1> + (Pos_RedB_1 * 1.308);
camera { camera {
location Loc_cam location Loc_cam
#local H = 1.16 + (NormClock*0.34); #local H = 1.16 + (NormClock*0.39);
look_at Pos_RedB_1 + <0.02, H, 0> look_at Pos_RedB_1 + <0.02, H, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
// focal_point <0.37, 0.90, 0> // focal_point <0.37, 0.90, 0>
// aperture 0.046 // aperture 0.046
// blur_samples 30 // blur_samples 30
angle 55 - 25 * Cos_01(NormClock) angle 59 - 25 * Cos_01(NormClock)
} }

View File

@@ -8,14 +8,14 @@
/* ============================================================ */ /* ============================================================ */
/* Un des six éléments de base */ /* Un des six éléments de base */
#declare HS_radius = 0.407; #declare HS_radius = 0.409;
#macro HS_element_pointe () #macro HS_element_pointe ()
union { union {
#local R_a = HS_radius * 0.33333; #local R_a = HS_radius * 0.369;
#local Small = 0.00001; #local Small = 0.00001;
cone { <-1.34, 0, 0>, Small, <-0.6, 0, 0>, R_a } cone { <-1.34, 0, 0>, Small, <-0.6, 0, 0>, R_a }
sphere { 0, R_a scale <0.3, 1, 1> translate <-0.6, 0, 0> } sphere { 0, R_a scale <0.42, 1, 1> translate <-0.6, 0, 0> }
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.45 ) texture { GoldDark } #if ( R < 0.45 ) texture { GoldDark }
#elseif ( R < 0.60 ) texture { Aluminum } #elseif ( R < 0.60 ) texture { Aluminum }
@@ -27,36 +27,48 @@ union {
/* /*
* element central --- À REFAIRE EN MACRO ! * element central --- À REFAIRE EN MACRO !
*/ */
#declare HS_element_central = object #macro HS_element_central ()
{
union { union {
torus { HS_radius*0.73, 0.0180 } #local HSCR = HS_radius*0.70;
#local L = 0.0032; torus { HSCR, 0.0180 }
cylinder { -y*L, y*L, 0.059 }
sphere { 0, 0.059 translate -y*L }
sphere { 0, 0.059 translate y*L }
}
scale <1, 25.10, 1>
rotate z*90
#local R = rand(Rng1);
#if ( R < 0.33 ) texture { Y_Texture }
#elseif ( R < 0.66 ) texture { T_Gold_1A }
#else texture { Aluminum }
#end
}
// le noyau central
#local L = 0.0028;
#local R = 0.0577;
cylinder { -y*L, y*L, R }
sphere { 0, R translate y*L }
sphere { 0, R scale <1, 0.20, 1>translate -y*L }
// les ailettes intérieures
#for (foo, 0, 5)
cylinder { 0, x*HSCR, R*0.15 rotate y*foo*60 }
#end
// traitement final
scale <1, 23.10, 1>
rotate z*90
#local R = rand(Rng1);
#if ( R < 0.17 ) texture { Y_Texture }
#elseif ( R < 0.66 ) texture { T_Gold_1A }
#else texture { Aluminum }
#end
}
#end
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/* nouveau 14 janvier 2026 */ /* nouveau 14 janvier 2026 */
#macro HS_element_queue () #macro HS_element_queue ()
union { union {
#local R_a = HS_radius * 0.2222; #local R_a = HS_radius * 0.228;
#local Small = 0.00001; #local Small = 0.001;
cone { < 0.44, 0, 0>, Small, < 0.88, 0, 0>, R_a } cone { < 0.44, 0, 0>, Small, < 0.88, 0, 0>, R_a }
sphere { 0, R_a scale <0.7, 1, 1> translate <0.88, 0, 0> } sphere { 0, R_a scale <0.7, 1, 1> translate <0.88, 0, 0> }
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.45 ) texture { C_Texture } #if ( R < 0.35 ) texture { Rust scale 3.33
#elseif ( R < 0.80 ) texture { Aluminum } rotate y*(rand(Rng1)*273) }
#else texture { T_Gold_3C } #elseif ( R < 0.50 ) texture { T_Gold_5A }
#elseif ( R < 0.80 ) texture { Aluminum }
#else texture { T_Gold_3C }
#end #end
} }
#end // macro #end // macro
@@ -66,7 +78,7 @@ union {
// UNE ANTENNE ? // UNE ANTENNE ?
/* ============================================================ */ /* ============================================================ */
/* On regroupe les six élements */ /* On regroupe les N*six élements */
#declare HS_les_elements = object #declare HS_les_elements = object
{ {
union { union {
@@ -75,12 +87,15 @@ union {
#local Ty = E * cos(radians(Foo)); #local Ty = E * cos(radians(Foo));
#local Tz = E * sin(radians(Foo)); #local Tz = E * sin(radians(Foo));
union { union {
object { HS_element_pointe () } object { HS_element_pointe ()
object { HS_element_queue () } translate <0, Ty*1.16, Tz*1.16> }
translate <0, Ty, Tz> object { HS_element_queue ()
translate <0, Ty*0.80, Tz> }
} }
#end // end for #end // end for
object { HS_element_central } object { HS_element_central () }
// object { Repere }
} }
} }
/* ============================================================ */ /* ============================================================ */

View File

@@ -28,6 +28,6 @@ camera {
// focal_point <0.37, 0.0, 0> // focal_point <0.37, 0.0, 0>
// aperture 0.046 // aperture 0.046
// blur_samples 30 // blur_samples 30
angle 70 - 9 * Cos_01(NormClock) angle 65 - 11 * Cos_01(NormClock)
} }

View File

@@ -84,7 +84,7 @@ merge {
#local RP = 0.040; #local RP = 0.040;
sphere { 0, RP scale <1, 0.84, 1> translate 0.35*y } sphere { 0, RP scale <1, 0.84, 1> translate 0.35*y }
cylinder { 0, 0.35*y, RP } cylinder { 0, 0.35*y, RP }
sphere { 0, 0.09 scale <1, 0.29, 1> } sphere { 0, 0.09 scale <1, 0.26, 1> }
} }
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.3 ) texture { Tinny_Brass } #if ( R < 0.3 ) texture { Tinny_Brass }
@@ -109,7 +109,7 @@ union {
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
#declare HW_Anneau0 = object #declare HW_Anneau_0 = object
{ {
merge { merge {
torus { Hc_rad*0.31, 0.0666 scale <1, 0.55, 1> } torus { Hc_rad*0.31, 0.0666 scale <1, 0.55, 1> }
@@ -121,9 +121,35 @@ merge {
#end // FOR #end // FOR
} }
texture { GoldDark } texture { GoldDark }
rotate y * (1337 * NormClock) }
#declare HW_Anneau_1 = object
{
merge {
#for (Foo, 0, 359, 60)
#local DX = Hc_rad*0.35 * sin(radians(Foo+30));
#local DZ = Hc_rad*0.35 * cos(radians(Foo+30));
merge {
cylinder { 0, 0.05*y, 0.006 }
cone { 0.03*y, 0.006, 0.08*y, 0.012 }
sphere { 0.08*y, 0.013 }
translate <DX, 0, DZ>
}
#end
}
texture { T_WIP_color }
}
#declare HW_Anneau = object
{
union {
object { HW_Anneau_0 }
object { HW_Anneau_1 }
}
rotate y * (1664 * NormClock)
translate y*0.32 translate y*0.32
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
#declare HexaWood = object #declare HexaWood = object
{ {
@@ -134,7 +160,7 @@ union {
light_source { 0.20*y rgb <0, 0.20, 0.99> } light_source { 0.20*y rgb <0, 0.20, 0.99> }
#end #end
object { HW_Cones () translate y*0.15 } object { HW_Cones () translate y*0.15 }
object { HW_Anneau0 } object { HW_Anneau }
} }
} }

View File

@@ -17,14 +17,14 @@ object { Le_Decor }
// object { Repere translate <10, 1, 10> } // object { Repere translate <10, 1, 10> }
#declare LOC = <19-NormClock, 1.60, 15.5-NormClock>; #declare LOC = <-3.4 - NormClock, 3.35, 31.9-NormClock>;
#declare LAT = <P_hexawood.x, 0.95+(NormClock*0.1), P_hexawood.z>; #declare LAT = <P_hexawood.x, 0.95+(NormClock*0.11), P_hexawood.z>;
camera { camera {
location LOC location LOC
look_at LAT look_at LAT
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 16 + 2.71*NormClock angle 20 + 2.87*NormClock
} }

View File

@@ -10,7 +10,7 @@
#include "all.inc" #include "all.inc"
// ======================================================= // =======================================================
#declare R_planete = 1.45; #declare R_planete = 1.85;
#declare Croute = object #declare Croute = object
{ {
@@ -51,7 +51,7 @@ union {
} }
// ======================================================= // =======================================================
#local RO = 4.15; #local RO = 5.39;
#local CK = NormClock * 13.37; #local CK = NormClock * 13.37;
#declare PosX = RO * sin(CK); #declare PosX = RO * sin(CK);
@@ -67,19 +67,27 @@ object { HexaCone ()
rotate y*CK*99.22 translate <PosX, PosY, PosZ> rotate y*CK*99.22 translate <PosX, PosY, PosZ>
} }
#declare PosX = RO * sin(CK+3.14); #declare PosX = RO * 1.5 * sin(CK+3.14);
#declare PosY = 0; #declare PosY = 0;
#declare PosZ = RO * cos(CK+3.23); #declare PosZ = RO * cos(CK+3.23);
object { Trident_A ()
rotate <clock*1.3, 0, clock*0.7>
rotate y*CK*99.22 translate <PosX, PosY, PosZ>
}
#declare PosX = RO * sin(CK+5.14);
#declare PosY = 0;
#declare PosZ = RO * cos(CK+5.14);
object { HexaStar object { HexaStar
rotate y*CK*99.22 translate <PosX, PosY, PosZ> rotate y*CK*99.22 translate <PosX, PosY, PosZ>
} }
object { Planete rotate (-clock*0.21)*y } object { Planete rotate (-clock*0.31)*y }
light_source { <23, 6, 15>, rgb <0.77, 0.79, 0.80> } light_source { <23, 10, 15>, rgb <0.77, 0.79, 0.80> }
// ------------------------------------------------------------- // -------------------------------------------------------------
camera { camera {
location <3+NormClock, -1.0+(7.777*NormClock), 8.59> location <9+NormClock, 1.60+(9.8*NormClock), 11.59>
look_at <0.0, 0.0, 0> look_at <0.0, 0.0, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
#if (0) #if (0)
@@ -87,6 +95,6 @@ camera {
aperture 0.046 aperture 0.046
blur_samples 30 blur_samples 30
#end #end
angle 55 angle 57
} }

View File

@@ -16,7 +16,7 @@ object { Le_Decor }
// ======================================================= // =======================================================
#declare CK = 1.8 + (2.72 * Cos_01(NormClock)); #declare CK = 1.97 + (2.72 * Cos_01(NormClock));
#declare CamX = 1.72; #declare CamX = 1.72;
#declare CamY = 7 + (4*Cos_01(NormClock)); #declare CamY = 7 + (4*Cos_01(NormClock));

View File

@@ -17,7 +17,7 @@ object { HexaCone () translate <PosX, PosY, PosZ> }
/* XXX this two object in dynamic.inc ??? */ /* XXX this two object in dynamic.inc ??? */
object { HexaCone () translate <PosX+2.96, PosY+3.22, PosZ-19.5> } object { HexaBenz () translate <PosX+2.96, PosY+3.22, PosZ-19.5> }
object { HexaStar rotate y*90 translate <PosX-1.96, PosY+2.72, PosZ-17.5> } object { HexaStar rotate y*90 translate <PosX-1.96, PosY+2.72, PosZ-17.5> }
object { Le_Decor } object { Le_Decor }

38
patrouille.pov Normal file
View File

@@ -0,0 +1,38 @@
/*
* 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
*
* this sequence was created on Fri Feb 13 01:20:24 PM UTC 2026
*/
#version 3.7;
#include "globals.inc"
#declare NO_DYNAMIC = 0;
#include "all.inc"
object { Le_Decor }
// object { Repere scale 5 translate y*4 }
/* =============================================================== */
#declare CamX = 90 - (4 * NormClock);
#declare CamY = 176;
#declare CamZ = 170 - (33 * NormClock);
/* XXX to be verified !
#declare LatX = Loc_Patrouille.x;
#declare LatY = Loc_Patrouille.y;
#declare LatZ = Loc_Patrouille.z;
*/
camera {
location <CamX, CamY, CamZ>
look_at Loc_Patrouille
right <image_width/image_height, 0, 0>
angle 13
}
/* =============================================================== */

View File

@@ -33,10 +33,10 @@ object { Le_Decor }
// object { Repere scale 3 translate <SzSol, 2, SzSol> } // object { Repere scale 3 translate <SzSol, 2, SzSol> }
#local DistCam = 390; #local DistCam = 460 + (16 * NormClock);
#local CK = -1.101 - (0.051 * NormClock); #local CK = -1.71 - (0.039 * NormClock);
#declare CamX = DistCam * sin(CK); #declare CamX = DistCam * sin(CK);
#declare CamY = 28; #declare CamY = 28 + NormClock;
#declare CamZ = DistCam * cos(CK); #declare CamZ = DistCam * cos(CK);
camera { camera {
@@ -46,5 +46,5 @@ camera {
// focal_point <2, 1, 12> // focal_point <2, 1, 12>
// aperture 0.046 // aperture 0.046
// blur_samples 30 // blur_samples 30
angle 4.0 angle 3.5
} }

View File

@@ -1,6 +1,7 @@
/* /*
* H E X A C O N E - S C E N E * H E X A C O N E - S C E N E
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024 * nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
* The first one...
*/ */
#version 3.7; #version 3.7;
@@ -14,17 +15,17 @@
object { Le_Decor } object { Le_Decor }
#declare CK = 144 + (clock * 0.27); #declare CK = 144 + (clock * 0.25);
#declare Dcam = 3.75; #declare Dcam = 3.75;
#declare CamX = Dcam * cos(radians(CK)); #declare CamX = Dcam * cos(radians(CK+0.9));
#declare CamZ = Dcam * 1.20 * sin(radians(CK)); #declare CamZ = Dcam * 1.20 * sin(radians(CK));
#declare LatZ = 2.45 + (0.9 * Cos_010(NormClock)); #declare LatY = 2.45 + (1.47 * Cos_010(NormClock));
camera { camera {
location <CamX, 1.97, CamZ> location <CamX, 1.97, CamZ>
look_at <0.03, LatZ, 0.17> look_at <0.03, LatY, 0.17>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
// focal_point Lat // focal_point Lat
// aperture 0.046 // aperture 0.046

View File

@@ -15,12 +15,12 @@ object { Le_Decor }
// XXX instrumenter la caméra serait un GROS plus !!! // XXX instrumenter la caméra serait un GROS plus !!!
// ======================================================= // =======================================================
#declare Debut = <-4, 89, 284> ; #declare Debut = <-33, 89, 289> ;
#declare Fin = < 5, 91, -6> ; #declare Fin = < 36, 78, -2> ;
#declare Pos = sqrt(NormClock); #declare Pos = sqrt(NormClock);
#declare PosCam = Interpolate(Debut, Fin, Pos); #declare PosCam = Interpolate(Debut, Fin, Pos);
#declare LatX = 0.414 * sin(NormClock*6.1); #declare LatX = 0.614 * sin(NormClock*11.27);
#declare LatZ = -(150 + (7*NormClock)); #declare LatZ = -(150 + (7*NormClock));
#declare LatCam = PosCam + <LatX, -95, LatZ>; #declare LatCam = PosCam + <LatX, -95, LatZ>;
@@ -30,6 +30,6 @@ camera {
location PosCam location PosCam
look_at LatCam look_at LatCam
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 66 angle 64
} }

View File

@@ -27,7 +27,7 @@ C'est le directeur de la production, le grand
[script](./linkfarmer.sh) [script](./linkfarmer.sh)
d'assemblage des séquences avec générique et intertitres. d'assemblage des séquences avec générique et intertitres.
Hélas, il n'est pas encore configurable. Mais c'est Hélas, il n'est pas encore configurable. Mais c'est
en projet pour janvier 2026 ? en projet pour juin 2026 ?
## Encoding ## Encoding

View File

@@ -11,7 +11,7 @@ SEQ="essai"
if [ $# == 1 ] ; then if [ $# == 1 ] ; then
SEQ=$1 SEQ=$1
fi fi
echo "[$SEQ] going EGA" | tee -a WS/log # echo "[$SEQ] going EGA" | tee -a WS/log
debut=$(date +%s) debut=$(date +%s)

View File

@@ -11,9 +11,9 @@ if [ $# == 1 ] ; then
SEQ=$1 SEQ=$1
fi fi
GIF="t-$SEQ.gif" GIF="gif89a/$SEQ.gif"
echo "seq $SEQ -> $GIF" | tee -a WS/log # echo "seq $SEQ -> $GIF" | tee -a WS/log
convert \ convert \
-delay 7 \ -delay 7 \

View File

@@ -41,8 +41,8 @@ FILMNAME="$2"
# echo "Encoding $SRCDIR to $FILMNAME" | tee -a WS/log # echo "Encoding $SRCDIR to $FILMNAME" | tee -a WS/log
ffmpeg -nostdin \ ffmpeg -nostdin \
-y -r 30 -f image2 -i frames/${SRCDIR}/%05d.png \ -y -r 30 -f image2 -i frames/${SRCDIR}/%05d.png \
-metadata artist='--[ tTh ]--' \ -metadata artist='--[ tTh des Bourtoulots ]--' \
-metadata title='-- HexaCone --' \ -metadata title='--[ la famille HexaCone ]--' \
-c:v libx264 \ -c:v libx264 \
-pix_fmt yuv420p \ -pix_fmt yuv420p \
-tune film \ -tune film \

View File

@@ -36,16 +36,16 @@ SRC="frames/$1"
local INTER="/dev/shm/tmp-intertitre.png" local INTER="/dev/shm/tmp-intertitre.png"
tools/plot-timing.sh $1 tools/plot-timing.sh $1
local NBRE=55 local NBRE=78
convert "WS/negatif.png" \ convert "WS/negatif.png" \
-gravity north \ -gravity north \
-font $FONTE \ -font $FONTE \
-pointsize 100 \ -pointsize 108 \
-kerning 8 \ -kerning 8 \
-fill $TEXTCOL \ -fill $TEXTCOL \
-strokewidth 2 -stroke $STROKOL \ -strokewidth 3 -stroke $STROKOL \
-annotate +0+530 "$1" \ -annotate +0+330 "$1" \
${INTER} ${INTER}
for foo in $(seq 0 $NBRE) for foo in $(seq 0 $NBRE)
@@ -80,7 +80,7 @@ local NBRE=300
local SRC="frames/hexacone/00199.png" local SRC="frames/hexacone/00199.png"
local GRAY="/dev/shm/tmp-titre.png" local GRAY="/dev/shm/tmp-titre.png"
convert -colorspace gray -colors 23 $SRC $GRAY convert -colorspace gray -colors 90 $SRC $GRAY
for foo in $(seq 0 $NBRE) for foo in $(seq 0 $NBRE)
do do
@@ -103,13 +103,13 @@ echo
# ------------------------------------------------------- # -------------------------------------------------------
faire_la_fin () faire_la_fin ()
{ {
local NBRE=160 local NBRE=180
datetime=$(LANG=fr date -u +"%Y/%m/%d %H:%M") datetime=$(LANG=fr date -u +"%Y/%m/%d %H:%M")
echo " $datetime" | tee -a WS/log echo " $datetime" | tee -a WS/log
local SRC="frames/escadrille/00399.png" local SRC="frames/patrouille/00165.png"
local GRAY="/dev/shm/tmp-titre.png" local GRAY="/dev/shm/tmp-fin.png"
convert -colorspace gray -colors 23 $SRC $GRAY convert -colorspace gray -colors 90 $SRC $GRAY
for foo in $(seq 0 $NBRE) for foo in $(seq 0 $NBRE)
do do
@@ -130,6 +130,7 @@ do
${TMP} ${TMP}
# identify ${TMP} # identify ${TMP}
copy_a_file ${TMP} copy_a_file ${TMP}
printf "." printf "."
done done
echo echo
@@ -142,11 +143,15 @@ rm -f frames/Spool/*.png
faire_le_titre faire_le_titre
linkfarm approche
linkfarm hexacone
linkfarm remote
linkfarm hexabenz linkfarm hexabenz
linkfarm splined linkfarm patrouille # new St Valentine 2026
linkfarm hexawood linkfarm hexawood
linkfarm escadrille linkfarm escadrille
linkfarm survol linkfarm survol
linkfarm around # new 26 jan 2026
linkfarm cutoff linkfarm cutoff
linkfarm panoramic linkfarm panoramic
linkfarm topview linkfarm topview
@@ -157,14 +162,12 @@ linkfarm carto
linkfarm circular linkfarm circular
linkfarm bubblecut linkfarm bubblecut
linkfarm orbite linkfarm orbite
linkfarm hexacone
linkfarm remote
linkfarm essai linkfarm essai
tools/plot-timing.sh tools/plot-timing.sh
faire_la_fin faire_la_fin
ff_encodage Spool full.mp4 ff_encodage Spool the-hexacone-family.mp4
nb=$(( $IDX - 1 )) nb=$(( $IDX - 1 ))
echo "linkfarmed $nb files" | tee -a WS/log echo "linkfarmed $nb files" | tee -a WS/log

View File

@@ -17,7 +17,7 @@ echo "$0 $SEQNAME from $START" >> WS/log
DIMS="-W$Img_Width -H$Img_Height" DIMS="-W$Img_Width -H$Img_Height"
NBFR=" Declare=NbFrames=$NBFRAMES " NBFR=" Declare=NbFrames=$NBFRAMES "
POVOPT="+q9 +A0.02 -d ${DIMS} ${NBFR} -WT5" POVOPT="+q9 +A0.02 -d ${DIMS} ${NBFR} -WT4"
echo $NBFR "frames." echo $NBFR "frames."
echo $POVOPT ; echo ; sleep 2 echo $POVOPT ; echo ; sleep 2
@@ -40,7 +40,7 @@ do
fi fi
set -e set -e
sqn=$(echo ${SEQNAME} | tr [a-z] [A-Z]) sqn=$(echo ${SEQNAME} | tr [a-z] [A-Z])
txt=$(printf "%s %03d" ${sqn} ${frame} | \ txt=$(printf "%s %03d" ${sqn} ${frame} | \
tr '01' 'ol') tr '01' 'ol')
# echo $frame $img $txt # echo $frame $img $txt
convert ${TMPIMG} \ convert ${TMPIMG} \
@@ -49,11 +49,11 @@ do
-kerning 3 \ -kerning 3 \
-fill ${TEXTCOL} \ -fill ${TEXTCOL} \
-strokewidth 2 -stroke $STROKOL \ -strokewidth 2 -stroke $STROKOL \
-gravity north \ -gravity south \
-annotate +0+5 "$txt" \ -annotate +0+5 "$txt" \
${img} ${img}
fin=$(date +%s) fin=$(date +%s)
echo echo ; sleep 1
printf "%-12s %5d %5d\n" \ printf "%-12s %5d %5d\n" \
${SEQNAME} $frame $(( fin-debut )) | \ ${SEQNAME} $frame $(( fin-debut )) | \
tee -a WS/mp4.timing tee -a WS/mp4.timing

43
tools/motionblur.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
#
# a new experiment 2026/02/29
#
##############################
# THIS SOFTWARE IS A MESS #
# TOO SLOW FOR REAL USE #
##############################
set -e ; set -u
source tools/config.sh
source tools/fonctions.sh
START=1
if [ $# == 1 ]
then
START=$1
fi
NB_SRC=$(ls -1 frames/Spool | wc -l)
printf "%s: %d frames\n" $0 $NB_SRC | tee -a WS/log
# -------------------------------------------------------
# MAIN LOOP
for frame in $(seq $START $(( $NB_SRC-1 )) )
do
imgA=$(printf "frames/Spool/%05d.png" $frame)
imgB=$(printf "frames/Spool/%05d.png" $((frame-1)))
imgC=$(printf "frames/TMP/%05d.png" $frame)
# echo $imgA $imgB
printf "%8d" $frame
composite $imgA $imgB \
-blend 50% \
$imgC
done
ff_encodage TMP motion-blurred.mp4
# -------------------------------------------------------

View File

@@ -10,24 +10,18 @@
#declare NO_DYNAMIC = 0; #declare NO_DYNAMIC = 0;
#include "all.inc" #include "all.inc"
/*
/* XXX * XXX
#declare TrX = 1.84 * sqrt(NormClock); * why this two moving hexathings are not in "dynamic.inc" ?
#declare TrY = 0.90 + (3.5 * Cos_01(NormClock)); */
#declare TrZ = 9.999 * sqrt(NormClock);
#declare TrH = <TrX, TrY, TrZ>;
#declare RrY = 97 * sqrt(NormClock);
object { HexaCone () rotate y*RrY translate TrH }
*/
object { HexaCone () rotate z*9.1 translate <7, 3+NormClock, -8> } object { HexaCone () rotate z*9.1 translate <7, 3+NormClock, -8> }
object { HexaBenz () translate <-9+NormClock, 2, -6> } object { HexaBenz () translate <-9+NormClock, 2, -6> }
/* /*
* nouveau 11 fevrier 2025 * nouveau 11 fevrier 2025
*/ */
#declare A = <-24, -0.9, (SzSol/2)+9>; #declare A = <-29, -0.5, (SzSol/2)+9>;
#declare B = < 33, -0.7, (SzSol/2)+7>; #declare B = < 36, -0.7, (SzSol/2)+7>;
#declare P = Interpolate(A, B, NormClock); #declare P = Interpolate(A, B, NormClock);
object { HexaWood translate P } object { HexaWood translate P }
@@ -35,15 +29,15 @@ object { HexaWood translate P }
object { Le_Decor } object { Le_Decor }
#declare CamY = 36 - (10.05 * Cos_01(NormClock)); #declare CamY = 47 - (9.50 * Cos_01(NormClock));
#declare LatY = -4 + ( 2.12 * NormClock); #declare LatY = -4 + ( 2.12 * NormClock);
camera { camera {
location <-3.60, CamY, 10.09> location <-3.60, CamY, 10.09>
look_at <0, LatY, 0> look_at <0.6, LatY, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
// focal_point <2, 1, 12> // focal_point <2, 1, 12>
// aperture 0.046 // aperture 0.046
// blur_samples 30 // blur_samples 30
angle 45 + (58*NormClock) angle 45 + (65*NormClock)
} }

View File

@@ -20,7 +20,7 @@ merge {
#macro Trid_A_cone () #macro Trid_A_cone ()
difference { difference {
object { Trid_cone } object { Trid_cone }
object { Trid_cone translate -y*0.04 } object { Trid_cone translate -y*0.06 }
#local Foo = rand(Rng1); #local Foo = rand(Rng1);
#if (Foo < 0.25) texture { T_Brass_2C } #if (Foo < 0.25) texture { T_Brass_2C }
#elseif (Foo < 0.50) texture { tPlasticOrange } #elseif (Foo < 0.50) texture { tPlasticOrange }
@@ -57,7 +57,7 @@ merge {
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.333) texture { T_Chrome_1C } #if ( R < 0.333) texture { T_Chrome_1C }
#elseif ( R < 0.666) texture { T_Silver_1C } #elseif ( R < 0.666) texture { T_Silver_1C }
#else texture { T_WIP_rasta } #else texture { T_WIP_rasta scale 3 }
#end #end
} }
#undef L #undef L
@@ -69,7 +69,7 @@ union {
object { Trid_A_cone () scale 0.89 translate <E, -0.05, 0> } object { Trid_A_cone () scale 0.89 translate <E, -0.05, 0> }
cylinder { 0, x*E, 0.008 scale <1, 5, 1> } cylinder { 0, x*E, 0.008 scale <1, 5, 1> }
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.6 ) texture { T_Silver_3A } #if ( R < 0.86 ) texture { T_Silver_3A }
#else texture { T_WIP_rasta } #else texture { T_WIP_rasta }
#end #end
#undef E #undef E
@@ -78,8 +78,9 @@ union {
// ------------------------------------------------------ // ------------------------------------------------------
#macro Trid_A_tail () #macro Trid_A_tail ()
union { union {
#for (A, 0, 360, 120) #for (A, 0, 359, 120)
object { Trid_A_ailette () rotate (A+270)*y } #local RY = A + 27*rand(Rng1);
object { Trid_A_ailette () rotate RY*y }
#end // for #end // for
} }
#end #end
@@ -94,7 +95,6 @@ union {
} }
#end #end
// ------------------------------------------------------ // ------------------------------------------------------
#debug "+++++++++++++++++++++ trident loaded\n"
// ------------------------------------------------------ // ------------------------------------------------------

View File

@@ -16,13 +16,19 @@ object { Le_Decor }
// object { Repere scale 2 } // object { Repere scale 2 }
#declare CK = 0.8 - (NormClock * 0.71); #declare CK = 0.8 - (NormClock * 0.71);
#declare DX_cam = 6.9 * cos(CK); #if (NormClock < 0.5000)
#declare DZ_cam = 5.4 * sin(CK); #declare DX_cam = -6.9 * cos(CK);
#declare DZ_cam = -5.4 * sin(CK);
#else
#declare DX_cam = -6.9 * sin(CK);
#declare DZ_cam = -5.6 * cos(CK);
#end
#declare Loc_cam = <DX_cam, 1.0, DZ_cam> + Pos_RedB_2; #declare Loc_cam = <DX_cam, 1.0, DZ_cam> + Pos_RedB_2;
camera { camera {
location Loc_cam location Loc_cam
look_at Pos_RedB_2 + <0, 1.95+NormClock, 0> look_at Pos_RedB_2 + <0, 2.05+NormClock, 0>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
// focal_point <0.37, 0.0, 0> // focal_point <0.37, 0.0, 0>

View File

@@ -4,6 +4,58 @@
* A cosy place for experimental things (2025/10/27) * A cosy place for experimental things (2025/10/27)
* *
*/ */
/* =============================================================== */
/*
* nouveau : Tue Feb 10 12:42:43 AM UTC 2026
*/
#macro HoleBorder_A (V)
difference {
#local RA = V * R_hole * 1.004;
#local RB = V * R_hole * 0.996;
#local HB_H = 0.53;
cylinder { 0, y*HB_H, RA }
cylinder { -y, y*2, RB }
#for (foo, 0, 179, 4)
cylinder {
<-20, 0, 0>, < 20, 0, 0>, 0.075
scale <1, 2.2, 1> translate y*(HB_H/2)
rotate y*foo
}
#end // for
#local R = rand(Rng1);
#if (R < 0.42) texture { LeGris }
#elseif (R < 0.64) texture { T_Beton_2 }
#else texture { T_Beton_1 }
#end
}
#end
/* --------------------------------------------------------------- */
#macro HoleBorder_B (V)
union {
#local Ra = V * R_hole * 1.02;
#local Rb = 0.028;
#local KY = 0.21;
torus { Ra, Rb texture { T_Beton_2 } translate y*KY }
torus { Ra, Rb texture { T_WIP_color } translate y*(KY*2) }
torus { Ra, Rb texture { T_WIP_dents } translate y*(KY*3) }
#for (foo, 0, 359.99, 15)
#local Dx = Ra * sin(radians(foo));
#local Dz = Ra * cos(radians(foo));
cylinder { 0, y*(3*KY), Rb*0.72
#local R = rand(Rng1);
#if (R < 0.67) texture { tPlasticPrune }
#else texture { tPlasticGreen }
#end // if R
translate <Dx, 0, Dz>
}
#end // for
}
#end
/* =============================================================== */ /* =============================================================== */
/* /*
* new Tue Dec 30 07:39:09 AM UTC 2025 * new Tue Dec 30 07:39:09 AM UTC 2025
@@ -11,8 +63,8 @@
#declare Patrouille = object #declare Patrouille = object
{ {
union { union {
#local EX = 2.4; #local EX = 1.9;
#local EZ = 2.1 + (0.5*sin(NormClock)); #local EZ = 2.0 + (0.5*sin(NormClock*2));
object { Trident_A () rotate x*87 } object { Trident_A () rotate x*87 }
object { HexaBenz () translate <-EX, 0, -EZ> } object { HexaBenz () translate <-EX, 0, -EZ> }
object { HexaCone () translate < EX, -0.4, -EZ> } object { HexaCone () translate < EX, -0.4, -EZ> }
@@ -45,7 +97,7 @@ object {
/* le corps */ /* le corps */
merge { merge {
#local L2 = Longueur / 2; #local L2 = Longueur / 2;
#local R = 0.27; #local R = 0.29;
cylinder { <L2, 0, 0>, <-L2, 0, 0>, R } cylinder { <L2, 0, 0>, <-L2, 0, 0>, R }
sphere { <0, 0, 0>, R sphere { <0, 0, 0>, R
scale <3, 1, 1> scale <3, 1, 1>
@@ -63,9 +115,9 @@ object {
scale <2.5, 1, 1> translate x*L2*0.75 scale <2.5, 1, 1> translate x*L2*0.75
} }
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R < 0.333) texture { T_Brass_2C } #if (R < 0.27) texture { T_Brass_2C }
#elseif (R < 0.25) texture { GoldDark } #elseif (R < 0.56) texture { GoldDark }
#elseif (R < 0.50) texture { T_Chrome_5A } #elseif (R < 0.70) texture { T_Chrome_5A }
#else texture { T_Gold_3C } #else texture { T_Gold_3C }
#end #end
} }
@@ -85,6 +137,38 @@ union {
} }
#end // macro #end // macro
/* =============================================================== */ /* =============================================================== */
/* nouveau du 7 octobre 2025 */
#macro Une_Boule ()
sphere {
0, 0.18 + (rand(Rng1) * 0.06)
#local R = rand(Rng1);
#if (R < 0.333) texture { C_Texture }
#elseif (R < 0.666) texture { M_Texture }
#else texture { Y_Texture }
#end
finish { phong 0.7 specular 0.3 }
}
#end // macro
/* TODO
* trouver une meilleure méthode de placement
*/
#declare Les_Boules = object
{
union {
#for (A, 0, 64, 1)
#local CK = (NormClock*55.00) + (A*0.28);
object { Une_Boule ()
#local TX = 3.2 * sin(CK);
#local TY = 0.4 * cos(sin(CK));
#local TZ = 3.0 * cos(1-CK);
translate <TX, TY, TZ>
}
object { Repere scale 2 }
#end // for
}
}
/* =============================================================== */
/* /*
* nouveau du 25 octobre 2025 * nouveau du 25 octobre 2025
*/ */