Compare commits
54 Commits
243490996f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c37530d999 | ||
|
|
15849c4aa2 | ||
|
|
3f57aec353 | ||
|
|
90562d2ce6 | ||
|
|
daaa8eeb01 | ||
|
|
35e6c0dfb5 | ||
|
|
6ee8932ba4 | ||
|
|
a3558cc1db | ||
|
|
2eea147f82 | ||
|
|
4dca1e7d79 | ||
|
|
0207fc942b | ||
|
|
59c2b266ef | ||
|
|
f6104c8b5d | ||
|
|
676cf5bd87 | ||
|
|
c0a0d2467e | ||
|
|
5e5d0ae116 | ||
|
|
b6ac4f8ce5 | ||
|
|
3fdfa5a0c0 | ||
|
|
fd452889ea | ||
|
|
b3030b886d | ||
|
|
b246f3ba23 | ||
|
|
27b37f17dd | ||
|
|
ffd3f48b9d | ||
|
|
dfedf5f52c | ||
|
|
dd4fe05229 | ||
|
|
0649930f7e | ||
|
|
606536c3f3 | ||
|
|
6a983ee560 | ||
|
|
d349b23a91 | ||
|
|
77c82f6e96 | ||
|
|
e5439eee54 | ||
|
|
fe3bdff7dd | ||
|
|
f1fcebd77d | ||
|
|
c47606438f | ||
|
|
ceb4dea907 | ||
|
|
1bef5baa93 | ||
|
|
2d5093eab9 | ||
|
|
1ed6ce79d1 | ||
|
|
47a2089561 | ||
|
|
9de6929b48 | ||
|
|
9779b15176 | ||
|
|
8a6f4b3e12 | ||
|
|
a4025b907f | ||
|
|
957fb39ec2 | ||
|
|
438cb71b43 | ||
|
|
d479b566b3 | ||
|
|
02556e71d3 | ||
|
|
c08cd56637 | ||
|
|
a51a963ba0 | ||
|
|
77ebfd9018 | ||
|
|
4e88f481ff | ||
|
|
f251fbb825 | ||
|
|
0c4aa1a31c | ||
|
|
83c8ce3f79 |
10
Makefile
10
Makefile
@@ -5,6 +5,7 @@ POVOPT = +q9 +A0.05 -WT2 Declare=NbFrames=450 -d
|
||||
|
||||
POVDEP = contexte.inc hexacone.inc hexabenz.inc \
|
||||
all.inc hexastar.inc \
|
||||
architecture.inc \
|
||||
globals.inc hexawood.inc datas/hf.png \
|
||||
dynamic.inc trident.inc groundbase.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 \
|
||||
carto.png hexawood.png bubblecut.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
|
||||
|
||||
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)
|
||||
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||
|
||||
|
||||
1
TODO.md
1
TODO.md
@@ -19,6 +19,7 @@
|
||||
|
||||
- Songer à un cadriciel pour la piste son.
|
||||
- Trouver un compositeur et les musiciens.
|
||||
- Étudier à fond la documentation de `sox`
|
||||
|
||||
## ... en bref ...
|
||||
|
||||
|
||||
2
all.inc
2
all.inc
@@ -15,7 +15,7 @@
|
||||
#include "hexastar.inc"
|
||||
|
||||
// les machins avec des bugs
|
||||
// #include "hexastar.inc"
|
||||
#include "architecture.inc"
|
||||
|
||||
// les constructions en chantier
|
||||
#include "xperiment.inc"
|
||||
|
||||
@@ -15,11 +15,11 @@ object { Le_Decor }
|
||||
|
||||
// =======================================================
|
||||
|
||||
#declare LocX = 0;
|
||||
#declare LocY = 3.6 - NormClock;
|
||||
#declare LocZ = -220 + (120 * NormClock);
|
||||
#declare LocX = -0.5 + Cos_010(NormClock);
|
||||
#declare LocY = 2.6 - NormClock;
|
||||
#declare LocZ = -200 + (118 * NormClock);
|
||||
#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) }
|
||||
|
||||
|
||||
106
architecture.inc
Normal file
106
architecture.inc
Normal 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
31
around.pov
Normal 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
|
||||
}
|
||||
20
carto.pov
20
carto.pov
@@ -13,22 +13,24 @@
|
||||
#include "all.inc"
|
||||
|
||||
// ---------------------------------------------------------
|
||||
object { Repere scale 20 translate y*20 }
|
||||
// ---------------------------------------------------------
|
||||
// dessiner une grille
|
||||
|
||||
#for (Foo, -140, 140, 10)
|
||||
#local H = 0.17;
|
||||
cylinder { <-150, H, Foo>, <150, H, Foo>, 0.06 }
|
||||
cylinder { <Foo, H, -150>, <Foo, H, 150>, 0.06 }
|
||||
#end
|
||||
union {
|
||||
#for (Foo, -140, 140, 10)
|
||||
#local H = 0.07;
|
||||
#local Ra = 0.05;
|
||||
cylinder { <-150, H, Foo>, <150, H, Foo>, Ra }
|
||||
cylinder { <Foo, H, -150>, <Foo, H, 150>, Ra }
|
||||
#end
|
||||
pigment { color Black }
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
object { Repere scale 10 translate y*10 }
|
||||
object { Le_Decor }
|
||||
|
||||
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)>
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle 50
|
||||
|
||||
@@ -17,7 +17,7 @@ object { Le_Decor }
|
||||
// =======================================================
|
||||
|
||||
#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 CamY = 3.08 + abs(sin(CK/4.00));
|
||||
@@ -26,12 +26,12 @@ object { Le_Decor }
|
||||
#declare AV = 0.070;
|
||||
#declare LatX = R_circ * 0.96 * cos(CK + AV);
|
||||
#declare LatY = 2.65;
|
||||
#declare LatZ = R_circ * 0.97 * sin(CK + AV);
|
||||
#declare LatZ = R_circ * 0.95 * sin(CK + AV);
|
||||
|
||||
camera {
|
||||
location <CamX, CamY, CamZ>
|
||||
look_at <LatX, LatY, LatZ>
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle 60
|
||||
angle 64
|
||||
}
|
||||
|
||||
|
||||
135
contexte.inc
135
contexte.inc
@@ -4,26 +4,32 @@
|
||||
|
||||
/* 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
|
||||
*/
|
||||
|
||||
#declare RedB_0_X = 19;
|
||||
#declare RedB_0_Z = 29;
|
||||
#declare RedB_0_X = 19; #declare RedB_0_Z = 29;
|
||||
|
||||
#declare RedB_1_X = -24;
|
||||
#declare RedB_1_Z = 8;
|
||||
#declare RedB_1_X = -24; #declare RedB_1_Z = 8;
|
||||
|
||||
#declare RedB_2_X = 36;
|
||||
#declare RedB_2_Z = -21;
|
||||
// XXX #declare RedB_2_X = 36; #declare RedB_2_Z = -21;
|
||||
#declare RedB_2_X = 2; #declare RedB_2_Z = -40;
|
||||
|
||||
#declare RedB_3_X = 42;
|
||||
#declare RedB_3_Z = -5;
|
||||
#declare RedB_3_X = 42; #declare RedB_3_Z = -5;
|
||||
|
||||
#declare Pos_RedB_0 = <RedB_0_X, 0, RedB_0_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 }
|
||||
cone { y*0.37, R*0.80, y*0.425, R*0.83 }
|
||||
#for (Foo, 0, 359, 10)
|
||||
#if (rand(Rng1) > 0.16)
|
||||
#if (rand(Rng1) > 0.17)
|
||||
#local Dx = R * sin(radians(Foo));
|
||||
#local Dz = R * cos(radians(Foo));
|
||||
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)
|
||||
}
|
||||
#local R = rand(Rng1);
|
||||
#if (R < 0.33333) texture { T_Stone25 scale 1+rand(Rng1) }
|
||||
#elseif (R < 0.66666) texture { T_Stone15 scale 1+rand(Rng1) }
|
||||
#else texture { T_Stone6 }
|
||||
#if (R < 0.33) texture { T_Stone25 scale 1+rand(Rng1) }
|
||||
#elseif (R < 0.66) texture { T_Stone15 scale 1+rand(Rng1) }
|
||||
#else texture { T_Stone6 scale 1+rand(Rng1) }
|
||||
#end
|
||||
#undef R
|
||||
}
|
||||
@@ -103,7 +109,7 @@ union {
|
||||
|
||||
#macro Les_GyroPhares ()
|
||||
union {
|
||||
#local E = SzSol * 0.455;
|
||||
#local E = SzSol * 0.471;
|
||||
#for (Idx, 0, 359, 60)
|
||||
#local Ang = radians(Idx+9.33);
|
||||
#local Dx = E * sin(Ang);
|
||||
@@ -116,11 +122,10 @@ union {
|
||||
/* ======================================================= */
|
||||
/* 11 avril 2025, je pose un grand cercle d'hexapoles
|
||||
* 9 octobre 2025, je rajoute un rail circulaire
|
||||
|
||||
* les navettes qui circulent sont dans 'dynamic.inc'
|
||||
*/
|
||||
#declare Les_HexaPoles = object
|
||||
{
|
||||
|
||||
union {
|
||||
#for (Ang, 0, 359, 6)
|
||||
#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]
|
||||
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#debug "Underholes : DEBUG_LEVEL activated\n"
|
||||
#fopen Trid "WS/underholes.log" write
|
||||
#end // if debulevel
|
||||
|
||||
#for (Idx, 0, 5)
|
||||
#local Angle = (Idx + 0.19) * 1.090;
|
||||
#local Px = sin(Angle) * (SzSol * 0.97);
|
||||
#local Pz = cos(Angle) * (SzSol * 1.04);
|
||||
#local Angle = (Idx + 0.19) * 1.09; // magic numbers ?
|
||||
#local Kr = 5 - (rand(Rng1)*2.5);
|
||||
#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>;
|
||||
#end // for loop
|
||||
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#fclose Trid
|
||||
#end
|
||||
|
||||
#declare Underground = object
|
||||
@@ -229,27 +229,30 @@ blob {
|
||||
difference {
|
||||
// plane { y, 0 }
|
||||
#local Big = 300;
|
||||
box { <-Big, -0.19, -Big>, < Big, 0.0000, Big> }
|
||||
box { <-Big, -0.21, -Big>, < Big, 0.0000, Big> }
|
||||
#undef Big
|
||||
#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
|
||||
texture { Ground_Texture }
|
||||
}
|
||||
}
|
||||
|
||||
/* ======================================================= */
|
||||
|
||||
#declare Repere = object
|
||||
/* 10 fev 2026, on place des bordures autour des trous */
|
||||
/* voir aussi -> xperiment.inc */
|
||||
#declare Les_Bordures = object
|
||||
{
|
||||
union {
|
||||
#local R = 0.01555555;
|
||||
cylinder { 0, <1, 0, 0>, R pigment { color Red } }
|
||||
cylinder { 0, <0, 1, 0>, R pigment { color Green } }
|
||||
cylinder { 0, <0, 0, 1>, R pigment { color Blue } }
|
||||
#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
|
||||
@@ -284,12 +287,12 @@ rotate -19 * y
|
||||
union {
|
||||
/* a l'interieur du 'circular' */
|
||||
object { Chose () translate <-25, 0, -31> }
|
||||
object { Chose () translate < 20, 0, -32> }
|
||||
object { Chose () translate < 20, 0, -36> }
|
||||
/* a l'exterieur du 'circular' */
|
||||
#for (foo, 0, 359, 18)
|
||||
#local CK = radians(foo + (9*rand(Rng1)));
|
||||
#local DX = 66 * sin(CK);
|
||||
#local DZ = 64 * cos(CK);
|
||||
#local DX = 76 * sin(CK);
|
||||
#local DZ = 74 * cos(CK);
|
||||
object { Chose () translate < DX, 0, DZ> } // XXX
|
||||
#end
|
||||
}
|
||||
@@ -337,9 +340,9 @@ sky_sphere {
|
||||
gradient y
|
||||
color_map {
|
||||
[ 0.2 color Gray20 ]
|
||||
[ 0.4 color rgb <.5, .45, .4> ]
|
||||
[ 0.4 color rgb <.5, .45, .43> ]
|
||||
[ 0.7 color Gray50 ]
|
||||
[ 0.9 color rgb <.5, .5, .45> ]
|
||||
[ 0.9 color rgb <.5, .5, .47> ]
|
||||
[ 1.0 color Gray20 ]
|
||||
}
|
||||
turbulence 3.14159 + 0.84 * Cos_010(NormClock)
|
||||
@@ -358,6 +361,7 @@ sky_sphere {
|
||||
{
|
||||
union {
|
||||
object { Underground }
|
||||
object { Les_Bordures }
|
||||
|
||||
#include "groundbase.inc"
|
||||
object { La_GroundBase }
|
||||
@@ -375,22 +379,31 @@ union {
|
||||
object { QuadriLight }
|
||||
object { Les_GyroPhares () }
|
||||
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_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 */
|
||||
object { Trois_Arches (1.4) scale 2.7 translate <0, 0, -131> }
|
||||
/* --------- les trucs dans le Y négatif */
|
||||
// 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.52, -104> }
|
||||
object { OpenBox(1.5, 0.06) translate <-19, 1.52, -144> }
|
||||
object { OpenBox(1.5, 0.06) translate <-21, 1.52, -104> }
|
||||
object { OpenBox(1.5, 0.06) translate <-20, 1.52, -144> }
|
||||
|
||||
#for (Foo, 0, 5)
|
||||
object { Les_Cahutes () translate <29, 0, -(77+Foo*11)> }
|
||||
object { Les_Cahutes () translate <27, 0, -(77+Foo*11)> }
|
||||
#end // for
|
||||
|
||||
/* --------- les trucs dans le Y positif */
|
||||
// object { OpenBox(1.6, 0.11) translate <-3, 3.58, 112> }
|
||||
object { Blob_Boxed scale 4 translate <-3, 3.58, 112> }
|
||||
object { Blob_Boxed scale 4 rotate y*45 translate <3, 6.7, 161> }
|
||||
|
||||
}
|
||||
}
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#declare Kbox = (2.03*NormClock);
|
||||
difference {
|
||||
object { HexaCone () }
|
||||
object { HexaCone () rotate <9-(11*NormClock), 6, -7> }
|
||||
box { -1, 1 translate z*Kbox }
|
||||
translate y*TY + POS_Cutoff
|
||||
}
|
||||
@@ -29,7 +29,7 @@ difference {
|
||||
|
||||
// =======================================================
|
||||
light_source {
|
||||
<-24, 0.4, -1>
|
||||
<-14, 0.4, -1>
|
||||
colour Orange
|
||||
parallel
|
||||
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 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);
|
||||
|
||||
camera {
|
||||
|
||||
75
dynamic.inc
75
dynamic.inc
@@ -5,34 +5,25 @@
|
||||
// rajout d'une patrouille en vol
|
||||
// 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 {
|
||||
#local L2 = 10;
|
||||
#if (0)
|
||||
union {
|
||||
cylinder { <-L2, 0, 0>, <L2, 0, 0>, 0.4 }
|
||||
cylinder { -y*3, y*3, 0.4 }
|
||||
texture { Y_Texture }
|
||||
}
|
||||
#else object { Patrouille rotate 90*y }
|
||||
#end
|
||||
#local CK = (clock / 230) - 0.75; // en radians
|
||||
#local RD = 63; // rayon deplacement
|
||||
#local Xp = RD * sin(CK);
|
||||
#local Zp = RD * cos(CK);
|
||||
#declare Loc_Patrouille = <Xp+10, 70+(11*NormClock), Zp>;
|
||||
|
||||
object { Patrouille }
|
||||
rotate y*degrees(CK)
|
||||
translate <Xp, 46, Zp>
|
||||
translate <-30, 0, 0>
|
||||
translate Loc_Patrouille
|
||||
}
|
||||
|
||||
|
||||
// =======================================================
|
||||
// on va tenter de placer quelques trucs
|
||||
// qui bougent sur le rail circulaire
|
||||
|
||||
#for (foo, 0, 5)
|
||||
#local CK = (NormClock+(foo*0.0204)) * 4.02; // radians
|
||||
#local CK = (NormClock+(foo*0.0200)) * 4.05; // radians
|
||||
#declare Xpos = R_circular * sin(CK);
|
||||
#declare Zpos = R_circular * cos(CK);
|
||||
#declare AR = degrees(CK);
|
||||
@@ -45,8 +36,11 @@ object {
|
||||
|
||||
/// =======================================================
|
||||
/* des trucs autour des trous du sol. */
|
||||
object { Les_HexaBalls rotate y*clock translate UnderHoles[2] }
|
||||
object { Les_Machins rotate -y*clock translate UnderHoles[3] }
|
||||
// Les_Machins --> '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 translate UnderHoles[2] }
|
||||
|
||||
/// =======================================================
|
||||
/*
|
||||
@@ -56,11 +50,11 @@ object { Les_Machins rotate -y*clock translate UnderHoles[3] }
|
||||
{
|
||||
#local K = 1.39;
|
||||
union {
|
||||
object { HexaBenz () rotate y*90 translate <-K, 1.83, 0> }
|
||||
object { HexaBenz () translate < K, 1.66, 0> }
|
||||
object { HexaBenz () rotate y*94 translate <-K, 1.86, 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
|
||||
@@ -70,7 +64,7 @@ object { BiBenz rotate -y*(clock*0.26) translate Pos_RedB_0 }
|
||||
#local K = 1.27;
|
||||
union {
|
||||
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 }
|
||||
@@ -90,7 +84,7 @@ object { BiTrident
|
||||
|
||||
/* l'hexastar est une nouvelle venue du 4 janvier 2026 */
|
||||
// elle est ici présentée sur son estrade.
|
||||
object { HexaStar rotate z*5
|
||||
object { HexaStar rotate -z*5
|
||||
rotate y*(670*sin(NormClock))
|
||||
translate Pos_RedB_3 + (y*2)
|
||||
}
|
||||
@@ -109,18 +103,26 @@ object { HexaCone () rotate y*((12*NormClock)+80) translate P }
|
||||
* * les coordonnées de ces trous sont définies
|
||||
* 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)
|
||||
#declare Dy = rand(Rng1)-4+(11*NormClock);
|
||||
#declare Dy = (14*rand(Rng1))-9+(14*NormClock);
|
||||
#declare Tr = UnderHoles[Foo] + <0, Dy, 0>;
|
||||
#declare Ry = (( 0.5+rand(Rng1)-NormClock ) * 97);
|
||||
// #write (Trid, Foo, " ", NormClock, " ", Dy, " ",
|
||||
// Ry, " ", Tr, "\n")
|
||||
#declare Ry = (( 0.5+rand(Rng1)-NormClock ) * 166);
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#write (Trid, "Trid ", Foo, " ", NormClock, " ", Dy, " ",
|
||||
Ry, " ", Tr, "\n")
|
||||
#end
|
||||
object { Trident_A () rotate y*Ry
|
||||
translate y+( (5*rand(Rng1)) - 2.5)
|
||||
// translate y+( (10*rand(Rng1)) - 5)
|
||||
translate Tr }
|
||||
#end
|
||||
// #fclose Trid
|
||||
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#fclose Trid
|
||||
#end
|
||||
|
||||
/*
|
||||
* ----------------------------
|
||||
@@ -148,14 +150,14 @@ object { HexaBenz ()
|
||||
/*
|
||||
* passage d'un hexawood près de la base
|
||||
*/
|
||||
#declare A = <-25, 0.4, (SzSol/2)+4>;
|
||||
#declare B = < 29, 0.5, (SzSol/2)+1>;
|
||||
#declare A = <-25, 0.4, (SzSol/2)+5>;
|
||||
#declare B = < 29, 0.5, (SzSol/2)+2>;
|
||||
#declare P = Interpolate(A, B, NormClock);
|
||||
#local K = NormClock*31;
|
||||
#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>;
|
||||
#debug "+++++++++++++ P_hexawood defined\n"
|
||||
// #debug "+++++++++++++ P_hexawood defined\n"
|
||||
|
||||
object { HexaWood rotate z*R translate P_hexawood }
|
||||
|
||||
@@ -174,6 +176,3 @@ object { Trident_A () rotate y*(clock*2.7)
|
||||
#debug "dynamic is loaded\n"
|
||||
/* ----------------------------------- */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
#for (idX, -3, 3)
|
||||
#for (idZ, -3, 3)
|
||||
|
||||
#local posX = (idX * 4.72) + (rand(Rng1)-0.5);
|
||||
#local posY = 3.2 + (NormClock * 12 * (rand(Rng1)+0.75));
|
||||
#local posZ = (idZ * 4.39) ;
|
||||
#local posX = (idX * 4.76) + (rand(Rng1)-0.5);
|
||||
#local posY = 3.2 + (NormClock * 17 * (rand(Rng1)+0.95));
|
||||
#local posZ = (idZ * 4.44) ;
|
||||
#local Rx = (rand(Rng1) - 0.5) * 12;
|
||||
#local Ry = (rand(Rng1) - 0.5) * (24+NormClock);
|
||||
#local Rz = (rand(Rng1) - 0.5) * 11;
|
||||
@@ -52,18 +52,16 @@
|
||||
|
||||
object { Le_Decor }
|
||||
|
||||
// object { Repere scale 5 translate y }
|
||||
|
||||
#local CamX = -8.7 + ( 6.9 * Cos_01(NormClock));
|
||||
#local CamY = 0.42 + (17.36 * Cos_01(NormClock));
|
||||
#local CamZ = 122 - (21.9 * Cos_01(NormClock));
|
||||
#local CamX = 8.7 + ( 6.9 * Cos_01(NormClock));
|
||||
#local CamY = 0.42 + (18.36 * Cos_01(NormClock));
|
||||
#local CamZ = 122 - (22.9 * Cos_01(NormClock));
|
||||
|
||||
#local LatY = (Y_mean / Y_count) - (0.5*NormClock);
|
||||
#debug concat("Lat Y ", str(LatY, 7, 3),"\n")
|
||||
// #debug concat("escadrille: Lat Y ", str(LatY, 7, 3),"\n")
|
||||
|
||||
camera {
|
||||
location <CamX, CamY, CamZ>
|
||||
look_at <0.0, LatY, 0>
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle 56 - (21 * NormClock)
|
||||
angle 54 - (31 * NormClock)
|
||||
}
|
||||
|
||||
368
essai.pov
368
essai.pov
@@ -5,43 +5,64 @@
|
||||
|
||||
#version 3.7;
|
||||
|
||||
// #declare DEBUG_LEVEL = 1; // un nouveau test ?
|
||||
|
||||
#include "globals.inc"
|
||||
#declare NO_DYNAMIC = 1;
|
||||
#include "all.inc"
|
||||
|
||||
/*
|
||||
* il faut faire le tri ici !
|
||||
-* __________________________
|
||||
*/
|
||||
// =======================================================
|
||||
// =======================================================
|
||||
// nouveau du 3 janvier 2026
|
||||
#local Horloge2 = object
|
||||
{
|
||||
object { Horloge scale <1, 0.20, 1> rotate -x*90
|
||||
translate x*0.58 }
|
||||
}
|
||||
#declare HorlogeDouble = object
|
||||
{
|
||||
// nouveau du 10 février 2026
|
||||
#macro Anemone_A (E, H)
|
||||
union {
|
||||
box { <-3.20, -0.03, -0.07>, <3.20, 1.61, 0.07>
|
||||
pigment { color Gray70 } }
|
||||
#local EC = 0.22;
|
||||
object { Horloge2 rotate y*180 translate z*EC }
|
||||
object { Horloge2 translate -z*EC }
|
||||
#for (foo, 0, 5)
|
||||
#local A = radians(foo*60);
|
||||
#local DX = E * sin(A);
|
||||
#local DZ = E * cos(A);
|
||||
cone { y*(H/8), 0.20, <DX, H, DZ>, 0.001
|
||||
#local Rv = 0.7 + (0.2*rand(Rng1));
|
||||
#local Gv = 0.6 + (0.2*rand(Rng1));
|
||||
#local Bv = 0.6 + (0.3*rand(Rng1));
|
||||
texture {
|
||||
pigment { rgb <Rv, Gv, Bv> }
|
||||
finish { phong 0.51 reflection 0.05 }
|
||||
}
|
||||
scale 0.8
|
||||
translate y*2.5
|
||||
}
|
||||
}
|
||||
sphere { 0, 0.45 texture { T_WIP_color } }
|
||||
#end // for
|
||||
}
|
||||
#end // macro
|
||||
|
||||
// =======================================================
|
||||
/*
|
||||
* 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 ()
|
||||
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#debug "Cone Stack : DEBUG_LEVEL activated\n"
|
||||
#fopen Log "WS/log.essai" write
|
||||
#end // debug level
|
||||
|
||||
union {
|
||||
#local Hcs = 0.550;
|
||||
#local Rco = R_basecone * 3.333;
|
||||
#for (Foo, 0, 5)
|
||||
#local Dx = 0.333 * sin(Foo);
|
||||
#local Dx = 0.385 * sin(Foo+NormClock);
|
||||
#local Dy = Foo * (Hcs + 0.0333);
|
||||
#local Dz = 0.333 * cos(Foo);
|
||||
#local Dz = 0.385 * cos(Foo+NormClock);
|
||||
#local DV = <Dx, Dy, Dz>;
|
||||
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#write (Log, Foo, " ", DV, "\n")
|
||||
#end
|
||||
|
||||
union {
|
||||
cone { 0, Rco, <0, Hcs, 0>, 0.001
|
||||
#if (rand(Rng1) < 0.50) texture { Y_Texture }
|
||||
@@ -53,12 +74,18 @@ union {
|
||||
#else texture { G_Texture }
|
||||
#end // if rand
|
||||
}
|
||||
translate <Dx, Dy, Dz>
|
||||
translate DV
|
||||
}
|
||||
#end // for Foo
|
||||
}
|
||||
|
||||
#ifdef (DEBUG_LEVEL)
|
||||
#fclose Log
|
||||
#end // debug level
|
||||
|
||||
#end // macro
|
||||
|
||||
|
||||
// =======================================================
|
||||
/* nouveau du 20 octobre 2025
|
||||
* Un semblant de wagonnet qui va tourner sur le
|
||||
@@ -76,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
|
||||
@@ -116,93 +110,40 @@ union {
|
||||
#declare Obj_BasicTexture = object
|
||||
{
|
||||
#local R = 0.385;
|
||||
#local H = 1.71;
|
||||
#local H = 1.51;
|
||||
merge {
|
||||
cylinder { 0, y*H, R }
|
||||
sphere { 0, R scale <1, 0.50, 1> translate y*H }
|
||||
difference {
|
||||
#local R1 = R+0.46;
|
||||
#local R2 = R+0.63;
|
||||
box { <-0.19, 0, -0.17>, <R+0.4, H*0.42, R+0.6> }
|
||||
cylinder { <R1, -1, R2>, <R1, 1, R2>, 0.27 }
|
||||
box { <-0.19, 0, -0.17>, <R+0.4, H*0.48, R+0.6> }
|
||||
cylinder { <R1, -1, R2>, <R1, 1, R2>, 0.33 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------
|
||||
|
||||
#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
|
||||
#declare ProtoTextures = object
|
||||
{
|
||||
#local TX = 2.35;
|
||||
#local TX = 2.55;
|
||||
#local TZ = 2.95;
|
||||
#local Kro = 32 + (NormClock * 17);
|
||||
#local Kro = 32 + (NormClock * 37);
|
||||
union {
|
||||
object { Obj_BasicTexture texture { T_WIP_R }
|
||||
object { Obj_BasicTexture texture { R_Texture }
|
||||
rotate y * (rand(Rng1)*Kro)
|
||||
translate <TX, 0, -TZ> }
|
||||
object { Obj_BasicTexture texture { T_WIP_G }
|
||||
object { Obj_BasicTexture texture { G_Texture }
|
||||
rotate y * (rand(Rng1)*Kro)
|
||||
translate <TX, 0, 0> }
|
||||
object { Obj_BasicTexture texture { T_WIP_B }
|
||||
object { Obj_BasicTexture texture { B_Texture }
|
||||
rotate y * (rand(Rng1)*Kro)
|
||||
translate <TX, 0, TZ> }
|
||||
|
||||
object { Obj_BasicTexture texture { T_WIP_1 }
|
||||
object { Obj_BasicTexture texture { T_WIP_dents }
|
||||
rotate y * (rand(Rng1)*Kro)
|
||||
translate <-TX, 0, TZ> }
|
||||
object { Obj_BasicTexture texture { T_WIP_rasta }
|
||||
@@ -218,84 +159,219 @@ union {
|
||||
|
||||
// =======================================================
|
||||
/* 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
|
||||
{
|
||||
union {
|
||||
object { Chose () translate < 2.2, 0, 2.32> }
|
||||
object { Chose () translate <-2.9, 0, 3.91> }
|
||||
object { Chose () translate < 2.9, 0, -4.07> }
|
||||
object { Chose () translate <-3.1, 0, -(3+NormClock)> }
|
||||
object { Chose () translate <-4.5, 0, -4> }
|
||||
object { Repere scale 2 translate 0.05*y }
|
||||
object { Vase () scale 2 translate < 2.2, 0, 2.32> }
|
||||
object { Vase () scale 1.4 translate <-2.9, 0, 3.91> }
|
||||
object { Vase () scale 2 translate < 2.9, 0, -4.07> }
|
||||
object { Vase () translate <-4.5, 0, -4> }
|
||||
object { Repere translate 0.15*y }
|
||||
}
|
||||
}
|
||||
// =======================================================
|
||||
|
||||
#declare Gyros = object
|
||||
#declare GyroTrucs = object
|
||||
{
|
||||
// #debug " Les gyros !!!\n"
|
||||
union {
|
||||
#for (I, 0, 359, 30)
|
||||
#declare E = 12 + (3*rand(Rng1));
|
||||
#declare Dx = E * sin(radians(I));
|
||||
#declare Dz = E * cos(radians(I));
|
||||
#local R = rand(Rng1);
|
||||
#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 }
|
||||
|
||||
// ========================================================##
|
||||
|
||||
#declare Architecture = object
|
||||
{
|
||||
union {
|
||||
object { Portique_A () translate z*6.5 }
|
||||
object { Portique_A () scale 2 translate z*2 }
|
||||
object { Portique_A () scale 1.8 }
|
||||
object { Portique_A () scale 2 translate -z*3 }
|
||||
object { Portique_A () rotate y*9 translate -z*6.5 }
|
||||
// object { Fleche translate y }
|
||||
}
|
||||
}
|
||||
// ------------------------------------------------------ ##
|
||||
|
||||
#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 {
|
||||
<-18, 54, -7>
|
||||
colour Gray50
|
||||
<-32, 40, -7>
|
||||
colour <Rv, Gv, Bv>
|
||||
parallel
|
||||
point_at 0
|
||||
}
|
||||
|
||||
// ------------------------------------------------------ ##
|
||||
|
||||
#declare Selector = mod(int(clock/60)+20, 8);
|
||||
#declare Selector = int(clock/57);
|
||||
#debug concat("Selector = ", str(Selector, 6, 0), "\n")
|
||||
|
||||
#declare AngleCam = 17 - 3*Cos_01(NormClock);
|
||||
#declare AngleCam = 27 - 3*Cos_01(NormClock);
|
||||
|
||||
#switch (Selector)
|
||||
#case (0)
|
||||
object { Des_Choses }
|
||||
#local AngleCam = 17;
|
||||
#break
|
||||
#case (1)
|
||||
object { Patrouille rotate -y*(clock*0.666)
|
||||
translate y*2.5 }
|
||||
object { Architecture rotate -y*(clock*0.666) }
|
||||
#local AngleCam = 31.0;
|
||||
#break
|
||||
#case (2)
|
||||
object { Le_ConeStack () translate y*0.20 }
|
||||
object { HoleBorder_B (2.222) }
|
||||
#break
|
||||
#case (3)
|
||||
object { HorlogeDouble rotate -y*(5*clock) }
|
||||
object { HorlogeDouble scale 2 rotate -y*(6*clock) }
|
||||
object { Repere translate y*1 }
|
||||
#break
|
||||
#case (4)
|
||||
object { Trident_A()
|
||||
scale 1.8
|
||||
rotate <28, 0, 12> translate 2.2*y
|
||||
rotate -y*clock }
|
||||
object { Blob_Boxed
|
||||
scale 4.000
|
||||
rotate <7, 0, 12> translate 3.7*y
|
||||
}
|
||||
#break
|
||||
#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
|
||||
#case (6)
|
||||
object { HexaStar translate y*3 }
|
||||
object { HexaStar scale 3 rotate y*(clock*1.5) translate y*3.5 }
|
||||
#break
|
||||
#case (7)
|
||||
#local Pos = <0.5-NormClock, 0, 0>;
|
||||
object { ProtoTextures rotate -y*clock translate 0 }
|
||||
object { ProtoTextures rotate -y*(55*Cos_01(NormClock)) }
|
||||
#break
|
||||
|
||||
#end // switch selector
|
||||
@@ -305,24 +381,22 @@ plane {
|
||||
texture { Ground_Texture }
|
||||
}
|
||||
|
||||
// object { Repere translate y*1.0 }
|
||||
|
||||
// =======================================================
|
||||
|
||||
#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 K = 8.6;
|
||||
#local CamX = CamX * K;
|
||||
#local CamY = CamY * K * 0.61;
|
||||
#local CamY = CamY * K * 0.41;
|
||||
#local CamZ = CamZ * K;
|
||||
|
||||
|
||||
|
||||
camera {
|
||||
orthographic
|
||||
location <CamX, CamY, CamZ>
|
||||
look_at <0, 1.6, 0>
|
||||
look_at <0, 1.5, 0>
|
||||
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle AngleCam
|
||||
}
|
||||
|
||||
128
gadgets.inc
128
gadgets.inc
@@ -4,7 +4,41 @@
|
||||
*/
|
||||
|
||||
/* ======================================================= */
|
||||
#declare R_C = 0.35;
|
||||
/* moved here from 'contexte.inc' */
|
||||
#declare Repere = object
|
||||
{
|
||||
union {
|
||||
#local R = 0.015;
|
||||
#local R2 = R * 2.33;
|
||||
#local LC = 1.15;
|
||||
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
|
||||
{
|
||||
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 ! */
|
||||
#macro Chose_le_pied ()
|
||||
@@ -77,6 +111,36 @@ union {
|
||||
#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
|
||||
{
|
||||
#local Texte = str(NormClock, 6, 3);
|
||||
@@ -85,13 +149,31 @@ union {
|
||||
text {
|
||||
// ttf "datas/DSEG7Classic-Regular.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
|
||||
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 !
|
||||
@@ -107,7 +189,7 @@ prism {
|
||||
#if (rand(Rng1) < 0.5) texture { T_Beton_1 }
|
||||
#else texture { T_Beton_2 }
|
||||
#end // if
|
||||
scale 0.666 // WTF ?
|
||||
scale 0.621 // WTF ?
|
||||
/* Pourquoi ce scale ?
|
||||
* parce que la spline est 'hardcoded' quelques
|
||||
* lignes plus haut, et qu'il y a des méthodes
|
||||
@@ -168,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 }
|
||||
|
||||
/* en bas */
|
||||
cylinder { < D, -D, D>, <-D, -D, D>, R }
|
||||
cylinder { < D, -D, -D>, <-D, -D, -D>, R }
|
||||
@@ -180,9 +263,29 @@ union {
|
||||
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 }
|
||||
}
|
||||
#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
|
||||
@@ -190,10 +293,11 @@ union {
|
||||
*/
|
||||
#macro Bubble ()
|
||||
sphere {
|
||||
0, 0.070
|
||||
0, 0.070 + 0.056*rand(Rng1)
|
||||
#local R = rand(Rng1);
|
||||
#if ( R < 0.333 ) texture { Ruby_Glass }
|
||||
#elseif ( R < 0.666 ) texture { Orange_Glass }
|
||||
#if ( R < 0.25 ) texture { Ruby_Glass }
|
||||
#elseif ( R < 0.50 ) texture { Orange_Glass }
|
||||
#elseif ( R < 0.75 ) texture { Shadow_Clouds }
|
||||
#else texture { Gold_Nugget }
|
||||
#end
|
||||
#undef R
|
||||
@@ -204,7 +308,7 @@ sphere {
|
||||
#macro Un_Machin ()
|
||||
union {
|
||||
#for (Y, 1, 8, 1)
|
||||
object { Bubble() translate y*Y*0.11 }
|
||||
object { Bubble() translate y*Y*0.115 }
|
||||
#end
|
||||
}
|
||||
#end
|
||||
@@ -214,11 +318,11 @@ union {
|
||||
#declare Les_Machins = object
|
||||
{
|
||||
union {
|
||||
#local Rk = 3.90 + NormClock;
|
||||
#local Rk = 3.60 + NormClock;
|
||||
#for (foo, 0, 359, 45)
|
||||
#local Xpos = Rk * sin(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
|
||||
#undef Rk
|
||||
}
|
||||
|
||||
3
gif89a/README.md
Normal file
3
gif89a/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
Space for the flashy Compuserve pictures.
|
||||
53
globals.inc
53
globals.inc
@@ -11,7 +11,7 @@ global_settings {
|
||||
#include "stones.inc"
|
||||
#include "woods.inc"
|
||||
|
||||
#declare Rng1 = seed(2026);
|
||||
#declare Rng1 = seed(1221);
|
||||
#declare foo = rand(Rng1);
|
||||
#declare Rng2 = seed(now*24*60*60);
|
||||
#declare bar = rand(Rng2);
|
||||
@@ -41,15 +41,25 @@ global_settings {
|
||||
|
||||
#declare R_circular = (SzSol * 1.60);
|
||||
|
||||
#declare R_hole = 3.1; // holes in the background
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
* 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
|
||||
{
|
||||
pigment { color Cyan*NormClock }
|
||||
finish { phong 0.23 ambient 0.50 }
|
||||
#local V = (sin(clock*0.142) / 2) + 0.5;
|
||||
pigment { color Orange * V }
|
||||
finish { phong 0.23 ambient 0.30 }
|
||||
}
|
||||
|
||||
#declare T_WIP_alert = texture
|
||||
@@ -113,7 +123,7 @@ finish { roughness 1.00 }
|
||||
|
||||
#declare tPlasticBlue = texture
|
||||
{
|
||||
pigment{rgb <0.50, 0, 2.0>}
|
||||
pigment{rgb <0.20, 0, 2.0>}
|
||||
finish {
|
||||
ambient 0.1
|
||||
diffuse 0.6
|
||||
@@ -156,7 +166,7 @@ pigment { rgb <0.31, 0.33, 0.24> }
|
||||
normal { dents 0.22 scale 1.666}
|
||||
finish {
|
||||
ambient 0 specular 0.3 metallic roughness 0.33
|
||||
reflection { 0.23 metallic }
|
||||
reflection { 0.21 metallic }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,7 +203,7 @@ pigment {
|
||||
[1.00 color Black ]
|
||||
}
|
||||
}
|
||||
finish { phong 0.23 ambient 0.40 }
|
||||
finish { phong 0.23 ambient 0.30 }
|
||||
scale <3, 4, 3>
|
||||
}
|
||||
/* ------------------------------------------------------------ */
|
||||
@@ -204,12 +214,12 @@ scale <3, 4, 3>
|
||||
pigment {
|
||||
wood
|
||||
color_map {
|
||||
[0.0 color Gray70 ]
|
||||
[0.0 color Gray60 ]
|
||||
[0.5 color Gray80 ]
|
||||
[0.5 color Blue ]
|
||||
[1.0 color Blue ]
|
||||
}
|
||||
// XXX rotate y*49
|
||||
turbulence 0.04
|
||||
translate <NormClock*0.1, sqrt(NormClock*0.4),
|
||||
NormClock*0.333>
|
||||
scale <0.2, 0.3, 1>
|
||||
@@ -217,6 +227,33 @@ scale <3, 4, 3>
|
||||
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
|
||||
|
||||
@@ -47,13 +47,14 @@ texture { T_Beton_2 }
|
||||
text {
|
||||
ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0
|
||||
// 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
|
||||
{
|
||||
union {
|
||||
object { Compteur scale 0.55
|
||||
object { Compteur scale 0.666
|
||||
translate <-0.46, 0.22, 0.32> }
|
||||
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 }
|
||||
translate y*H_sol
|
||||
|
||||
@@ -169,11 +169,12 @@ union {
|
||||
#local E = 0.018;
|
||||
cylinder { E*z, <0, 0.20, E>, RBA2 }
|
||||
cylinder { -E*z, <0, 0.20, E>, RBA2 }
|
||||
scale <1, 1, 5>
|
||||
scale <1, 1, 5.555>
|
||||
}
|
||||
|
||||
#if ( mod(clock, 20) < (20*rand(Rng1)) ) texture { T_WIP_color }
|
||||
#else texture { R_Texture }
|
||||
#if ( mod(clock, 10+3*rand(Rng1)) < (10*rand(Rng1)) )
|
||||
texture { tPlasticPrune }
|
||||
#else texture { tPlasticGreen }
|
||||
#end
|
||||
}
|
||||
#end
|
||||
|
||||
@@ -13,17 +13,17 @@
|
||||
|
||||
object { Le_Decor }
|
||||
|
||||
// object { Repere scale 2 }
|
||||
#declare Loc_cam = <0.63, 2, 2*NormClock> + (Pos_RedB_0 * 1.32);
|
||||
|
||||
#declare Loc_cam = <0, 2, 2*NormClock> + (Pos_RedB_0 * 1.32);
|
||||
#declare Lat_Y = 1.21 + 0.16*NormClock;
|
||||
|
||||
camera {
|
||||
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>
|
||||
// focal_point <0.37, 0.0, 0>
|
||||
// aperture 0.046
|
||||
// blur_samples 30
|
||||
angle 40 - 14 * Cos_01(NormClock)
|
||||
angle 40 - 15 * Cos_01(NormClock)
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "globals.inc"
|
||||
|
||||
// #declare DEBUG_LEVEL = 1;
|
||||
#declare NO_DYNAMIC = 0;
|
||||
#include "all.inc"
|
||||
|
||||
@@ -15,16 +16,16 @@ object { Le_Decor }
|
||||
|
||||
// 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 {
|
||||
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>
|
||||
right <image_width/image_height, 0, 0>
|
||||
// focal_point <0.37, 0.90, 0>
|
||||
// aperture 0.046
|
||||
// blur_samples 30
|
||||
angle 55 - 25 * Cos_01(NormClock)
|
||||
angle 59 - 25 * Cos_01(NormClock)
|
||||
}
|
||||
|
||||
|
||||
87
hexastar.inc
87
hexastar.inc
@@ -8,18 +8,17 @@
|
||||
/* ============================================================ */
|
||||
/* Un des six éléments de base */
|
||||
|
||||
#declare HS_radius = 0.407;
|
||||
#declare HS_radius = 0.409;
|
||||
|
||||
#macro HS_element_a ()
|
||||
#macro HS_element_pointe ()
|
||||
union {
|
||||
#local R_a = HS_radius * 0.33333;
|
||||
#local R_a = HS_radius * 0.369;
|
||||
#local Small = 0.00001;
|
||||
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> }
|
||||
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);
|
||||
#if ( R < 0.50 ) texture { GoldDark }
|
||||
#if ( R < 0.45 ) texture { GoldDark }
|
||||
#elseif ( R < 0.60 ) texture { Aluminum }
|
||||
#else texture { T_Gold_3C }
|
||||
#end
|
||||
}
|
||||
@@ -28,26 +27,58 @@ union {
|
||||
/*
|
||||
* element central --- À REFAIRE EN MACRO !
|
||||
*/
|
||||
#declare HS_element_central = object
|
||||
{
|
||||
#macro HS_element_central ()
|
||||
union {
|
||||
torus { HS_radius*0.93, 0.0180 }
|
||||
#local L = 0.0035;
|
||||
cylinder { -y*L, y*L, 0.057 }
|
||||
sphere { 0, 0.057 translate -y*L }
|
||||
sphere { 0, 0.057 translate y*L }
|
||||
#local HSCR = HS_radius*0.70;
|
||||
torus { HSCR, 0.0180 }
|
||||
|
||||
// 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
|
||||
}
|
||||
scale <1, 25.90, 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
|
||||
}
|
||||
/* ------------------------------------------------------------ */
|
||||
/* nouveau 14 janvier 2026 */
|
||||
#macro HS_element_queue ()
|
||||
union {
|
||||
#local R_a = HS_radius * 0.228;
|
||||
#local Small = 0.001;
|
||||
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> }
|
||||
#local R = rand(Rng1);
|
||||
#if ( R < 0.35 ) texture { Rust scale 3.33
|
||||
rotate y*(rand(Rng1)*273) }
|
||||
#elseif ( R < 0.50 ) texture { T_Gold_5A }
|
||||
#elseif ( R < 0.80 ) texture { Aluminum }
|
||||
#else texture { T_Gold_3C }
|
||||
#end
|
||||
}
|
||||
#end // macro
|
||||
/* ------------------------------------------------------------ */
|
||||
/* nouveau XXX janvier 2026 */
|
||||
|
||||
// UNE ANTENNE ?
|
||||
|
||||
/* ============================================================ */
|
||||
/* On regroupe les six élements */
|
||||
/* On regroupe les N*six élements */
|
||||
#declare HS_les_elements = object
|
||||
{
|
||||
union {
|
||||
@@ -55,12 +86,16 @@ union {
|
||||
#local E = HS_radius;
|
||||
#local Ty = E * cos(radians(Foo));
|
||||
#local Tz = E * sin(radians(Foo));
|
||||
object {
|
||||
HS_element_a ()
|
||||
translate <0, Ty, Tz>
|
||||
union {
|
||||
object { HS_element_pointe ()
|
||||
translate <0, Ty*1.16, Tz*1.16> }
|
||||
object { HS_element_queue ()
|
||||
translate <0, Ty*0.80, Tz> }
|
||||
}
|
||||
#end // end for
|
||||
object { HS_element_central }
|
||||
object { HS_element_central () }
|
||||
|
||||
// object { Repere }
|
||||
}
|
||||
}
|
||||
/* ============================================================ */
|
||||
|
||||
@@ -28,6 +28,6 @@ camera {
|
||||
// focal_point <0.37, 0.0, 0>
|
||||
// aperture 0.046
|
||||
// blur_samples 30
|
||||
angle 70 - 9 * Cos_01(NormClock)
|
||||
angle 65 - 11 * Cos_01(NormClock)
|
||||
}
|
||||
|
||||
|
||||
34
hexawood.inc
34
hexawood.inc
@@ -84,7 +84,7 @@ merge {
|
||||
#local RP = 0.040;
|
||||
sphere { 0, RP scale <1, 0.84, 1> translate 0.35*y }
|
||||
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);
|
||||
#if ( R < 0.3 ) texture { Tinny_Brass }
|
||||
@@ -109,7 +109,7 @@ union {
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
#declare HW_Anneau0 = object
|
||||
#declare HW_Anneau_0 = object
|
||||
{
|
||||
merge {
|
||||
torus { Hc_rad*0.31, 0.0666 scale <1, 0.55, 1> }
|
||||
@@ -121,9 +121,35 @@ merge {
|
||||
#end // FOR
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
#declare HexaWood = object
|
||||
{
|
||||
@@ -134,7 +160,7 @@ union {
|
||||
light_source { 0.20*y rgb <0, 0.20, 0.99> }
|
||||
#end
|
||||
object { HW_Cones () translate y*0.15 }
|
||||
object { HW_Anneau0 }
|
||||
object { HW_Anneau }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,14 +17,14 @@ object { Le_Decor }
|
||||
|
||||
// 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 {
|
||||
location LOC
|
||||
look_at LAT
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle 16 + 2.71*NormClock
|
||||
angle 20 + 2.87*NormClock
|
||||
}
|
||||
|
||||
|
||||
22
orbite.pov
22
orbite.pov
@@ -10,7 +10,7 @@
|
||||
#include "all.inc"
|
||||
|
||||
// =======================================================
|
||||
#declare R_planete = 1.45;
|
||||
#declare R_planete = 1.85;
|
||||
|
||||
#declare Croute = object
|
||||
{
|
||||
@@ -51,7 +51,7 @@ union {
|
||||
}
|
||||
// =======================================================
|
||||
|
||||
#local RO = 4.15;
|
||||
#local RO = 5.39;
|
||||
#local CK = NormClock * 13.37;
|
||||
|
||||
#declare PosX = RO * sin(CK);
|
||||
@@ -67,19 +67,27 @@ object { HexaCone ()
|
||||
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 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
|
||||
rotate y*CK*99.22 translate <PosX, PosY, PosZ>
|
||||
}
|
||||
|
||||
object { Planete rotate (-clock*0.21)*y }
|
||||
light_source { <23, 6, 15>, rgb <0.77, 0.79, 0.80> }
|
||||
object { Planete rotate (-clock*0.31)*y }
|
||||
light_source { <23, 10, 15>, rgb <0.77, 0.79, 0.80> }
|
||||
|
||||
// -------------------------------------------------------------
|
||||
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>
|
||||
right <image_width/image_height, 0, 0>
|
||||
#if (0)
|
||||
@@ -87,6 +95,6 @@ camera {
|
||||
aperture 0.046
|
||||
blur_samples 30
|
||||
#end
|
||||
angle 55
|
||||
angle 57
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ object { Le_Decor }
|
||||
|
||||
// =======================================================
|
||||
|
||||
#declare CK = 1.3 + (2.79 * Cos_01(NormClock));
|
||||
#declare CK = 1.97 + (2.72 * Cos_01(NormClock));
|
||||
|
||||
#declare CamX = 1.22;
|
||||
#declare CamX = 1.72;
|
||||
#declare CamY = 7 + (4*Cos_01(NormClock));
|
||||
|
||||
#declare LatX = 20 * cos(CK*1.08);
|
||||
@@ -31,5 +31,5 @@ camera {
|
||||
location <CamX, CamY, 0>
|
||||
look_at <LatX, LatY, LatZ>
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle 71 + (NormClock * 10)
|
||||
angle 65 + (NormClock * 15)
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ object { HexaCone () translate <PosX, PosY, PosZ> }
|
||||
|
||||
|
||||
/* XXX this two object in dynamic.inc ??? */
|
||||
object { HexaCone () translate <PosX+2.96, PosY+3.22, PosZ-19.5> }
|
||||
object { HexaBenz () translate <PosX-1.96, PosY+2.82, PosZ-17.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 { Le_Decor }
|
||||
|
||||
@@ -41,7 +41,7 @@ light_source {
|
||||
radius .044
|
||||
falloff 2
|
||||
tightness 3
|
||||
point_at <PosX, PosY-0.20, PosZ>
|
||||
point_at <PosX, PosY-0.10, PosZ>
|
||||
}
|
||||
#end
|
||||
|
||||
|
||||
38
patrouille.pov
Normal file
38
patrouille.pov
Normal 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
|
||||
}
|
||||
|
||||
/* =============================================================== */
|
||||
@@ -33,10 +33,10 @@ object { Le_Decor }
|
||||
|
||||
// object { Repere scale 3 translate <SzSol, 2, SzSol> }
|
||||
|
||||
#local DistCam = 390;
|
||||
#local CK = -1.101 - (0.051 * NormClock);
|
||||
#local DistCam = 460 + (16 * NormClock);
|
||||
#local CK = -1.71 - (0.039 * NormClock);
|
||||
#declare CamX = DistCam * sin(CK);
|
||||
#declare CamY = 28;
|
||||
#declare CamY = 28 + NormClock;
|
||||
#declare CamZ = DistCam * cos(CK);
|
||||
|
||||
camera {
|
||||
@@ -46,5 +46,5 @@ camera {
|
||||
// focal_point <2, 1, 12>
|
||||
// aperture 0.046
|
||||
// blur_samples 30
|
||||
angle 4.0
|
||||
angle 3.5
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* H E X A C O N E - S C E N E
|
||||
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
||||
* The first one...
|
||||
*/
|
||||
|
||||
#version 3.7;
|
||||
@@ -14,17 +15,17 @@
|
||||
|
||||
object { Le_Decor }
|
||||
|
||||
#declare CK = 144 + (clock * 0.27);
|
||||
#declare CK = 144 + (clock * 0.25);
|
||||
|
||||
#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 LatZ = 2.45 + (0.9 * Cos_010(NormClock));
|
||||
#declare LatY = 2.45 + (1.47 * Cos_010(NormClock));
|
||||
|
||||
camera {
|
||||
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>
|
||||
// focal_point Lat
|
||||
// aperture 0.046
|
||||
|
||||
12
survol.pov
12
survol.pov
@@ -12,24 +12,24 @@
|
||||
|
||||
object { Le_Decor }
|
||||
|
||||
|
||||
// XXX instrumenter la caméra serait un GROS plus !!!
|
||||
// =======================================================
|
||||
|
||||
#declare Debut = <-3, 89, 188> ;
|
||||
#declare Fin = < 2, 91, -25> ;
|
||||
#declare Debut = <-33, 89, 289> ;
|
||||
#declare Fin = < 36, 78, -2> ;
|
||||
#declare Pos = sqrt(NormClock);
|
||||
#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 LatCam = PosCam + <LatX, -95, LatZ>;
|
||||
|
||||
// object { Repere scale 40 translate LatCam + y*5 }
|
||||
// object { Repere scale 20 translate LatCam + y*5 }
|
||||
|
||||
camera {
|
||||
location PosCam
|
||||
look_at LatCam
|
||||
right <image_width/image_height, 0, 0>
|
||||
angle 72
|
||||
angle 64
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ C'est le directeur de la production, le grand
|
||||
[script](./linkfarmer.sh)
|
||||
d'assemblage des séquences avec générique et intertitres.
|
||||
Hélas, il n'est pas encore configurable. Mais c'est
|
||||
en projet pour janvier 2026 ?
|
||||
en projet pour juin 2026 ?
|
||||
|
||||
## Encoding
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ SEQ="essai"
|
||||
if [ $# == 1 ] ; then
|
||||
SEQ=$1
|
||||
fi
|
||||
echo "[$SEQ] going EGA" | tee -a WS/log
|
||||
# echo "[$SEQ] going EGA" | tee -a WS/log
|
||||
|
||||
debut=$(date +%s)
|
||||
|
||||
@@ -35,4 +35,4 @@ done
|
||||
ff_encodage "EGA/" "ega-$SEQ.mp4"
|
||||
|
||||
fin=$(date +%s)
|
||||
echo "$SEQ -> ega" $(( fin-debut )) "secondes" >> WS/log
|
||||
echo "$SEQ -> ega" $(( fin-debut )) "secondes"
|
||||
|
||||
@@ -11,9 +11,9 @@ if [ $# == 1 ] ; then
|
||||
SEQ=$1
|
||||
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 \
|
||||
-delay 7 \
|
||||
|
||||
@@ -41,8 +41,8 @@ FILMNAME="$2"
|
||||
# echo "Encoding $SRCDIR to $FILMNAME" | tee -a WS/log
|
||||
ffmpeg -nostdin \
|
||||
-y -r 30 -f image2 -i frames/${SRCDIR}/%05d.png \
|
||||
-metadata artist='--[ tTh ]--' \
|
||||
-metadata title='-- HexaCone --' \
|
||||
-metadata artist='--[ tTh des Bourtoulots ]--' \
|
||||
-metadata title='--[ la famille HexaCone ]--' \
|
||||
-c:v libx264 \
|
||||
-pix_fmt yuv420p \
|
||||
-tune film \
|
||||
|
||||
@@ -36,16 +36,16 @@ SRC="frames/$1"
|
||||
local INTER="/dev/shm/tmp-intertitre.png"
|
||||
tools/plot-timing.sh $1
|
||||
|
||||
local NBRE=55
|
||||
local NBRE=78
|
||||
|
||||
convert "WS/negatif.png" \
|
||||
-gravity north \
|
||||
-font $FONTE \
|
||||
-pointsize 100 \
|
||||
-pointsize 108 \
|
||||
-kerning 8 \
|
||||
-fill $TEXTCOL \
|
||||
-strokewidth 2 -stroke $STROKOL \
|
||||
-annotate +0+530 "$1" \
|
||||
-strokewidth 3 -stroke $STROKOL \
|
||||
-annotate +0+330 "$1" \
|
||||
${INTER}
|
||||
|
||||
for foo in $(seq 0 $NBRE)
|
||||
@@ -80,7 +80,7 @@ local NBRE=300
|
||||
local SRC="frames/hexacone/00199.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)
|
||||
do
|
||||
@@ -103,13 +103,13 @@ echo
|
||||
# -------------------------------------------------------
|
||||
faire_la_fin ()
|
||||
{
|
||||
local NBRE=160
|
||||
local NBRE=180
|
||||
datetime=$(LANG=fr date -u +"%Y/%m/%d %H:%M")
|
||||
echo " $datetime" | tee -a WS/log
|
||||
|
||||
local SRC="frames/escadrille/00399.png"
|
||||
local GRAY="/dev/shm/tmp-titre.png"
|
||||
convert -colorspace gray -colors 23 $SRC $GRAY
|
||||
local SRC="frames/patrouille/00165.png"
|
||||
local GRAY="/dev/shm/tmp-fin.png"
|
||||
convert -colorspace gray -colors 90 $SRC $GRAY
|
||||
|
||||
for foo in $(seq 0 $NBRE)
|
||||
do
|
||||
@@ -130,6 +130,7 @@ do
|
||||
${TMP}
|
||||
# identify ${TMP}
|
||||
copy_a_file ${TMP}
|
||||
|
||||
printf "."
|
||||
done
|
||||
echo
|
||||
@@ -142,11 +143,15 @@ rm -f frames/Spool/*.png
|
||||
|
||||
faire_le_titre
|
||||
|
||||
linkfarm approche
|
||||
linkfarm hexacone
|
||||
linkfarm remote
|
||||
linkfarm hexabenz
|
||||
linkfarm splined
|
||||
linkfarm patrouille # new St Valentine 2026
|
||||
linkfarm hexawood
|
||||
linkfarm escadrille
|
||||
linkfarm survol
|
||||
linkfarm around # new 26 jan 2026
|
||||
linkfarm cutoff
|
||||
linkfarm panoramic
|
||||
linkfarm topview
|
||||
@@ -157,14 +162,12 @@ linkfarm carto
|
||||
linkfarm circular
|
||||
linkfarm bubblecut
|
||||
linkfarm orbite
|
||||
linkfarm hexacone
|
||||
linkfarm remote
|
||||
linkfarm essai
|
||||
|
||||
tools/plot-timing.sh
|
||||
faire_la_fin
|
||||
|
||||
ff_encodage Spool full.mp4
|
||||
ff_encodage Spool the-hexacone-family.mp4
|
||||
|
||||
nb=$(( $IDX - 1 ))
|
||||
echo "linkfarmed $nb files" | tee -a WS/log
|
||||
|
||||
@@ -17,7 +17,7 @@ echo "$0 $SEQNAME from $START" >> WS/log
|
||||
|
||||
DIMS="-W$Img_Width -H$Img_Height"
|
||||
NBFR=" Declare=NbFrames=$NBFRAMES "
|
||||
POVOPT="+q9 +A0.02 -d ${DIMS} ${NBFR} -WT5"
|
||||
POVOPT="+q9 +A0.02 -d ${DIMS} ${NBFR} -WT4"
|
||||
echo $NBFR "frames."
|
||||
echo $POVOPT ; echo ; sleep 2
|
||||
|
||||
@@ -49,11 +49,11 @@ do
|
||||
-kerning 3 \
|
||||
-fill ${TEXTCOL} \
|
||||
-strokewidth 2 -stroke $STROKOL \
|
||||
-gravity north \
|
||||
-gravity south \
|
||||
-annotate +0+5 "$txt" \
|
||||
${img}
|
||||
fin=$(date +%s)
|
||||
echo
|
||||
echo ; sleep 1
|
||||
printf "%-12s %5d %5d\n" \
|
||||
${SEQNAME} $frame $(( fin-debut )) | \
|
||||
tee -a WS/mp4.timing
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
source tools/config.sh
|
||||
source tools/fonctions.sh
|
||||
|
||||
echo "MKSEX ( $* )" | tee -a WS/log
|
||||
sleep 1
|
||||
|
||||
for foo in $*
|
||||
do
|
||||
|
||||
@@ -12,10 +15,10 @@ do
|
||||
tools/build-gif89a.sh $foo
|
||||
else
|
||||
echo "+++ Beurking on $foo" | tee -a WS/log
|
||||
sleep 10
|
||||
sleep 30
|
||||
fi
|
||||
|
||||
visual_sleep "next render is comming" 30
|
||||
visual_sleep "next render is comming" 20
|
||||
|
||||
done
|
||||
|
||||
|
||||
43
tools/motionblur.sh
Executable file
43
tools/motionblur.sh
Executable 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
|
||||
|
||||
# -------------------------------------------------------
|
||||
24
topview.pov
24
topview.pov
@@ -10,24 +10,18 @@
|
||||
#declare NO_DYNAMIC = 0;
|
||||
#include "all.inc"
|
||||
|
||||
|
||||
/* XXX
|
||||
#declare TrX = 1.84 * sqrt(NormClock);
|
||||
#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 }
|
||||
*/
|
||||
|
||||
/*
|
||||
* XXX
|
||||
* why this two moving hexathings are not in "dynamic.inc" ?
|
||||
*/
|
||||
object { HexaCone () rotate z*9.1 translate <7, 3+NormClock, -8> }
|
||||
object { HexaBenz () translate <-9+NormClock, 2, -6> }
|
||||
|
||||
/*
|
||||
* nouveau 11 fevrier 2025
|
||||
*/
|
||||
#declare A = <-21, -0.9, (SzSol/2)+9>;
|
||||
#declare B = < 33, -0.7, (SzSol/2)+7>;
|
||||
#declare A = <-29, -0.5, (SzSol/2)+9>;
|
||||
#declare B = < 36, -0.7, (SzSol/2)+7>;
|
||||
#declare P = Interpolate(A, B, NormClock);
|
||||
object { HexaWood translate P }
|
||||
|
||||
@@ -35,15 +29,15 @@ object { HexaWood translate P }
|
||||
|
||||
object { Le_Decor }
|
||||
|
||||
#declare CamY = 36 - (21.36 * Cos_01(NormClock));
|
||||
#declare CamY = 47 - (9.50 * Cos_01(NormClock));
|
||||
#declare LatY = -4 + ( 2.12 * NormClock);
|
||||
|
||||
camera {
|
||||
location <-3.60, CamY, 10.09>
|
||||
look_at <0, LatY, 0>
|
||||
look_at <0.6, LatY, 0>
|
||||
right <image_width/image_height, 0, 0>
|
||||
// focal_point <2, 1, 12>
|
||||
// aperture 0.046
|
||||
// blur_samples 30
|
||||
angle 45 + (52*NormClock)
|
||||
angle 45 + (65*NormClock)
|
||||
}
|
||||
|
||||
18
trident.inc
18
trident.inc
@@ -5,6 +5,10 @@
|
||||
#declare Trid_length = 2;
|
||||
|
||||
// ------------------------------------------------------
|
||||
/*
|
||||
* 2026/01/15 : this object is malformed,
|
||||
* please correct it as soon as possible.
|
||||
*/
|
||||
#declare Trid_cone = object
|
||||
{
|
||||
merge {
|
||||
@@ -16,7 +20,7 @@ merge {
|
||||
#macro Trid_A_cone ()
|
||||
difference {
|
||||
object { Trid_cone }
|
||||
object { Trid_cone translate -y*0.001 }
|
||||
object { Trid_cone translate -y*0.06 }
|
||||
#local Foo = rand(Rng1);
|
||||
#if (Foo < 0.25) texture { T_Brass_2C }
|
||||
#elseif (Foo < 0.50) texture { tPlasticOrange }
|
||||
@@ -53,7 +57,7 @@ merge {
|
||||
#local R = rand(Rng1);
|
||||
#if ( R < 0.333) texture { T_Chrome_1C }
|
||||
#elseif ( R < 0.666) texture { T_Silver_1C }
|
||||
#else texture { T_WIP_rasta }
|
||||
#else texture { T_WIP_rasta scale 3 }
|
||||
#end
|
||||
}
|
||||
#undef L
|
||||
@@ -65,7 +69,7 @@ union {
|
||||
object { Trid_A_cone () scale 0.89 translate <E, -0.05, 0> }
|
||||
cylinder { 0, x*E, 0.008 scale <1, 5, 1> }
|
||||
#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 }
|
||||
#end
|
||||
#undef E
|
||||
@@ -74,8 +78,9 @@ union {
|
||||
// ------------------------------------------------------
|
||||
#macro Trid_A_tail ()
|
||||
union {
|
||||
#for (A, 0, 360, 120)
|
||||
object { Trid_A_ailette () rotate (A+270)*y }
|
||||
#for (A, 0, 359, 120)
|
||||
#local RY = A + 27*rand(Rng1);
|
||||
object { Trid_A_ailette () rotate RY*y }
|
||||
#end // for
|
||||
}
|
||||
#end
|
||||
@@ -85,12 +90,11 @@ union {
|
||||
union {
|
||||
object { Trid_A_head () translate y*0.83 }
|
||||
object { Trid_A_body () }
|
||||
object { Trid_A_tail () translate -y*0.6 }
|
||||
object { Trid_A_tail () translate -y*0.60 }
|
||||
// object { Repere translate <0.1, 0, 0.1> }
|
||||
}
|
||||
#end
|
||||
// ------------------------------------------------------
|
||||
#debug "+++++++++++++++++++++ trident loaded\n"
|
||||
// ------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
12
trident.pov
12
trident.pov
@@ -16,13 +16,19 @@ object { Le_Decor }
|
||||
// object { Repere scale 2 }
|
||||
|
||||
#declare CK = 0.8 - (NormClock * 0.71);
|
||||
#declare DX_cam = 6.9 * cos(CK);
|
||||
#declare DZ_cam = 5.4 * sin(CK);
|
||||
#if (NormClock < 0.5000)
|
||||
#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;
|
||||
|
||||
camera {
|
||||
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>
|
||||
|
||||
// focal_point <0.37, 0.0, 0>
|
||||
|
||||
101
xperiment.inc
101
xperiment.inc
@@ -4,6 +4,58 @@
|
||||
* 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
|
||||
@@ -11,14 +63,15 @@
|
||||
#declare Patrouille = object
|
||||
{
|
||||
union {
|
||||
#local EX = 2.4;
|
||||
#local EZ = 2.3;
|
||||
#local EX = 1.9;
|
||||
#local EZ = 2.0 + (0.5*sin(NormClock*2));
|
||||
object { Trident_A () rotate x*87 }
|
||||
object { HexaBenz () translate <-EX, 0, -EZ> }
|
||||
object { HexaCone () translate < EX, -0.2, -EZ> }
|
||||
object { HexaCone () translate < EX, -0.4, -EZ> }
|
||||
object { HexaStar rotate y*90 translate <-EX*2, 0, -EZ*2> }
|
||||
object { HexaCone () translate < EX*2, -0.2, -EZ*2> }
|
||||
object { HexaCone () translate < EX*2, 0.3, -EZ*2> }
|
||||
}
|
||||
rotate y*90 // pour pointer vers X
|
||||
}
|
||||
|
||||
/* =============================================================== */
|
||||
@@ -44,7 +97,7 @@ object {
|
||||
/* le corps */
|
||||
merge {
|
||||
#local L2 = Longueur / 2;
|
||||
#local R = 0.27;
|
||||
#local R = 0.29;
|
||||
cylinder { <L2, 0, 0>, <-L2, 0, 0>, R }
|
||||
sphere { <0, 0, 0>, R
|
||||
scale <3, 1, 1>
|
||||
@@ -62,9 +115,9 @@ object {
|
||||
scale <2.5, 1, 1> translate x*L2*0.75
|
||||
}
|
||||
#local R = rand(Rng1);
|
||||
#if (R < 0.333) texture { T_Brass_2C }
|
||||
#elseif (R < 0.25) texture { GoldDark }
|
||||
#elseif (R < 0.50) texture { T_Chrome_5A }
|
||||
#if (R < 0.27) texture { T_Brass_2C }
|
||||
#elseif (R < 0.56) texture { GoldDark }
|
||||
#elseif (R < 0.70) texture { T_Chrome_5A }
|
||||
#else texture { T_Gold_3C }
|
||||
#end
|
||||
}
|
||||
@@ -84,6 +137,38 @@ union {
|
||||
}
|
||||
#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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user