Compare commits

...

14 Commits

Author SHA1 Message Date
Tonton Th
b7c77a6a7e add DWTFYW license 2026-06-06 10:04:45 +02:00
Tonton Th
f3df71d687 nap time ? 2026-05-27 07:23:01 +02:00
Tonton Th
addd793fbc try a new yellow 2026-05-22 04:28:32 +02:00
Tonton Th
b5529645fd more bla 2026-05-09 13:30:54 +02:00
Tonton Th
884c19591b camera is going up 2026-05-05 04:28:37 +02:00
Tonton Th
e8126637fc hexapole light tuning 2026-05-05 04:27:15 +02:00
Tonton Th
751c02321b add a glowing light to the hexapoles 2026-04-29 09:27:45 +02:00
Tonton Th
5bd0af1ad2 ajust pseudo clock 2026-04-29 08:17:12 +02:00
Tonton Th
e47bd5680f hide a bad thing 2026-04-28 03:40:54 +02:00
Tonton Th
fabd442cfd tuninh horloge double 2026-04-25 13:43:43 +02:00
Tonton Th
15e8b7fb7c pimping HorlogeDouble 2026-04-25 00:34:25 +02:00
Tonton Th
6fc9de92c1 add a new texture 2026-04-24 22:25:12 +02:00
Tonton Th
a338717ac8 commit of a sunny trolldi 2026-04-24 10:46:23 +02:00
Tonton Th
feee435a55 fix a "off-by-30" critical bug 2026-04-19 07:14:23 +02:00
28 changed files with 169 additions and 109 deletions

14
LICENSE Normal file
View File

@@ -0,0 +1,14 @@
+----------------------------------------------------------------------+
| DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 |
| |
| Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> |
| |
| Everyone is permitted to copy and distribute verbatim or modified |
| copies of this license document, and changing it is allowed as long |
| as the name is changed. |
| |
| DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS |
| FOR COPYING, DISTRIBUTION AND MODIFICATION |
| |
| 0. You just DO WHAT THE FUCK YOU WANT TO. |
+----------------------------------------------------------------------+

View File

@@ -1,7 +1,7 @@
DIMS = -W1600 -H1200 DIMS = -W1600 -H1200
POVOPT = +q9 +A0.05 -WT2 Declare=NbFrames=450 -d POVOPT = +q9 +A0.05 -WT2 Declare=NbFrames=480 -d
POVDEP = contexte.inc hexacone.inc hexabenz.inc \ POVDEP = contexte.inc hexacone.inc hexabenz.inc \
all.inc hexastar.inc \ all.inc hexastar.inc \

View File

@@ -30,9 +30,9 @@ produites par un [script shell](./mkloop.sh).
Avant toute chose, vous devrez vérifier la présence de plusieurs Avant toute chose, vous devrez vérifier la présence de plusieurs
répertoires : répertoires :
D'un coté `./frames/<name>` pour stocker les images calculées D'un coté [`frames/<name>`](README.md) pour stocker les images
de chaque séquence et calculées de chaque séquence et
./frames/Spool` pour l'assemblage de la vidéo intégrale : (`frames/Spool`) pour l'assemblage de la vidéo intégrale :
``` ```
frames/ frames/
@@ -44,7 +44,7 @@ frames/
├── Spool ├── Spool
└── topview └── topview
``` ```
et de l'autre coté `./WS/` pour ranger les et de l'autre coté le repértoire `./WS/` pour ranger les
[fichiers de travail](./WS/README.md). [fichiers de travail](./WS/README.md).
Ensuite, il faut assembler toutes ces images calculées en une vidéo Ensuite, il faut assembler toutes ces images calculées en une vidéo
@@ -54,8 +54,8 @@ pour les mettre dans le grand Ternet mondial à partir de mon
[ADSL](http://maison.tth.netlib.re/pov/hexacone.html) de campagne. [ADSL](http://maison.tth.netlib.re/pov/hexacone.html) de campagne.
Ensuite, un autre [script](./tools/linkfarmer.sh) assemble toute Ensuite, un autre [script](./tools/linkfarmer.sh) assemble toute
les séquences dans le produit les séquences dans le produit
[final](http://maison.tth.netlib.re/v/hc/full.mp4), en ajoutant [final](http://maison.tth.netlib.re/v/hc/the-hexacone-family.mp4),
générique et inter-titres. en ajoutant un générique et des inter-titres.
À vous de jouer maintenant : *« Fork & Enjoy »* À vous de jouer maintenant : *« Fork & Enjoy »*
@@ -63,7 +63,8 @@ générique et inter-titres.
* La [mailing-list du tetalab](https://lists.tetalab.org/postorius/lists/tetalab.tetalab.org/) ; * La [mailing-list du tetalab](https://lists.tetalab.org/postorius/lists/tetalab.tetalab.org/) ;
* Par IRC, canal `#tetalab` ou `#povray` sur le réseau de [Libera](https://libera.chat/). * Par IRC, canal `#tetalab` ou `#povray` sur le réseau de [Libera](https://libera.chat/).
* Dans [Mastodon](https://mastodon.tetaneutral.net/@tth) et [Peertube](https://tube.interhacker.space/c/tth_channel/videos) * Dans [Mastodon](https://mastodon.tetaneutral.net/@tth) et
[Peertube](https://tube.interhacker.space/c/tth_channel/videos)
## La suite ## La suite

19
TODO.md
View File

@@ -2,18 +2,24 @@
## Urgent ## Urgent
- finaliser le revamping du début de 2026. - Finaliser le revamping du début de 2026.
- On est début mai et ça
n'est pas vraiment fini. Coté lumière ça commence à me plaire...
- ... Mais il reste beaucoup de chose à faire sur les
[textures](globals.inc).
## Outils ## Outils
- automatiser la création des répertoires dans `frames/` - Automatiser la création des répertoires dans `frames/`
- Génération de sous titres automatisée. - Génération de sous titres automatisée ?
- Passer le `shellcheck` dans les [tools](tools/).
## Trucages ## Trucages
- Se remettre à (enfin) améliorer - Se remettre à (enfin) améliorer
[libtthimage](https://git.tetalab.org/tTh/libtthimage). [libtthimage](https://git.tetalab.org/tTh/libtthimage).
- Relire le livre de Brunus sur ImageMagick. - Relire le livre de Brunus sur ImageMagick *!*
- Envisager d'utiliser les outils de film-floutage
## Audio ## Audio
@@ -25,6 +31,7 @@
Il reste encore beaucoup de chemin à parcourir, mais la Il reste encore beaucoup de chemin à parcourir, mais la
route est bien plaisante. route est bien plaisante.
Je me permet néamoins de déplorer le peu de présence de Je me permet néammoins de déplorer le peu de présence de
[povistes](https://mastodon.tetaneutral.net/tags/Povray) dans [povistes](https://mastodon.tetaneutral.net/tags/Povray) dans
mon entourage. mon entourage virtuel. Même la mailing-list du Tetalab
ne réagit pas... Hibernation ou volonté délibérée ?

View File

@@ -1,3 +1,4 @@
# Workspace # Workspace
For intermediates files, and timing log. This space is for intermediate files, fuzzy garbage, timing log,
and a lot of weird datas.

View File

@@ -15,9 +15,9 @@ object { Le_Decor }
// ======================================================= // =======================================================
#declare LocX = -0.5 + (2*Cos_010(NormClock)); #declare LocX = -1.5 + (2.10*Cos_010(NormClock));
#declare LocY = 2.6 - NormClock; #declare LocY = 2.6 - NormClock;
#declare LocZ = -200 + (118 * NormClock); #declare LocZ = -180 + (105 * NormClock);
#declare LatCam = <0, 0.92+NormClock, 0>; #declare LatCam = <0, 0.92+NormClock, 0>;

View File

@@ -10,12 +10,12 @@
#macro Jalon_0 (Rad, Hei, Ttu) #macro Jalon_0 (Rad, Hei, Ttu)
merge { merge {
cylinder { 0, Hei*y, Rad } cylinder { 0, Hei*y, Rad }
sphere { 0, Rad*2 scale <1, 0.333, 1> translate Hei*y } sphere { 0, Rad*2.75 scale <1, 0.333, 1> translate Hei*y }
texture { Ttu } texture { Ttu }
} }
#end #end
// =========================================================== // ===========================================================
#declare SzC = 0.3; #declare SzC = 0.333;
#macro Base_Col_A () #macro Base_Col_A ()
merge { merge {
box { <-SzC, 0, -SzC>, <SzC, 0.222, SzC> } box { <-SzC, 0, -SzC>, <SzC, 0.222, SzC> }
@@ -49,7 +49,7 @@ difference {
// ----------------------------------------------------------- // -----------------------------------------------------------
#macro Fut_Col_A (H) #macro Fut_Col_A (H)
object { object {
cylinder { 0, H*y, 0.15 } cylinder { 0, H*y, SzC * 0.50 }
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R < 0.43) #if (R < 0.43)
texture { T_Stone29 } texture { T_Stone29 }
@@ -73,7 +73,7 @@ union {
#macro Linteau_A (Lg, Epp) #macro Linteau_A (Lg, Epp)
merge { merge {
#local L = Lg + 0.42; #local L = Lg + 0.42;
#local K = 0.28; #local K = 0.30;
box { <-L, 0, -K>, <L, Epp, K> } box { <-L, 0, -K>, <L, Epp, K> }
cylinder { <0, Epp, -K*0.9>, <0, Epp, K*0.9>, K } cylinder { <0, Epp, -K*0.9>, <0, Epp, K*0.9>, K }
#local R = rand(Rng1); #local R = rand(Rng1);

View File

@@ -14,12 +14,12 @@
#declare POS_Cutoff = <-21, 0, -8>; #declare POS_Cutoff = <-21, 0, -8>;
#local TY = 1.55; #local TY = 1.65;
#declare Position = <0.50, -0.70, 0.75>; #declare Position = <0.50, -0.70, 0.75>;
#declare Rayon = 0.70 + 1.52 * NormClock; // rayon de la sphere #declare Rayon = 0.70 + 1.52 * NormClock; // rayon de la sphere
// de découpe // de découpe
#debug concat("Rayon decoupe = ", str(Rayon, 8, 3), "\n\n") #debug concat("Rayon decoupe = ", str(Rayon, 8, 3), "\n")
difference { difference {
object { HexaBenz () } object { HexaBenz () }
@@ -48,13 +48,13 @@ object { Le_Decor }
// ======================================================= // =======================================================
#local CamX = -27.4 + (2.29*Cos_01(NormClock)); #local CamX = -27.4 + (2.39*Cos_01(NormClock));
#local CamY = 2.7 - (0.24*sqrt(NormClock)); #local CamY = 1.9 - (0.24*sqrt(NormClock));
#local CamZ = -0.85 + (2.02*NormClock); #local CamZ = -0.85 + (2.12*NormClock);
camera { camera {
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at <0, 1.5, 0> + POS_Cutoff look_at <0, 1.5, 0> + POS_Cutoff
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 35 - 5*Cos_01(NormClock) angle 35 - 5.12*Cos_01(NormClock)
} }

View File

@@ -19,7 +19,7 @@ object { Repere scale 10 translate y*20 }
union { union {
#for (Foo, -140, 140, 10) #for (Foo, -140, 140, 10)
#local H = 0.07; #local H = 0.07;
#local Ra = 0.05; #local Ra = 0.055;
cylinder { <-150, H, Foo>, <150, H, Foo>, Ra } cylinder { <-150, H, Foo>, <150, H, Foo>, Ra }
cylinder { <Foo, H, -150>, <Foo, H, 150>, Ra } cylinder { <Foo, H, -150>, <Foo, H, 150>, Ra }
#end #end
@@ -30,8 +30,8 @@ union {
object { Le_Decor } object { Le_Decor }
camera { camera {
location <46, 199+(137*NormClock), 18-(12*NormClock)> location <46, 199+(250*NormClock), 8-(3*NormClock)>
look_at <0, 1.18, 0.17 + (2.4*NormClock)> look_at <0, 1.18, 0.17 - (42*NormClock)>
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 35 angle 35
} }

View File

@@ -10,15 +10,17 @@
#declare Les_Jalons = object #declare Les_Jalons = object
{ {
union { union {
#local EC = SzSol + 111; #local EC = SzSol + 195;
/* les coins */ /* les coins */
object { Jalon_0 (0.5, 3, LeGris) translate <-EC, 0, -EC> } object { Jalon_0 (0.5, 18, LeGris) translate <-EC, 0, -EC> }
object { Jalon_0 (0.5, 3, LeGris) translate < EC, 0, -EC> } object { Jalon_0 (0.5, 18, LeGris) translate < EC, 0, -EC> }
object { Jalon_0 (0.5, 3, LeGris) translate <-EC, 0, EC> } object { Jalon_0 (0.5, 18, LeGris) translate <-EC, 0, EC> }
object { Jalon_0 (0.5, 3, LeGris) translate < EC, 0, EC> } object { Jalon_0 (0.5, 18, LeGris) translate < EC, 0, EC> }
/* les milieux des cotés */ /* les milieux des cotés */
object { Jalon_0 (0.5, 6, LeGris) translate < 0, 0, -EC> } object { Jalon_0 (0.5, 6, T_Beton_1) translate < 0, 0, -EC> }
object { Jalon_0 (0.6, 6, LeGris) translate < 0, 0, EC> } object { Jalon_0 (0.6, 6, T_Beton_1) translate < 0, 0, EC> }
object { Jalon_0 (0.9, 6, T_Beton_2) translate < EC, 0, 0> }
object { Jalon_0 (0.6, 6, T_Beton_1) translate <-EC, 0, 0> }
} }
} }
/* ======================================================= */ /* ======================================================= */
@@ -28,7 +30,7 @@ union {
object { Portique_A () rotate -y*9 } object { Portique_A () rotate -y*9 }
object { Portique_A () scale <1, 1.2, 1> translate z*11 } object { Portique_A () scale <1, 1.2, 1> translate z*11 }
object { Portique_A () rotate y*9 translate z*22 } object { Portique_A () rotate y*9 translate z*22 }
box { <-4, 0, -2>, <4, 0.03, 24> texture { LeGris } } box { <-4.1, 0, -2>, <4.1, 0.03, 24> texture { LeGris } }
} }
#end // macro trois portiques #end // macro trois portiques
@@ -199,13 +201,13 @@ union {
object { HexaBalls object { HexaBalls
texture { Lightning1 scale 0.44 } texture { Lightning1 scale 0.44 }
rotate <clock/3, clock/4, clock/9> rotate <clock/3, clock/4, clock/9>
translate <2, 0.57+Cos_010(NormClock), 4> translate <2, 0.37+Cos_010(NormClock), 4>
} }
object { HexaBalls object { HexaBalls
texture { Lightning2 scale 0.56 } texture { Lightning2 scale 0.56 }
rotate <-clock, clock*0.33333, clock*3> rotate <-clock, clock*0.33333, clock*3>
translate <4, 0.61+Cos_010(NormClock), -3> translate <4, 0.21+Cos_010(NormClock), -3>
} }
} }
} }
@@ -308,7 +310,9 @@ union {
#local CK = radians(foo + (11*rand(Rng1))); #local CK = radians(foo + (11*rand(Rng1)));
#local DX = 83 * sin(CK); #local DX = 83 * sin(CK);
#local DZ = 79 * cos(CK); #local DZ = 79 * cos(CK);
object { Chose () translate < DX, 0, DZ> } // XXX #if (abs(DX) > 17)
object { Chose () translate < DX, 0, DZ> }
#end
#end #end
} }
} }
@@ -364,7 +368,7 @@ union {
object { QuadriLight } object { QuadriLight }
object { Les_GyroPhares () } object { Les_GyroPhares () }
object { Les_HexaPoles } object { Les_HexaPoles }
object { HorlogeDouble rotate y*(114*NormClock) object { HorlogeDouble rotate y*(134*NormClock)
translate < 8, 0, -30> } translate < 8, 0, -30> }
object { Les_Choses } object { Les_Choses }
object { Les_Arches (1.9) rotate y*112 translate <-34, 0, -26> } object { Les_Arches (1.9) rotate y*112 translate <-34, 0, -26> }

View File

@@ -7,7 +7,7 @@
object { object {
#local CK = (clock / 230) - 0.75; // en radians #local CK = (clock / 210) - 0.75; // en radians
#local RD = 63; // rayon deplacement #local RD = 63; // rayon deplacement
#local Xp = RD * sin(CK); #local Xp = RD * sin(CK);
#local Zp = RD * cos(CK); #local Zp = RD * cos(CK);
@@ -36,11 +36,12 @@ object {
/// ======================================================= /// =======================================================
/* des trucs autour des trous du sol. */ /* des trucs autour des trous du sol. */
// Les_Machins --> 'gadgets.inc' // Les_Machins dans 'gadgets.inc'
object { Les_Machins rotate -y*clock translate UnderHoles[2] }
object { Les_Machins rotate y*clock translate UnderHoles[5] }
object { Les_HexaBalls rotate y*(clock*2.9) translate UnderHoles[4] } // object { Les_Machins rotate -y*clock translate UnderHoles[2] }
// object { Les_Machins rotate y*clock translate UnderHoles[5] }
// object { Les_HexaBalls rotate y*(clock*2.9) translate UnderHoles[4] }
/// ======================================================= /// =======================================================
/* /*

View File

@@ -41,8 +41,9 @@ union {
#local DZ = (E+rand(Rng1)) * cos(A); #local DZ = (E+rand(Rng1)) * cos(A);
cone { cone {
#local RC = 0.15 + (rand(Rng1) * 0.50); #local RC = 0.15 + (rand(Rng1) * 0.50);
#local H2 = H + rand(Rng1); #local H1 = H * 0.25;
y*(H*(0.01)), 0.15, <DX, H2, DZ>, 0.001 #local H2 = H + 1.0 + rand(Rng1);
<0, H1, 0>, 0.15, <DX, H2, DZ>, 0.001
#local Rv = 0.7 + (0.2*rand(Rng1)); #local Rv = 0.7 + (0.2*rand(Rng1));
#local Gv = 0.4 + (0.5*rand(Rng1)); #local Gv = 0.4 + (0.5*rand(Rng1));
#local Bv = 0.6 + (0.4*rand(Rng1)); #local Bv = 0.6 + (0.4*rand(Rng1));
@@ -52,8 +53,14 @@ union {
finish { phong 0.51 reflection 0.08 } finish { phong 0.51 reflection 0.08 }
} }
} }
sphere { 0, 0.45 scale <1, 0.717, 1> texture { T_WIP_color } }
#end // for #end // for
union {
#local Rb = 0.42;
sphere { 0, Rb scale <1, 0.717, 1> translate H1*y }
cylinder { 0, (0.01+H1)*y, Rb }
texture { T_WIP_color }
}
} }
#end // macro #end // macro
@@ -66,7 +73,7 @@ union {
translate <-4, 0, 0> } translate <-4, 0, 0> }
object { Anemone_A (1.40+NormClock, 1.50*NormClock) object { Anemone_A (1.40+NormClock, 1.50*NormClock)
translate < 0, 0, -4> } translate < 0, 0, -4> }
object { Anemone_A (1.40+NormClock, 1.50-NormClock) object { Anemone_A (1.40+NormClock, 1.80-NormClock)
translate < 0, 0, 4> } translate < 0, 0, 4> }
} }
} }
@@ -203,13 +210,13 @@ finish { phong 0.25 }
#local TZ = 2.95; #local TZ = 2.95;
#local Kro = 32 + (NormClock * 666); #local Kro = 32 + (NormClock * 666);
union { union {
object { Obj_BasicTexture texture { R_Texture } object { Obj_BasicTexture texture { LeGris }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <TX, 0, -TZ> } translate <TX, 0, -TZ> }
object { Obj_BasicTexture texture { Texture_du_Vase } object { Obj_BasicTexture texture { Texture_du_Vase }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <TX, 0, 0> } translate <TX, 0, 0> }
object { Obj_BasicTexture texture { B_Texture } object { Obj_BasicTexture texture { T_GlowGreen }
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <TX, 0, TZ> } translate <TX, 0, TZ> }
@@ -223,7 +230,7 @@ union {
rotate y * (rand(Rng1)*Kro) rotate y * (rand(Rng1)*Kro)
translate <-TX, 0, -TZ> } translate <-TX, 0, -TZ> }
object { Repere scale 1.5 translate y*0.5 } object { Repere scale 1.5 translate y*0.75 }
} }
} }
@@ -234,8 +241,6 @@ union {
Mieux, on garde la chose mais on en dérive le vase Mieux, on garde la chose mais on en dérive le vase
*/ */
// ------------------------------------
#macro Vase_le_corps_a () #macro Vase_le_corps_a ()
intersection { intersection {
box { <-5, -5, -5>, <5, 0, 5> } box { <-5, -5, -5>, <5, 0, 5> }
@@ -245,10 +250,10 @@ intersection {
scale <1, 1.60, 1> scale <1, 1.60, 1>
} }
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R < 0.75) #if (R < 0.65)
texture { Texture_du_Vase rotate y*(clock*3) } texture { Texture_du_Vase rotate y*(clock*3) }
#else #else
texture { T_WIP_redwave scale 0.15 + 0.333*rand(Rng1) texture { T_WIP_redwave scale 0.15 + 0.07*rand(Rng1)
rotate <75*rand(Rng1), 75*rand(Rng1), 75*rand(Rng1)> rotate <75*rand(Rng1), 75*rand(Rng1), 75*rand(Rng1)>
} }
#end #end
@@ -345,7 +350,7 @@ union {
object { Vase () scale 1.4 translate <-2.9, 0, 3.91> } object { Vase () scale 1.4 translate <-2.9, 0, 3.91> }
object { Chose () scale 2 translate < 2.9, 0, -4.07> } object { Chose () scale 2 translate < 2.9, 0, -4.07> }
object { Vase () translate <-4.5, 0, -4> } object { Vase () translate <-4.5, 0, -4> }
object { Repere translate 0.15*y } object { Repere scale 1.7 translate 0.25*y }
} }
} }
// ======================================================= // =======================================================
@@ -358,9 +363,9 @@ union {
#declare Dx = E * sin(radians(I)); #declare Dx = E * sin(radians(I));
#declare Dz = E * cos(radians(I)); #declare Dz = E * cos(radians(I));
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R > 0.76) #if (R > 0.66)
object { GyroPhare () translate <Dx, 0, Dz> } object { GyroPhare () translate <Dx, 0, Dz> }
#elseif (R > 0.45) #elseif (R > 0.33)
object { HexaPole () translate <Dx, 0, Dz> } object { HexaPole () translate <Dx, 0, Dz> }
#else #else
object { HexoFlash (0.14, 1.85 + (0.444*rand(Rng1)) ) object { HexoFlash (0.14, 1.85 + (0.444*rand(Rng1)) )
@@ -421,13 +426,14 @@ union {
object { ProtoTextures } object { ProtoTextures }
#break #break
#case (3) #case (3)
object { Blob_Boxed scale 3.159 translate < 0, 2, 0> } object { Les_Boules scale 1.727 translate <0, 1, 0> }
object { Blob_Boxed scale 1.414 translate <-3, 3, 0> } object { Blob_Boxed scale 1.414 translate <0, 4, 0> }
// object { Repere translate y*1 } // object { Repere translate y*1 }
#break #break
#case (4) #case (4)
object { Un_Autre_Cube (0.666) rotate x*42 translate <3, 1.8, 0> } object { Un_Autre_Cube (0.7) rotate x*clock translate <3, 1.8, 2> }
object { Un_Autre_Cube (0.888) translate <0, 1.8, 2> } object { HorlogeDouble scale 2.12
rotate y*(214*NormClock) translate <-3, 0, -2> }
#break #break
#end // switch selector #end // switch selector
@@ -439,9 +445,9 @@ plane {
// ======================================================= // =======================================================
#local CamX = -2.9 + (1.8*Cos_010(NormClock)); #local CamX = -2.9 + (1.9*Cos_010(NormClock));
#local CamY = 0.61 + (0.9*exp(NormClock)); #local CamY = 0.61 + (1.1*exp(NormClock));
#local CamZ = -5.777 + (1.3*Cos_01(NormClock)); #local CamZ = -5.777 + (1.3*Cos_010(NormClock));
#local K = 8.6; #local K = 8.6;
#local CamX = CamX * K; #local CamX = CamX * K;
@@ -449,7 +455,6 @@ plane {
#local CamZ = CamZ * K; #local CamZ = CamZ * K;
camera { camera {
// orthographic
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at <0, 1.5, 0> look_at <0, 1.5, 0>

View File

@@ -148,7 +148,7 @@ texture { T_WIP_bluewave scale 0.21 rotate <clock, clock/2, clock/3> }
text { text {
ttf "datas/dotmatrx.ttf" Texte 0.15, 0 ttf "datas/dotmatrx.ttf" Texte 0.15, 0
texture { tPlasticGreen } texture { T_GlowGreen }
} }
scale <1.76, 1.70, 1.76> scale <1.76, 1.70, 1.76>
rotate 90*x rotate 90*x
@@ -159,13 +159,17 @@ translate <-4.3, 0.046, 0>
#local Horloge2 = object #local Horloge2 = object
{ {
object { Horloge scale <1, 0.28, 1> rotate -x*90 object { Horloge scale <1, 0.28, 1> rotate -x*90
translate <0.802, 0.18, 0> } translate <0.912, 0.23, 0> }
} }
#declare HorlogeDouble = object #declare HorlogeDouble = object
{ {
union { union {
box { <-3.10, 0.0, -0.06>, <3.10, 1.68, 0.06> difference {
texture { LeGris } } box { <-3.10, 0.00, -0.16>, <3.10, 1.74, 0.16> }
box { <-3.06, 0.04, -0.04>, <3.06, 1.70, -1.00> }
box { <-3.06, 0.04, 0.04>, <3.06, 1.70, 1.00> }
texture { LeGris }
}
#local EC = 0.18; #local EC = 0.18;
object { Horloge2 rotate y*180 translate z*EC } object { Horloge2 rotate y*180 translate z*EC }
object { Horloge2 translate -z*EC } object { Horloge2 translate -z*EC }
@@ -199,44 +203,57 @@ prism {
#end // macro #end // macro
// ------------------------------------------------------ ## // ------------------------------------------------------ ##
/* nouveau du 31 mars 2026, aux Bourtoulots /* nouveau du 31 mars 2026, aux Bourtoulots
* * XXX need more fine tuning !
*/ */
#macro HexaPole_abatjour (Quux) #macro HexaPole_abatjour (Quux)
union { union {
#local Raj = 0.333; #local Raj = 0.333;
torus { Raj, 0.018 translate -y*Quux } torus { Raj, 0.011 translate -y*Quux }
#for (Foo, 0, 359, 18) #for (Foo, 0, 359, 18)
#local DX = Raj * sin(radians(Foo)); #local DX = Raj * sin(radians(Foo));
#local DZ = Raj * cos(radians(Foo)); #local DZ = Raj * cos(radians(Foo));
cylinder { -y*Quux, y*Quux, 0.013 translate <DX, 0, DZ> } cylinder { -y*Quux, y*Quux, 0.009 translate <DX, 0, DZ> }
#end // for #end // for
torus { Raj, 0.02 translate y*Quux } torus { Raj, 0.02 translate y*Quux }
rotate y*(clock*0.40*(rand(Rng1)-0.59)) rotate y*(clock*1.86*(rand(Rng1)-0.52))
texture { Aluminum }
}
#end // macro
#macro HexaPole_ampoule (V)
sphere {
0, 0.080
texture {
pigment { color rgb <1, 1, 1> }
finish { emission 0.9 diffuse 0.6 }
}
} }
#end // macro #end // macro
#macro HexaPole_mat_lampe (Height) #macro HexaPole_mat_lampe (Height)
union { union {
union { union {
cylinder { 0, y*Height, 0.061 } cylinder { 0, y*Height, 0.061
texture { LeGris }}
#local Val = 0.09+(0.09*rand(Rng1)); #local Val = 0.09+(0.09*rand(Rng1));
object { HexaPole_abatjour (Val) object { HexaPole_abatjour (Val)
translate y*(Height+0.073) } translate y*(Height+0.073) }
texture { LeGris }
} }
#local P = y*(Height+0.097); #local Pos = y*(Height+0.097);
#if (rand(Rng1) < 0.30) #if (rand(Rng1) < 0.36)
#local Val = 0.25 + 0.5*rand(Rng1); #local Val = 0.25 + 0.5*rand(Rng1);
light_source { light_source {
P rgb <0.80, 0.25+(0.5*rand(Rng1)), 0.99> Pos rgb <0.86, 0.29+(0.5*rand(Rng1)), 0.99>
fade_distance 3.80 fade_distance 3.30
fade_power 1.55 fade_power 1.55
looks_like { HexaPole_ampoule (0) }
} }
#else #else
sphere { sphere {
P, 0.080 Pos, 0.080
texture { C_Texture } texture { LeGris }
} }
#end // if #end // if
} }

View File

@@ -11,7 +11,7 @@ global_settings {
#include "stones.inc" #include "stones.inc"
#include "woods.inc" #include "woods.inc"
#declare Rng1 = seed(1515); #declare Rng1 = seed(3615);
#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);
@@ -169,6 +169,14 @@ finish {
reflection { 0.21 metallic } reflection { 0.21 metallic }
} }
} }
/* ------------------------------------------------------------ */
/* new 24 avril 2026 */
#declare T_GlowGreen = texture
{
pigment{ srgb <0.10, 1.20, 0.10>}
finish { ambient 0.91 diffuse 0.6 specular 0 }
}
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/* /*

View File

@@ -47,8 +47,7 @@ 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 rotate <0, clock, NormClock*720> texture { Flashy rotate <0, clock*0.50, 0> }
scale 0.59 }
} }
} }
#declare Cabane_Compteur = object #declare Cabane_Compteur = object
@@ -68,7 +67,7 @@ intersection {
png "datas/hf.png" smooth png "datas/hf.png" smooth
translate <-.5, 0, -.5> translate <-.5, 0, -.5>
#local SC = SzSol * 1.111; #local SC = SzSol * 1.111;
scale <SC, 0.95, SC> scale <SC, 0.999, SC>
texture { texture {
pigment { pigment {
image_map { png "datas/cuivre.png" } image_map { png "datas/cuivre.png" }

View File

@@ -15,7 +15,7 @@ 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; #declare Lat_Y = 1.21 + 0.19*NormClock;
camera { camera {
location Loc_cam location Loc_cam

View File

@@ -20,7 +20,7 @@ object { Le_Decor }
camera { camera {
location Loc_cam location Loc_cam
#local H = 1.16 + (NormClock*0.42); #local H = 1.16 + (NormClock*0.44);
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>

View File

@@ -17,7 +17,7 @@ object { Le_Decor }
// object { Repere translate <10, 1, 10> } // object { Repere translate <10, 1, 10> }
#declare LOC = <-3.4 - NormClock, 4.57, 31.9-NormClock>; #declare LOC = <-3.7, 5.84+NormClock, 31.9-NormClock>;
#declare LAT = <P_hexawood.x, 0.95+(NormClock*0.11), P_hexawood.z>; #declare LAT = <P_hexawood.x, 0.95+(NormClock*0.11), P_hexawood.z>;

View File

@@ -72,7 +72,7 @@ object { HexaCone ()
#declare PosY = 0; #declare PosY = 0;
#declare PosZ = RO * cos(CK+3.23); #declare PosZ = RO * cos(CK+3.23);
object { Trident_A () object { Trident_A ()
rotate <clock*0.3, 0, clock*0.7> rotate <clock*0.3, 0, clock*0.9>
rotate y*CK*99.22 translate <PosX, PosY, PosZ> rotate y*CK*99.22 translate <PosX, PosY, PosZ>
} }
@@ -88,7 +88,7 @@ light_source { <23, 10, 15>, rgb <0.77, 0.79, 0.80> }
// ------------------------------------------------------------- // -------------------------------------------------------------
camera { camera {
location <9+NormClock, 1.60+(17*NormClock), 11.59> location <9+NormClock, -2.60+(24*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)

View File

@@ -16,7 +16,7 @@ object { Le_Decor }
// ======================================================= // =======================================================
#declare CK = 1.97 + (2.72 * Cos_01(NormClock)); #declare CK = 1.97 + (2.42 * 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

@@ -26,7 +26,7 @@ camera {
look_at Loc_Patrouille look_at Loc_Patrouille
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 13.3333333 angle 11.11111
} }
/* =============================================================== */ /* =============================================================== */

View File

@@ -21,7 +21,7 @@ object { Le_Decor }
#declare CamX = Dcam * cos(radians(CK+0.9)); #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 LatY = 2.25 + (1.51 * Cos_010(NormClock)); #declare LatY = 2.20 + (1.21 * Cos_010(NormClock));
camera { camera {
location <CamX, 2.10, CamZ> location <CamX, 2.10, CamZ>

View File

@@ -6,7 +6,7 @@ The page for « Build system and utilities ».
Un argument pour construire la séquence entière ou deux pour démarrer au Un argument pour construire la séquence entière ou deux pour démarrer au
milieu, c'est parfois pratique quand le disjoncteur fait un *beu-beu* en milieu, c'est parfois pratique quand le disjoncteur fait un *beu-beu* en
plein milieu. Exemples : plein milieu du batch. Exemples :
``` ```
$ tools/mkloop.sh survol $ tools/mkloop.sh survol
@@ -48,7 +48,6 @@ intertitres.
``` ```
$ tools/plot-timing.sh essai && d timing.png $ tools/plot-timing.sh essai && d timing.png
``` ```
Cette commande utilise le fichier `log/mp4.timing`, lequel est généré Cette commande utilise le fichier `log/mp4.timing`, lequel est généré
par le script de création de séquence vu plus haut. par le script de création de séquence vu plus haut.

View File

@@ -4,7 +4,7 @@ Img_Width=1152
Img_Height=720 Img_Height=720
# for imagemagick # for imagemagick
TEXTCOL="Yellow" TEXTCOL="Yellow3"
STROKOL="Green" STROKOL="Green"
NBFRAMES=480 NBFRAMES=480

View File

@@ -36,7 +36,7 @@ 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=78 local NBRE=51
convert "WS/negatif.png" \ convert "WS/negatif.png" \
-gravity center \ -gravity center \

View File

@@ -32,11 +32,13 @@ object { Le_Decor }
#declare CamY = 47 - (9.70 * Cos_01(NormClock)); #declare CamY = 47 - (9.70 * Cos_01(NormClock));
#declare CamZ = 10.70 + (2*NormClock); #declare CamZ = 10.70 + (2*NormClock);
#declare LatY = -4 + ( 2.12 * NormClock); #declare LatY = -4 + ( 2.82 * NormClock);
camera { camera {
location <-3.60, CamY, CamZ> spherical // XXX !
look_at <0.6, LatY, 0> normal { bumps 0.85 scale 0.50 } // XXX !
location <-4.60, CamY, CamZ>
look_at <0, 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

View File

@@ -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 scale 3 } #else texture { Flashy scale 3 }
#end #end
} }
#undef L #undef L

View File

@@ -140,13 +140,14 @@ union {
/* nouveau du 7 octobre 2025 */ /* nouveau du 7 octobre 2025 */
#macro Une_Boule () #macro Une_Boule ()
sphere { sphere {
0, 0.18 + (rand(Rng1) * 0.06) 0, 0.15 + (rand(Rng1) * 0.05)
scale <1, 1+(rand(Rng1) * 0.15), 1>
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R < 0.333) texture { C_Texture } #if (R < 0.333) texture { C_Texture }
#elseif (R < 0.666) texture { M_Texture } #elseif (R < 0.666) texture { M_Texture }
#else texture { Y_Texture } #else texture { Y_Texture }
#end #end
finish { phong 0.7 specular 0.3 } finish { phong 0.7 specular 0.5 }
} }
#end // macro #end // macro
@@ -157,6 +158,7 @@ sphere {
{ {
union { union {
#for (A, 0, 64, 1) #for (A, 0, 64, 1)
// please explain this formula !
#local CK = (NormClock*55.00) + (A*0.28); #local CK = (NormClock*55.00) + (A*0.28);
object { Une_Boule () object { Une_Boule ()
#local TX = 3.2 * sin(CK); #local TX = 3.2 * sin(CK);
@@ -164,7 +166,7 @@ union {
#local TZ = 3.0 * cos(1-CK); #local TZ = 3.0 * cos(1-CK);
translate <TX, TY, TZ> translate <TX, TY, TZ>
} }
object { Repere scale 2 } // object { Repere scale 2 }
#end // for #end // for
} }
} }