Compare commits

..

12 Commits

Author SHA1 Message Date
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
Tonton Th
43f58d9ce9 Easter Egg commit (big!) 2026-04-05 00:27:54 +02:00
38 changed files with 314 additions and 223 deletions

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

@@ -15,10 +15,10 @@ object { Le_Decor }
// ======================================================= // =======================================================
#declare LocX = -0.5 + 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 LocCam = <LocX, LocY, LocZ>;
#declare LatCam = <0, 0.92+NormClock, 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) }

View File

@@ -5,6 +5,15 @@
* file created on Sat Jan 31 07:07:28 AM UTC 2026 * file created on Sat Jan 31 07:07:28 AM UTC 2026
*/ */
// ===========================================================
// new: Mon Mar 30 05:39:38 PM UTC 2026
#macro Jalon_0 (Rad, Hei, Ttu)
merge {
cylinder { 0, Hei*y, Rad }
sphere { 0, Rad*2.75 scale <1, 0.333, 1> translate Hei*y }
texture { Ttu }
}
#end
// =========================================================== // ===========================================================
#declare SzC = 0.3; #declare SzC = 0.3;
#macro Base_Col_A () #macro Base_Col_A ()

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 () }
@@ -49,7 +49,7 @@ object { Le_Decor }
// ======================================================= // =======================================================
#local CamX = -27.4 + (2.29*Cos_01(NormClock)); #local CamX = -27.4 + (2.29*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.02*NormClock);
camera { camera {

View File

@@ -13,26 +13,26 @@
#include "all.inc" #include "all.inc"
// --------------------------------------------------------- // ---------------------------------------------------------
object { Repere scale 20 translate y*20 } object { Repere scale 10 translate y*20 }
// --------------------------------------------------------- // ---------------------------------------------------------
// dessiner une grille // dessiner une grille
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
pigment { color Black } pigment { color Black }
} }
// --------------------------------------------------------- // ---------------------------------------------------------
object { Le_Decor } object { Le_Decor }
camera { camera {
location <46, 149+(117*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 50 angle 35
} }

View File

@@ -23,10 +23,10 @@ object { Le_Decor }
#declare CamY = 3.08 + abs(sin(CK/4.00)); #declare CamY = 3.08 + abs(sin(CK/4.00));
#declare CamZ = R_circ * sin(CK); #declare CamZ = R_circ * sin(CK);
#declare AV = 0.070; #declare AV = 0.065;
#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.95 * sin(CK + AV); #declare LatZ = R_circ * 0.97 * sin(CK + AV);
camera { camera {
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>

View File

@@ -7,13 +7,30 @@
/* ======================================================= */ /* ======================================================= */
// #debug "+++++++++++++++++++++ debut contexte\n" // #debug "+++++++++++++++++++++ debut contexte\n"
/* ======================================================= */ /* ======================================================= */
#declare Les_Jalons = object
{
union {
#local EC = SzSol + 175;
/* les coins */
object { Jalon_0 (0.5, 8, LeGris) translate <-EC, 0, -EC> }
object { Jalon_0 (0.5, 8, LeGris) translate < EC, 0, -EC> }
object { Jalon_0 (0.5, 8, LeGris) translate <-EC, 0, EC> }
object { Jalon_0 (0.5, 8, LeGris) translate < EC, 0, EC> }
/* les milieux des cotés */
object { Jalon_0 (0.5, 6, LeGris) translate < 0, 0, -EC> }
object { Jalon_0 (0.6, 6, LeGris) translate < 0, 0, EC> }
object { Jalon_0 (0.5, 6, LeGris) translate < EC, 0, 0> }
object { Jalon_0 (0.6, 6, LeGris) translate <-EC, 0, 0> }
}
}
/* ======================================================= */
#macro Trois_Portiques (Dist) #macro Trois_Portiques (Dist)
union { union {
object { Portique_A () } 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*11 translate z*22 } object { Portique_A () rotate y*9 translate z*22 }
// XXX scale 1.85 box { <-4.1, 0, -2>, <4.1, 0.03, 24> texture { LeGris } }
} }
#end // macro trois portiques #end // macro trois portiques
@@ -43,7 +60,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.17) #if (rand(Rng1) > 0.19)
#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> }
@@ -109,7 +126,7 @@ union {
#macro Les_GyroPhares () #macro Les_GyroPhares ()
union { union {
#local E = SzSol * 0.496; #local E = SzSol * 0.497;
#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);
@@ -128,7 +145,7 @@ union {
{ {
union { union {
#for (Ang, 0, 359, 6) #for (Ang, 0, 359, 6)
#local De = 3.6 + (0.5*rand(Rng1)); #local De = 2.6 + (0.5*rand(Rng1));
#if (rand(Rng1) < 0.50) #if (rand(Rng1) < 0.50)
#local E = R_circular + De; #local E = R_circular + De;
#else #else
@@ -154,7 +171,7 @@ union {
#local Zp = R_circular * sin(Ra); #local Zp = R_circular * sin(Ra);
cylinder { 0, 0.33*y, 0.10 cylinder { 0, 0.33*y, 0.10
translate <Xp, 0, Zp> translate <Xp, 0, Zp>
texture { T_Planete_A scale 3 } texture { T_Planete_B scale 3 }
} }
#end #end
} }
@@ -167,7 +184,7 @@ union {
#declare R2hxba = Rhxba * 0.48; #declare R2hxba = Rhxba * 0.48;
merge { merge {
sphere { 0, Rhxba } sphere { 0, Rhxba }
#local E = Rhxba * 1.260; #local E = Rhxba * 1.240;
sphere { 0, R2hxba translate <-E, 0, 0> } sphere { 0, R2hxba translate <-E, 0, 0> }
sphere { 0, R2hxba translate < E, 0, 0> } sphere { 0, R2hxba translate < E, 0, 0> }
sphere { 0, R2hxba translate < 0, -E, 0> } sphere { 0, R2hxba translate < 0, -E, 0> }
@@ -184,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>
} }
} }
} }
@@ -262,7 +279,7 @@ union {
light_source { light_source {
0 0
color White color White
fade_distance SzSol * 0.40 fade_distance SzSol * 0.47
fade_power 1.25 fade_power 1.25
} }
} }
@@ -290,47 +307,17 @@ union {
object { Chose () translate < 20, 0, -36> } 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 + (8*rand(Rng1))); #local CK = radians(foo + (11*rand(Rng1)));
#local DX = 71 * sin(CK); #local DX = 83 * sin(CK);
#local DZ = 67 * 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
} }
} }
/* ======================================================= */ /* ======================================================= */
/*
* cette partie demande des explications
*/
#declare Les_Lumieres = object
{
union {
#if (1)
light_source {
<2.3, 5.50, 2.86> color Gray70
spotlight
radius 19 falloff 10 tightness 8
point_at <0, 0.95, 0.22222222>
}
#end
#if (1)
light_source {
<-8, 5.60, 18>
#if ( (clock > 290) & (clock<344) )
#local Couleur = rgb <0.20, 0.20, 0.90>;
#else
#local Couleur = rgb <0.80, 0.80, 0.70>;
#end
color Couleur
spotlight
radius 12 falloff 10 tightness 5
point_at <0, 0.95, -0.22>
}
#end
}
}
/* ======================================================= */ /* ======================================================= */
/* /*
* why a skysphere can't be an object ? * why a skysphere can't be an object ?
@@ -339,14 +326,14 @@ sky_sphere {
pigment { pigment {
gradient y gradient y
color_map { color_map {
[ 0.2 color Gray20 ] [ 0.2 color Gray20 ]
[ 0.4 color rgb <.5, .45, .43> ] [ 0.4 color srgb <.5, .45, .43> ]
[ 0.7 color Gray50 ] [ 0.7 color Gray50 ]
[ 0.9 color rgb <.5, .5, .47> ] [ 0.9 color srgb <.5, .5, .47> ]
[ 1.0 color Gray20 ] [ 1.0 color Gray20 ]
} }
turbulence 2.222 + 0.84 * Cos_010(NormClock) turbulence 2.222 + 0.84 * Cos_010(NormClock)
scale 1.600 scale 1.666
// translate -1 // translate -1
} }
#local Kem = 0.09; #local Kem = 0.09;
@@ -363,6 +350,8 @@ union {
object { Underground } object { Underground }
object { Les_Bordures } object { Les_Bordures }
object { Les_Jalons }
#include "groundbase.inc" #include "groundbase.inc"
object { La_GroundBase } object { La_GroundBase }
@@ -379,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

@@ -11,7 +11,7 @@ object {
#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);
#declare Loc_Patrouille = <Xp+10, 70+(11*NormClock), Zp>; #declare Loc_Patrouille = <Xp, 70+(11*NormClock), Zp+23>;
object { Patrouille } object { Patrouille }
rotate y*degrees(CK) rotate y*degrees(CK)
@@ -23,7 +23,7 @@ object {
// 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.05; // radians #local CK = (NormClock+(foo*0.0200)) * 3.666; // 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);
@@ -40,7 +40,7 @@ object {
object { Les_Machins rotate -y*clock translate UnderHoles[2] } object { Les_Machins rotate -y*clock translate UnderHoles[2] }
object { Les_Machins rotate y*clock translate UnderHoles[5] } object { Les_Machins rotate y*clock translate UnderHoles[5] }
// object { Les_HexaBalls rotate y*clock translate UnderHoles[2] } // object { Les_HexaBalls rotate y*(clock*2.9) translate UnderHoles[4] }
/// ======================================================= /// =======================================================
/* /*

View File

@@ -56,9 +56,9 @@ object { Le_Decor }
#local CamY = 0.42 + (18.36 * Cos_01(NormClock)); #local CamY = 0.42 + (18.36 * Cos_01(NormClock));
#local CamZ = 122 - (22.9 * Cos_01(NormClock)); #local CamZ = 122 - (22.9 * Cos_01(NormClock));
#local LatX = 3 * NormClock; #local LatX = 6 * NormClock;
#local LatY = (Y_mean / Y_count) - (0.5*NormClock); #local LatY = (Y_mean / Y_count) - (0.5*NormClock);
#local LatZ = 2.22; #local LatZ = 4.2;
// #debug concat("escadrille: Lat Y ", str(LatY, 7, 3),"\n") // #debug concat("escadrille: Lat Y ", str(LatY, 7, 3),"\n")
camera { camera {

View File

@@ -353,19 +353,15 @@ union {
#declare GyroTrucs = object #declare GyroTrucs = object
{ {
union { union {
#for (I, 0, 359, 20) #for (I, 0, 359, 15)
#declare E = 12 + (3.5*rand(Rng1)); #declare E = 14 + (4.2*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));
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R > 0.76) #if (R > 0.76)
object { GyroPhare () translate <Dx, 0, Dz> } object { GyroPhare () translate <Dx, 0, Dz> }
#elseif (R > 0.65) #elseif (R > 0.45)
object { Obj_BasicTexture object { HexaPole () translate <Dx, 0, Dz> }
texture { T_WIP_redwave }
scale 0.75
rotate y * (5*(.5-rand(Rng1))*clock)
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)) )
translate <Dx, 0, Dz> } translate <Dx, 0, Dz> }
@@ -393,9 +389,10 @@ union {
#debug " !!! ACTION !!!\n" #debug " !!! ACTION !!!\n"
/* FLASHING LIGHT !!! */
#local Rv = 0.5 + (0.1*sin(clock*0.113)); #local Rv = 0.5 + (0.1*sin(clock*0.113));
#local Gv = 0.21; #local Gv = 0.21;
#local Bv = 0.25 * abs(sin(clock*0.014)); #local Bv = 0.25 * abs(sin(clock*0.019));
light_source { light_source {
<-32, 40, -7> <-32, 40, -7>
colour <Rv, Gv, Bv> colour <Rv, Gv, Bv>
@@ -405,10 +402,10 @@ union {
// ------------------------------------------------------ ## // ------------------------------------------------------ ##
#declare Selector = int(clock/90); #declare Selector = int(clock/96);
#debug concat("Selector = ", str(Selector, 6, 0), "\n") #debug concat("Selector = ", str(Selector, 6, 0), "\n")
#declare AngleCam = 27 - 3*Cos_01(NormClock); #declare AngleCam = 29 - 3*Cos_01(NormClock);
#switch (Selector) #switch (Selector)
#case (0) #case (0)
@@ -424,12 +421,14 @@ union {
object { ProtoTextures } object { ProtoTextures }
#break #break
#case (3) #case (3)
object { Blob_Boxed scale 3 translate y*2 } object { Blob_Boxed scale 3.159 translate < 0, 2, 0> }
object { Blob_Boxed scale 1.414 translate <-3, 3, 0> }
// object { Repere translate y*1 } // object { Repere translate y*1 }
#break #break
#case (4) #case (4)
object { Un_Autre_Cube (0.666) rotate y*42 translate <3, 1.8, 0> } object { Un_Autre_Cube (0.7) rotate x*clock translate <3, 1.8, 1> }
object { Un_Autre_Cube (0.888) translate <0, 1.8, 2> } object { HorlogeDouble scale 2.8
rotate y*(214*NormClock) translate <-3, 0, -2> }
#break #break
#end // switch selector #end // switch selector
@@ -441,9 +440,9 @@ plane {
// ======================================================= // =======================================================
#local CamX = -2.7 + (1.8*Cos_010(NormClock)); #local CamX = -2.9 + (1.8*Cos_010(NormClock));
#local CamY = 0.61 + (0.9*exp(NormClock)); #local CamY = 0.61 + (0.9*exp(NormClock));
#local CamZ = -5.777 + (1.2*Cos_01(NormClock)); #local CamZ = -5.777 + (1.3*Cos_01(NormClock));
#local K = 8.6; #local K = 8.6;
#local CamX = CamX * K; #local CamX = CamX * K;
@@ -451,7 +450,7 @@ plane {
#local CamZ = CamZ * K; #local CamZ = CamZ * K;
camera { camera {
orthographic // orthographic
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at <0, 1.5, 0> look_at <0, 1.5, 0>

View File

@@ -12,17 +12,17 @@ union {
#local R2 = R * 2.33; #local R2 = R * 2.33;
#local LC = 1.15; #local LC = 1.15;
merge { merge {
cylinder { 0, <1, 0, 0>, R } cylinder { -0.1*x, <1, 0, 0>, R }
cone { <1, 0, 0>, R2, <LC, 0, 0>, 0 } cone { <1, 0, 0>, R2, <LC, 0, 0>, 0 }
texture { R_Texture } texture { R_Texture }
} }
merge { merge {
cylinder { 0, <0, 1, 0>, R } cylinder { -0.1*y, <0, 1, 0>, R }
cone { <0, 1, 0>, R2, <0, LC, 0>, 0 } cone { <0, 1, 0>, R2, <0, LC, 0>, 0 }
texture { G_Texture } texture { G_Texture }
} }
merge { merge {
cylinder { 0, <0, 0, 1>, R } cylinder { -0.1*z, <0, 0, 1>, R }
cone { <0, 0, 1>, R2, <0, 0, LC>, 0 } cone { <0, 0, 1>, R2, <0, 0, LC>, 0 }
texture { B_Texture } texture { B_Texture }
} }
@@ -143,30 +143,33 @@ texture { T_WIP_bluewave scale 0.21 rotate <clock, clock/2, clock/3> }
#declare Horloge = object #declare Horloge = object
{ {
#local Texte = str(NormClock, 6, 3); #local Texte = str(NormClock, 5, 2);
#debug concat("Texte horloge ", Texte, "\n\n") #debug concat("Texte horloge ", Texte, "\n\n")
text { text {
// ttf "datas/DSEG7Classic-Regular.ttf" Texte 0.1, 0 ttf "datas/dotmatrx.ttf" Texte 0.15, 0
ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0 texture { T_GlowGreen }
texture { tPlasticBlue }
} }
scale 1.96 scale <1.76, 1.70, 1.76>
rotate 90*x rotate 90*x
translate <-4.5, 0.046, 0> translate <-4.3, 0.046, 0>
} }
// ---------------------------------------------------------- // ----------------------------------------------------------
// nouveau du 3 janvier 2026 // nouveau du 3 janvier 2026
#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 }
@@ -198,12 +201,68 @@ prism {
*/ */
} }
#end // macro #end // macro
// ------------------------------------------------------ ##
/* nouveau du 31 mars 2026, aux Bourtoulots
*
*/
#macro HexaPole_abatjour (Quux)
union {
#local Raj = 0.333;
torus { Raj, 0.013 translate -y*Quux }
#for (Foo, 0, 359, 18)
#local DX = Raj * sin(radians(Foo));
#local DZ = Raj * cos(radians(Foo));
cylinder { -y*Quux, y*Quux, 0.009 translate <DX, 0, DZ> }
#end // for
torus { Raj, 0.02 translate y*Quux }
rotate y*(clock*0.90*(rand(Rng1)-0.59))
}
#end // macro
#macro HexaPole_ampoule (V)
sphere {
0, 0.080
texture {
pigment { color rgb <1, 1, 1> }
finish { emission 0.8 diffuse 0.6 }
}
}
#end // macro
#macro HexaPole_mat_lampe (Height)
union {
union {
cylinder { 0, y*Height, 0.061 }
#local Val = 0.09+(0.09*rand(Rng1));
object { HexaPole_abatjour (Val)
translate y*(Height+0.073) }
texture { LeGris }
}
#local Pos = y*(Height+0.097);
#if (rand(Rng1) < 0.333)
#local Val = 0.25 + 0.5*rand(Rng1);
light_source {
Pos rgb <0.86, 0.25+(0.5*rand(Rng1)), 0.99>
fade_distance 3.30
fade_power 1.55
looks_like { HexaPole_ampoule (0) }
}
#else
sphere {
Pos, 0.080
texture { Y_Texture }
}
#end // if
}
#end // macro
// ------------------------------------------------------ ## // ------------------------------------------------------ ##
#macro HexaPole_tubes () #macro HexaPole_tubes ()
#local R = 0.033; #local R = 0.033;
#local E = 0.49; #local E = 0.51;
#local H = H_cone*0.666; #local H = H_cone*0.50;
union { union {
#for (A, 0, 359, 60) #for (A, 0, 359, 60)
#local Xp = E * cos(radians(A)); #local Xp = E * cos(radians(A));
@@ -223,7 +282,6 @@ union {
} }
#end #end
} }
#undef E #undef E
#undef H #undef H
#undef R #undef R
@@ -238,7 +296,8 @@ union {
union { union {
object { Base_hexapole () scale <0.24, 0.2, 0.24> } object { Base_hexapole () scale <0.24, 0.2, 0.24> }
object { HexaPole_tubes () translate y*0.15 } object { HexaPole_tubes () translate y*0.15 }
rotate y*(53*rand(Rng1)) HexaPole_mat_lampe (2.42 + rand(Rng1))
rotate y*(73*rand(Rng1))
} }
#end // macro #end // macro

View File

@@ -1,7 +1,7 @@
global_settings { global_settings {
assumed_gamma 1.0 assumed_gamma 1.0
ambient_light rgb <0.48, 0.49, 0.48> ambient_light rgb <0.28, 0.30, 0.30>
max_trace_level 15 max_trace_level 15
} }
@@ -11,7 +11,7 @@ global_settings {
#include "stones.inc" #include "stones.inc"
#include "woods.inc" #include "woods.inc"
#declare Rng1 = seed(314); #declare Rng1 = seed(8.6);
#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);
@@ -37,11 +37,11 @@ global_settings {
#declare H_gylampe = 0.25; #declare H_gylampe = 0.25;
#declare H_QuadriLight = 42; #declare H_QuadriLight = 42;
#declare E_QuadriLight = SzSol * 1.35; #declare E_QuadriLight = SzSol * 1.79;
#declare R_circular = (SzSol * 1.60); #declare R_circular = (SzSol * 1.60);
#declare R_hole = 3.1; // holes in the background #declare R_hole = 3.14159; // holes in the background
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/* /*
@@ -52,7 +52,7 @@ global_settings {
{ {
/* moi j'dis qu'il est temps de définir un "gris de base" */ /* moi j'dis qu'il est temps de définir un "gris de base" */
pigment { color Gray70 } pigment { color Gray70 }
finish { phong 0.33 ambient 0.33 } finish { phong 0.22 ambient 0.22 diffuse 0.22 }
} }
#declare T_WIP_color = texture #declare T_WIP_color = texture
@@ -64,20 +64,20 @@ finish { phong 0.23 ambient 0.30 }
#declare T_WIP_alert = texture #declare T_WIP_alert = texture
{ {
pigment { color Red } pigment { color srgb <0.90, 0.01, 0.02> }
finish { ambient 1 specular 0.80 } finish { ambient 1 specular 0.80 }
} }
#declare T_Planete_A = texture #declare T_Planete_A = texture
{ {
pigment { color rgb <0.20, 0.30, 0.10> } pigment { srgb <0.20, 0.30, 0.10> }
normal { dents 0.28 scale 0.5} normal { dents 0.28 scale 0.5}
finish { phong 0.70 reflection 0.05 } finish { phong 0.70 reflection 0.05 }
} }
#declare T_Planete_B = texture #declare T_Planete_B = texture
{ {
pigment { rgb <0.42, 0.50, 0.70> } pigment { srgb <0.42, 0.50, 0.70> }
normal { dents 0.18 scale 0.5} normal { dents 0.38 scale 0.5}
finish { metallic 0.50 reflection 0.33 } finish { metallic 0.50 reflection 0.33 }
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@@ -162,31 +162,39 @@ finish {
/* new: 28 octobre 2025 */ /* new: 28 octobre 2025 */
#declare Ground_Texture = texture #declare Ground_Texture = texture
{ {
pigment { rgb <0.31, 0.33, 0.24> } pigment { srgb <0.31, 0.33, 0.24> }
normal { dents 0.22 scale 1.666} normal { dents 0.24 scale 1.666}
finish { finish {
ambient 0 specular 0.3 metallic roughness 0.33 ambient 0 specular 0.3 metallic roughness 0.33
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 }
}
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/* /*
* Textures avec les six teintes "de base" * Textures avec les six teintes "de base"
*/ */
#declare R_Texture = texture { #declare R_Texture = texture {
pigment { rgb <1.0, 0.0, 0.0> } finish { ambient 0.33 } } pigment { srgb <1.0, 0.0, 0.0> } finish { ambient 0.33 } }
#declare G_Texture = texture { #declare G_Texture = texture {
pigment { rgb <0.0, 1.0, 0.0> } finish { ambient 0.33 } } pigment { srgb <0.0, 1.0, 0.0> } finish { ambient 0.33 } }
#declare B_Texture = texture { #declare B_Texture = texture {
pigment { rgb <0.0, 0.0, 1.0> } finish { ambient 0.33 } } pigment { srgb <0.0, 0.0, 1.0> } finish { ambient 0.33 } }
#declare Y_Texture = texture { #declare Y_Texture = texture {
pigment { rgb <0.8, 0.8, 0.0> } finish { ambient 0.33 } } pigment { srgb <0.8, 0.8, 0.0> } finish { ambient 0.33 } }
#declare M_Texture = texture { #declare M_Texture = texture {
pigment { rgb <0.8, 0.0, 0.8> } finish { ambient 0.33 } } pigment { srgb <0.8, 0.0, 0.8> } finish { ambient 0.33 } }
#declare C_Texture = texture { #declare C_Texture = texture {
pigment { rgb <0.0, 0.8, 0.8> } finish { ambient 0.33 } } pigment { srgb <0.0, 0.8, 0.8> } finish { ambient 0.33 } }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/* nouvelle texture du début du jour de l'hiver 2025 */ /* nouvelle texture du début du jour de l'hiver 2025 */
@@ -248,7 +256,7 @@ scale <3, 4, 3>
// le 10 fevrier 2026 ----------------- // le 10 fevrier 2026 -----------------
#declare T_WIP_dents = texture #declare T_WIP_dents = texture
{ {
pigment { color <0.36, 0.6, 0.79> } pigment { srgb <0.36, 0.6, 0.79> }
normal { dents 2.94 scale 0.15 } normal { dents 2.94 scale 0.15 }
rotate <12, 34, 56> rotate <12, 34, 56>
finish { specular 0.40 ambient 0.59 } finish { specular 0.40 ambient 0.59 }
@@ -258,8 +266,8 @@ finish { specular 0.40 ambient 0.59 }
#declare GoldDark = texture #declare GoldDark = texture
{ {
pigment{ rgb <0.81, 0.71, 0.23> } pigment{ srgb <0.81, 0.71, 0.23> }
finish{ diffuse 0.5 ambient 0 specular 1 metallic roughness 0.01 finish{ diffuse 0.5 ambient 0 specular 1 metallic roughness 0.02
reflection{0.6 metallic} reflection{0.6 metallic}
} }
} // This is a metal. } // This is a metal.

View File

@@ -16,7 +16,7 @@
difference { difference {
#local Hc = 0.90; #local Hc = 0.90;
box { <-0.90, 0, 0>, <0.90, Hc, 0.80> } box { <-0.90, 0, 0>, <0.90, Hc, 0.80> }
box { <-0.89, 0.01, -1> <0.89, Hc-0.01, 0.79> } box { <-0.87, 0.01, -1> <0.87, Hc-0.02, 0.77> }
#local Hc = Hc * 0.75; #local Hc = Hc * 0.75;
cylinder { <-1, Hc, -0.29>, <1, Hc, 0.29>, 0.09 } cylinder { <-1, Hc, -0.29>, <1, Hc, 0.29>, 0.09 }
#undef Hc #undef Hc
@@ -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 <clock, clock, clock> 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" }
@@ -95,10 +94,10 @@ union {
#local Dz = 1.0; #local Dz = 1.0;
box { <-Dx, 0, -Dz>, <Dx, H_base, Dz> } box { <-Dx, 0, -Dz>, <Dx, H_base, Dz> }
#local Ha = y*(H_base*3); #local Ha = y*(H_base*3);
cylinder { 0, Ha, 0.08 translate < Dx, 0, -Dz> }
cylinder { 0, Ha, 0.08 translate <-Dx, 0, -Dz> }
#local Hb = Ha * 1.17; #local Hb = Ha * 1.17;
cylinder { 0, Ha, 0.08 translate < Dx, 0, -Dz> }
cone { Ha, 0.08, Hb, 0.05 translate < Dx, 0, -Dz> } cone { Ha, 0.08, Hb, 0.05 translate < Dx, 0, -Dz> }
cylinder { 0, Ha, 0.08 translate <-Dx, 0, -Dz> }
cone { Ha, 0.08, Hb, 0.05 translate <-Dx, 0, -Dz> } cone { Ha, 0.08, Hb, 0.05 translate <-Dx, 0, -Dz> }
#undef Ha #undef Ha
#undef Hb #undef Hb

View File

@@ -109,7 +109,7 @@ union {
light_source { 0, light_source { 0,
rgb <rand(Rng2), rand(Rng2), rand(Rng2)> rgb <rand(Rng2), rand(Rng2), rand(Rng2)>
fade_distance 0.96 fade_distance 0.96
fade_power 1.95 fade_power 1.55
} }
} }
rotate -z*clock*8 rotate -z*clock*8
@@ -151,7 +151,7 @@ difference {
/* cette sphere devrait devenir /* cette sphere devrait devenir
un vrai cockpit ? */ un vrai cockpit ? */
object { Forme_Cockpit object { Forme_Cockpit
translate y*R_Tube*0.97} translate y*R_Tube*0.975}
} }
cylinder { z*4, -z*4, R_int } cylinder { z*4, -z*4, R_int }
} }
@@ -163,17 +163,18 @@ texture { Soft_Silver scale 6.0 }
#macro Benz_Antenne () #macro Benz_Antenne ()
union { union {
#local RBA = 0.020; #local RBA = 0.020;
sphere { 0, RBA scale <1, 1, 10> } sphere { 0, RBA scale <1, 1, 14> }
union { union {
#local RBA2 = RBA*0.149; #local RBA2 = RBA*0.149;
#local E = 0.018; #local E = 0.016;
cylinder { E*z, <0, 0.20, E>, RBA2 } cylinder { E*z, <0, 0.20, E>, RBA2 }
cylinder { -E*z, <0, 0.20, E>, RBA2 } cylinder { E*z, <0, 0.20, 0>, RBA2 }
scale <1, 1, 5.555> cylinder { -E*z, <0, 0.20, -E>, RBA2 }
scale <1, 1.5, 5.555>
} }
#if ( mod(clock, 10+3*rand(Rng1)) < (10*rand(Rng1)) ) #if ( mod(clock, 10+3*rand(Rng1)) < (10*rand(Rng1)) )
texture { tPlasticPrune } texture { tPlasticBlue }
#else texture { tPlasticGreen } #else texture { tPlasticGreen }
#end #end
} }

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

@@ -50,7 +50,7 @@ union {
#local yR = (rand(Rng2)-0.5000) * kR; #local yR = (rand(Rng2)-0.5000) * kR;
#local zR = (rand(Rng2)-0.5000) * kR; #local zR = (rand(Rng2)-0.5000) * kR;
#local Value = sin( (NormClock * 26.536) + #local Value = sin( (NormClock * 26.536) +
(3.14*rand(Rng1)) ); (16.64*rand(Rng1)) );
#if (Value < 0) #if (Value < 0)
#local Couleur = rgb <abs(Value), 0, 0>; #local Couleur = rgb <abs(Value), 0, 0>;
#else #else
@@ -133,7 +133,7 @@ texture { GoldDark scale 6.50 }
{ {
difference { difference {
merge { merge {
sphere { 0, 0.0141 scale <1, 1, 4.70> sphere { 0, 0.0175 scale <1, 1, 4.70>
translate <0, 0.26, -0.17> } translate <0, 0.26, -0.17> }
cone { <0, -0.1, 0>, 0.114, <0, 0.26, -0.17>, 0.0096 cone { <0, -0.1, 0>, 0.114, <0, 0.26, -0.17>, 0.0096
scale <0.15, 1, 1> } scale <0.15, 1, 1> }
@@ -154,7 +154,7 @@ union {
// --------------------------------------------------------- // ---------------------------------------------------------
#declare DTa = 0.278; #declare DTa = 0.278;
#declare DTb = 0.030; #declare DTb = 0.032;
// XXX #declare HexaCone_head = object // XXX #declare HexaCone_head = object
// XXX { // XXX {

View File

@@ -16,11 +16,11 @@ object { Le_Decor }
// object { Repere scale 2 } // object { Repere scale 2 }
#declare Loc_cam = <2, 2.7-NormClock, 1> + (Pos_RedB_1 * 1.308); #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.39); #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>

14
hexaflat.inc Normal file
View File

@@ -0,0 +1,14 @@
/*********************************************************/
/* _ __ _ _ */
/* | |__ ___ __ __ __ _ / _| | | __ _ | |_ */
/* | '_ \ / _ \ \ \/ / / _` | | |_ | | / _` | | __| */
/* | | | | | __/ > < | (_| | | _| | | | (_| | | |_ */
/* |_| |_| \___| /_/\_\ \__,_| |_| |_| \__,_| \__| */
/* */
/* new of the March 28, 2026 */
/*********************************************************/
/* ======================================================= */
/* ======================================================= */

8
hexaflat.pov Normal file
View File

@@ -0,0 +1,8 @@
/*********************************************************/
/* _ __ _ _ */
/* | |__ ___ __ __ __ _ / _| | | __ _ | |_ */
/* | '_ \ / _ \ \ \/ / / _` | | |_ | | / _` | | __| */
/* | | | | | __/ > < | (_| | | _| | | | (_| | | |_ */
/* |_| |_| \___| /_/\_\ \__,_| |_| |_| \__,_| \__| */
/* */
/*********************************************************/

View File

@@ -41,7 +41,7 @@ union {
// les ailettes intérieures // les ailettes intérieures
#for (foo, 0, 5) #for (foo, 0, 5)
cylinder { 0, x*HSCR, R*0.15 rotate y*foo*60 } cylinder { 0, x*HSCR, R*0.25 rotate y*foo*60 }
#end #end
// traitement final // traitement final
@@ -49,8 +49,8 @@ union {
rotate z*90 rotate z*90
#local R = rand(Rng1); #local R = rand(Rng1);
#if ( R < 0.17 ) texture { Y_Texture } #if ( R < 0.17 ) texture { T_Gold_3C }
#elseif ( R < 0.66 ) texture { T_Gold_1A } #elseif ( R < 0.56 ) texture { T_Gold_1A }
#else texture { Aluminum } #else texture { Aluminum }
#end #end
} }
@@ -72,10 +72,6 @@ union {
#end #end
} }
#end // macro #end // macro
/* ------------------------------------------------------------ */
/* nouveau XXX janvier 2026 */
// UNE ANTENNE ?
/* ============================================================ */ /* ============================================================ */
/* On regroupe les N*six élements */ /* On regroupe les N*six élements */

View File

@@ -14,11 +14,14 @@
object { Le_Decor } object { Le_Decor }
#declare CK = 2.03 - (NormClock * 2.72); #declare CK = 2.03 - (NormClock * 2.77);
#declare DX_cam = 6.1 * cos(CK); #declare DX_cam = 6.11 * cos(CK);
#declare DZ_cam = 5.2 * sin(CK); #declare DY_cam = 2.00 + sin(CK+1.111);
#declare Loc_cam = <DX_cam, 1.10, DZ_cam> + Pos_RedB_3; #declare DZ_cam = 5.19 * sin(CK);
#declare Lat_cam = <0, 1.95, 0> + Pos_RedB_3;
#declare Loc_cam = <DX_cam, DY_cam, DZ_cam> + Pos_RedB_3;
#declare Lat_cam = <0, 1.95, -0.5 + NormClock> + Pos_RedB_3;
camera { camera {
location Loc_cam location Loc_cam
look_at Lat_cam look_at Lat_cam

View File

@@ -31,7 +31,7 @@ union {
#if ( rand(Rng1) < 0.5 ) #if ( rand(Rng1) < 0.5 )
texture { T_Wood32 rotate 37 scale 1.30 } texture { T_Wood32 rotate 37 scale 1.30 }
#else #else
texture { T_Wood23 rotate x*87 scale 1.33 } texture { T_Wood23 rotate x*87 scale 1.13 }
#end #end
// rotate -z*foo // rotate -z*foo
translate <Tx, Hc_ep - 0.22, Tz> translate <Tx, Hc_ep - 0.22, Tz>
@@ -68,7 +68,7 @@ difference {
cylinder { -y, y, 0.07 translate <Tx, 0, Tz> } cylinder { -y, y, 0.07 translate <Tx, 0, Tz> }
#end #end
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R<0.20) #if (R<0.30)
texture { T_Wood17 rotate <10, 20, 30> scale 0.82 } texture { T_Wood17 rotate <10, 20, 30> scale 0.82 }
#else #else
texture { T_Wood15 rotate <17, 28, 39> scale 1.42 } texture { T_Wood15 rotate <17, 28, 39> scale 1.42 }

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

@@ -51,7 +51,7 @@ union {
} }
// ======================================================= // =======================================================
#local RO = 5.39; #local RO = 5.43;
#local CK = NormClock * 13.37; #local CK = NormClock * 13.37;
#declare PosX = RO * sin(CK); #declare PosX = RO * sin(CK);
@@ -60,6 +60,7 @@ union {
object { HexaBenz () object { HexaBenz ()
rotate -y*CK*82.3 translate <PosX, PosY, PosZ> rotate -y*CK*82.3 translate <PosX, PosY, PosZ>
} }
#declare PosX = RO * sin(CK+2.12); #declare PosX = RO * sin(CK+2.12);
#declare PosY = 0; #declare PosY = 0;
#declare PosZ = RO * cos(CK+2.23); #declare PosZ = RO * cos(CK+2.23);
@@ -71,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*1.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>
} }
@@ -87,7 +88,7 @@ light_source { <23, 10, 15>, rgb <0.77, 0.79, 0.80> }
// ------------------------------------------------------------- // -------------------------------------------------------------
camera { camera {
location <9+NormClock, 1.60+(11*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)
@@ -95,6 +96,6 @@ camera {
aperture 0.046 aperture 0.046
blur_samples 30 blur_samples 30
#end #end
angle 61 - (5*NormClock) angle 61 - (7*NormClock)
} }

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

@@ -11,7 +11,7 @@
#include "all.inc" #include "all.inc"
#declare PosX = 3.95; #declare PosX = 3.95;
#declare PosY = 3.80 + (NormClock*0.299); #declare PosY = 3.60 + (NormClock*0.299);
#declare PosZ = (NormClock-0.5) * 45.27; #declare PosZ = (NormClock-0.5) * 45.27;
object { HexaCone () translate <PosX, PosY, PosZ> } object { HexaCone () translate <PosX, PosY, PosZ> }
@@ -23,22 +23,22 @@ object { HexaStar rotate y*90 translate <PosX-1.96, PosY+2.72, PosZ-17.5> }
object { Le_Decor } object { Le_Decor }
#if ( (clock < 181) ) #if ( (clock < 161) )
light_source { light_source {
<3, 0.30, -8> color Blue <3, 0.30, -8> color Blue
spotlight spotlight
radius .044 radius .0666
falloff 2 falloff 2
tightness 3 tightness 3
point_at <PosX, PosY, PosZ> point_at <PosX, PosY, PosZ>
} }
#end #end
#if ( (clock > 230) & (clock < 340) ) #if ( (clock > 230) & (clock < 440) )
light_source { light_source {
<2, 0.30, -2> color Green <2, 0.30, -2> color Green
spotlight spotlight
radius .044 radius .0666
falloff 2 falloff 2
tightness 3 tightness 3
point_at <PosX, PosY-0.10, PosZ> point_at <PosX, PosY-0.10, PosZ>

View File

@@ -18,21 +18,15 @@ object { Le_Decor }
/* =============================================================== */ /* =============================================================== */
#declare CamX = 90 - (4 * NormClock); #declare CamX = 90 - (4 * NormClock);
#declare CamY = 176; #declare CamY = 188;
#declare CamZ = 170 - (33 * NormClock); #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 { camera {
location <CamX, CamY, CamZ> location <CamX, CamY, CamZ>
look_at Loc_Patrouille look_at Loc_Patrouille
right <image_width/image_height, 0, 0> right <image_width/image_height, 0, 0>
angle 13 angle 13.3333333
} }
/* =============================================================== */ /* =============================================================== */

View File

@@ -21,10 +21,10 @@ 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.45 + (1.47 * Cos_010(NormClock)); #declare LatY = 2.25 + (1.51 * Cos_010(NormClock));
camera { camera {
location <CamX, 1.97, CamZ> location <CamX, 2.10, CamZ>
look_at <0.03, LatY, 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

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 = <-33, 92, 289> ; #declare Debut = <-33, 92, 296> ;
#declare Fin = < 36, 83, -2> ; #declare Fin = < 36, 83, -4> ;
#declare Pos = sqrt(NormClock); #declare Pos = Cos_01(NormClock);
#declare PosCam = Interpolate(Debut, Fin, Pos); #declare PosCam = Interpolate(Debut, Fin, Pos);
#declare LatX = 0.614 * sin(NormClock*13.37); #declare LatX = 1.664 * sin(NormClock*13.37);
#declare LatZ = -(150 + (7*NormClock)); #declare LatZ = -(150 + (7*NormClock));
#declare LatCam = PosCam + <LatX, -95, LatZ>; #declare LatCam = PosCam + <LatX, -95, LatZ>;

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

@@ -1,10 +1,10 @@
# size of the video # size of the video
Img_Width=1024 Img_Width=1152
Img_Height=720 Img_Height=720
# for imagemagick # for imagemagick
TEXTCOL="Yellow" TEXTCOL="Yellow"
STROKOL="Green" STROKOL="Green"
NBFRAMES=450 NBFRAMES=480

View File

@@ -43,15 +43,15 @@ do
txt=$(printf "%03d" ${frame} | tr '01' 'ol') txt=$(printf "%03d" ${frame} | tr '01' 'ol')
# echo $frame $img $txt # echo $frame $img $txt
convert ${TMPIMG} \ convert ${TMPIMG} \
-font Courier-Bold \ -font Courier-Regular \
-pointsize 48 \ -pointsize 46 \
-kerning 4 \ -kerning 4 \
-strokewidth 1 \ -strokewidth 1 \
-fill ${STROKOL} -stroke ${TEXTCOL} \ -fill ${STROKOL} -stroke ${TEXTCOL} \
-gravity south-west \ -gravity south-west \
-annotate +25+5 "$txt" \
-gravity south-east \
-annotate +25+5 "$sqn" \ -annotate +25+5 "$sqn" \
-gravity south-east \
-annotate +25+5 "$txt" \
${img} ${img}
fin=$(date +%s) fin=$(date +%s)
echo ; sleep 1 echo ; sleep 1

View File

@@ -19,7 +19,7 @@ fi
count=$( grep $sequence WS/mp4.timing | wc -l ) count=$( grep $sequence WS/mp4.timing | wc -l )
echo "$count samples for $sequence" echo "$count samples for $sequence"
grep $sequence WS/mp4.timing | tail -4000 | awk \ grep $sequence WS/mp4.timing | tail -3000 | awk \
-v nbframes=$NBFRAMES \ -v nbframes=$NBFRAMES \
' \ ' \
BEGIN { \ BEGIN { \
@@ -59,7 +59,7 @@ gnuplot << __EOC__
set term png size $Img_Width,$Img_Height set term png size $Img_Width,$Img_Height
set output "timing.png" set output "timing.png"
set grid set grid
set xrange [:450] set xrange [0:${NBFRAMES}]
set yrange [0:] set yrange [0:]
set title "Séquence '${sequence}'" set title "Séquence '${sequence}'"
set xlabel "numéro de la trame" set xlabel "numéro de la trame"

View File

@@ -29,12 +29,16 @@ object { HexaWood translate P }
object { Le_Decor } object { Le_Decor }
#declare CamY = 47 - (9.50 * Cos_01(NormClock)); #declare CamY = 47 - (9.70 * Cos_01(NormClock));
#declare LatY = -4 + ( 2.12 * NormClock); #declare CamZ = 10.70 + (2*NormClock);
#declare LatY = -4 + ( 2.82 * NormClock);
camera { camera {
location <-3.60, CamY, 10.09> 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

@@ -12,7 +12,7 @@
#declare Trid_cone = object #declare Trid_cone = object
{ {
merge { merge {
cone { 0, R_basecone, y*0.89, 0.0001 } cone { 0, R_basecone, y*0.84, 0.0001 }
sphere { 0, R_basecone } sphere { 0, R_basecone }
} }
} }
@@ -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.06 } object { Trid_cone translate -y*0.08 }
#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 }

View File

@@ -63,7 +63,7 @@ union {
#declare Patrouille = object #declare Patrouille = object
{ {
union { union {
#local EX = 1.9; #local EX = 1.9 + (0.3*cos(NormClock*5));
#local EZ = 2.0 + (0.5*sin(NormClock*2)); #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> }
@@ -81,11 +81,11 @@ merge {
sphere { 0, 0.06 } sphere { 0, 0.06 }
#local R = rand(Rng1); #local R = rand(Rng1);
#if (R < 0.25) #if (R < 0.25)
texture { T_Chrome_3A } texture { R_Texture }
#elseif (R < 0.50) #elseif (R < 0.50)
texture { T_Chrome_2B } texture { Y_Texture }
#elseif (R < 0.75) #elseif (R < 0.75)
texture { T_Chrome_3C } texture { G_Texture }
#else #else
texture { T_Chrome_3D } texture { T_Chrome_3D }
#end // IF #end // IF
@@ -129,7 +129,7 @@ union {
object { Corps_Wagonnet_0 (Longueur) } object { Corps_Wagonnet_0 (Longueur) }
#for (Foo, 0, 5) #for (Foo, 0, 5)
#local DX = 0.35 - (Foo*0.24); #local DX = 0.35 - (Foo*0.24);
#local RP = -30 + (60 * rand(Rng1)); #local RP = -30 + (80 * rand(Rng1));
object { Pointe_Wagonnet_0 () object { Pointe_Wagonnet_0 ()
translate <DX, 0.31, 0> rotate x*RP } translate <DX, 0.31, 0> rotate x*RP }
#end #end
@@ -264,10 +264,10 @@ difference {
#local R = rand(Rng1); #local R = rand(Rng1);
// #debug concat("Random = ", str(R, 6, 4), "\n") // #debug concat("Random = ", str(R, 6, 4), "\n")
#if ( R < 0.23 ) texture { T_Planete_B } #if ( R < 0.27 ) texture { T_Planete_B }
#elseif ( R < 0.56 ) texture { T_Beton_1 } #elseif ( R < 0.56 ) texture { T_Beton_1 }
#else texture { T_Beton_2 } #else texture { T_Planete_A }
#end // if #end // if R
rotate y * (207 * rand(Rng1)) rotate y * (207 * rand(Rng1))
} }