Compare commits
107 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
55a174f4f2 | ||
![]() |
7d6e50cb7d | ||
![]() |
d620783ab8 | ||
![]() |
898828b49d | ||
![]() |
11717a4f6a | ||
![]() |
879dab3239 | ||
![]() |
cf0bcb9cab | ||
![]() |
32606a5a18 | ||
![]() |
abaa6437fd | ||
![]() |
f28b260f8d | ||
![]() |
540c16b47f | ||
![]() |
29d23630b4 | ||
![]() |
d25c217e6a | ||
![]() |
d30036415a | ||
![]() |
bf7550e52e | ||
![]() |
5d105ccde9 | ||
![]() |
bbd9cf40e5 | ||
![]() |
fe94d3036e | ||
![]() |
3510b57523 | ||
![]() |
71cce4f60c | ||
![]() |
3535e16a20 | ||
![]() |
92a015b46a | ||
![]() |
435d5b56b3 | ||
![]() |
3fd4ce827f | ||
![]() |
9cb2d9f123 | ||
![]() |
9a3b4807e4 | ||
![]() |
3ce1994e97 | ||
![]() |
03c8c1cbd8 | ||
![]() |
3143bb87ba | ||
![]() |
c2731bbfc2 | ||
![]() |
2a3b3a65b4 | ||
![]() |
89e4e1420e | ||
![]() |
41af9f42d2 | ||
![]() |
5de41466dd | ||
![]() |
5c3a56bbef | ||
![]() |
1b50ba7616 | ||
![]() |
802a4ab8c2 | ||
![]() |
ffd73e832c | ||
![]() |
c82f6f4de5 | ||
![]() |
a9ec016184 | ||
![]() |
134fd180c1 | ||
![]() |
5361536d30 | ||
![]() |
ff733efaa7 | ||
![]() |
363274e273 | ||
![]() |
3c4012945f | ||
![]() |
f338b1e925 | ||
![]() |
05ab348be3 | ||
![]() |
80cd442a73 | ||
![]() |
34e3ef5bf4 | ||
![]() |
a8009c0803 | ||
![]() |
ebe9eba8da | ||
![]() |
bb68a37188 | ||
![]() |
b072c816a4 | ||
![]() |
b385c14f79 | ||
![]() |
c03f402b4c | ||
![]() |
095dfbdd39 | ||
![]() |
8e7ccfda66 | ||
![]() |
04abd21718 | ||
![]() |
90eb52f548 | ||
![]() |
455578dc33 | ||
![]() |
ba9c8e47c7 | ||
![]() |
afbeaaf887 | ||
![]() |
c65090e4a2 | ||
![]() |
f417711da3 | ||
![]() |
8bcb56e9ea | ||
![]() |
db5eedffe1 | ||
![]() |
532560518c | ||
![]() |
479e4ee18d | ||
![]() |
3ff83f012d | ||
![]() |
cd65855f2c | ||
![]() |
14a03b78eb | ||
![]() |
39adef1e90 | ||
![]() |
a95ff22653 | ||
![]() |
e7ccaf8089 | ||
![]() |
14c6cbb818 | ||
![]() |
f9755cf0a2 | ||
![]() |
7e7f9fbe40 | ||
![]() |
6407a3ed3a | ||
![]() |
701b6187a5 | ||
![]() |
6f637ca79a | ||
![]() |
97950f2483 | ||
![]() |
15eedb2034 | ||
![]() |
f487f35ccd | ||
![]() |
66f54c283d | ||
![]() |
955af75151 | ||
![]() |
e3b13c0631 | ||
![]() |
72d99f9400 | ||
![]() |
f737579090 | ||
![]() |
46bb5ee3da | ||
![]() |
8b5dbb7a99 | ||
![]() |
3117141b52 | ||
![]() |
aed3fa6cf7 | ||
![]() |
3ab1079214 | ||
![]() |
32f4b403e2 | ||
![]() |
949d5b328d | ||
![]() |
1944fdd337 | ||
![]() |
b344d0b762 | ||
![]() |
9962480356 | ||
![]() |
8e02e9e466 | ||
![]() |
45ac640ba6 | ||
![]() |
27891b70dc | ||
![]() |
05f40fae75 | ||
![]() |
070679ec5b | ||
![]() |
1eac9d4cfc | ||
![]() |
cf899967ce | ||
![]() |
af4f9fc282 | ||
![]() |
b9299568f4 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -9,6 +9,8 @@ datas/*.webp
|
|||||||
|
|
||||||
WS/*timing
|
WS/*timing
|
||||||
WS/log*
|
WS/log*
|
||||||
|
WS/*.done
|
||||||
|
WS/*.log
|
||||||
|
|
||||||
*.png
|
*.png
|
||||||
*.gif
|
*.gif
|
||||||
|
37
Makefile
37
Makefile
@ -1,20 +1,31 @@
|
|||||||
|
|
||||||
DIMS = -W1600 -H1200
|
DIMS = -W1600 -H1200
|
||||||
POVOPT = +q9 +a0.02 -d
|
# POVOPT = +q9 +a0.02 -d
|
||||||
POVDEP = contexte.inc elements.inc hexabenz.inc \
|
POVOPT = +q9 +A Declare=NbFrames=400 -d
|
||||||
globals.inc datas/hf.png
|
POVDEP = contexte.inc hexacone.inc hexabenz.inc \
|
||||||
|
globals.inc hexawood.inc datas/hf.png \
|
||||||
|
dynamic.inc trident.inc groundbase.inc \
|
||||||
|
gadgets.inc
|
||||||
|
|
||||||
CK=180
|
CK=180
|
||||||
|
|
||||||
|
|
||||||
PNG: essai.png scene.png topview.png passage.png \
|
PNG: essai.png scene.png topview.png passage.png \
|
||||||
orbite.png hexabenz.png escadrille.png \
|
orbite.png hexabenz.png escadrille.png \
|
||||||
hexacone.png
|
hexacone.png remote.png survol.png cutoff.png \
|
||||||
|
carto.png hexawood.png bubblecut.png \
|
||||||
|
circular.png
|
||||||
|
echo "make PNG ck=$(CK) done" >> WS/log
|
||||||
|
|
||||||
|
|
||||||
topview.png: topview.pov Makefile $(POVDEP)
|
topview.png: topview.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
cutoff.png: cutoff.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
bubblecut.png: bubblecut.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
essai.png: essai.pov Makefile $(POVDEP)
|
essai.png: essai.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
@ -24,6 +35,9 @@ hexabenz.png: hexabenz.pov Makefile $(POVDEP)
|
|||||||
hexacone.png: hexacone.pov Makefile $(POVDEP)
|
hexacone.png: hexacone.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
hexawood.png: hexawood.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
passage.png: passage.pov Makefile $(POVDEP)
|
passage.png: passage.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
@ -36,4 +50,17 @@ scene.png: scene.pov Makefile $(POVDEP)
|
|||||||
escadrille.png: escadrille.pov Makefile $(POVDEP)
|
escadrille.png: escadrille.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
remote.png: remote.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
survol.png: survol.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
carto.png: carto.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
circular.png: circular.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,12 +9,15 @@ et vous pouvez
|
|||||||
suivre son évolution par l'intermédiaire de
|
suivre son évolution par l'intermédiaire de
|
||||||
[Mastodon](https://mastodon.tetaneutral.net/@tth)
|
[Mastodon](https://mastodon.tetaneutral.net/@tth)
|
||||||
avec le croisimot `#hexacone`.
|
avec le croisimot `#hexacone`.
|
||||||
|
Quelques images sont disponibles sur mon serveur de
|
||||||
|
[cuisine](http://maison.tth.netlib.re/pov/hexacone.html).
|
||||||
|
|
||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
Avant toute chose, il faut avoir installé les logiciels
|
Avant toute chose, il faut avoir installé les logiciels
|
||||||
suivants : bash, awk, gnuplot, imagemagick, et, bien
|
suivants : bash, awk, gnuplot, imagemagick, et, bien
|
||||||
entendu, [povray](https://povray.org/).
|
entendu, [povray](https://povray.org/).
|
||||||
|
Une bonne maitrise des scripts shell sera un plus.
|
||||||
|
|
||||||
## Utilisation
|
## Utilisation
|
||||||
|
|
||||||
@ -24,8 +27,8 @@ par un classique [`Makefile`](./Makefile) et les séquences animées
|
|||||||
produites par un [script shell](./mkloop.sh).
|
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 : d'un coté `./frames/<name>` pour stocker les images calculées :
|
répertoires : d'un coté `./frames/<name>` pour stocker les images calculées et `./frames/Spool` pour l'assemblage
|
||||||
|
de la vidéo intégrale :
|
||||||
|
|
||||||
```
|
```
|
||||||
frames/
|
frames/
|
||||||
@ -39,6 +42,8 @@ répertoires : d'un coté `./frames/<name>` pour stocker les images calculées :
|
|||||||
```
|
```
|
||||||
et de l'autre coté `./WS/` pour ranger les fichiers de travail.
|
et de l'autre coté `./WS/` pour ranger les fichiers de travail.
|
||||||
|
|
||||||
|
À vous de jouer maintenant.
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
|
|
||||||
* 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/) ;
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
|
# Workspace
|
||||||
|
|
||||||
|
For intermediates files, and timing log.
|
||||||
workspace
|
|
||||||
|
62
bubblecut.pov
Normal file
62
bubblecut.pov
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - C U T O F F
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#declare POS_Cutoff = <-24, 0, -7>;
|
||||||
|
|
||||||
|
#local TY = 1.55;
|
||||||
|
|
||||||
|
#declare Position = <0.50, -0.70, 0.75>;
|
||||||
|
#declare Rayon = 0.70 + 1.50 * NormClock; // rayon de la sphere
|
||||||
|
// de découpe
|
||||||
|
#debug concat("Rayon decoupe = ", str(Rayon, 8, 3), "\n\n")
|
||||||
|
|
||||||
|
difference {
|
||||||
|
object { HexaBenz () }
|
||||||
|
sphere { Position, Rayon }
|
||||||
|
translate y*TY + POS_Cutoff
|
||||||
|
}
|
||||||
|
|
||||||
|
sphere { Position, 0.020 translate y*TY + POS_Cutoff
|
||||||
|
texture { T_WIP_alert } }
|
||||||
|
|
||||||
|
/* this one is for debugging */
|
||||||
|
// object { OpenBox translate y*TY + POS_Cutoff }
|
||||||
|
// object { Repere translate y*2.8 + POS_Cutoff }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
light_source {
|
||||||
|
<-24, 0.4, -1>
|
||||||
|
colour Orange
|
||||||
|
parallel
|
||||||
|
point_at y*TY + POS_Cutoff
|
||||||
|
}
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#local CamX = -27.4 + (3.29*Cos_01(NormClock));
|
||||||
|
#local CamY = 2.7 - (0.24*sqrt(NormClock));
|
||||||
|
#local CamZ = -0.85 + (2.02*NormClock);
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <CamX, CamY, CamZ>
|
||||||
|
look_at <0, 1.5, 0> + POS_Cutoff
|
||||||
|
angle 35 - 5*Cos_01(NormClock)
|
||||||
|
}
|
38
carto.pov
Normal file
38
carto.pov
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E
|
||||||
|
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*
|
||||||
|
* cartographie de l'hexamonde
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// dessiner une grille
|
||||||
|
|
||||||
|
#for (Foo, -150, 150, 10)
|
||||||
|
cylinder { <-150, 0, Foo>, <150, 0, Foo>, 0.10 }
|
||||||
|
cylinder { <Foo, 0, -150>, <Foo, 0, 150>, 0.10 }
|
||||||
|
#end
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
object { Repere scale 10 translate y*7 }
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <45, 159+(26*NormClock), 18-(42*NormClock)>
|
||||||
|
look_at <0, 1.18, 0.17 + (2.9*NormClock)>
|
||||||
|
angle 50
|
||||||
|
}
|
||||||
|
|
40
circular.pov
Normal file
40
circular.pov
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "gadgets.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#declare R_circ = R_circular;
|
||||||
|
#declare CK = NormClock * 3.141592654;
|
||||||
|
|
||||||
|
#declare CamX = R_circ * cos(CK);
|
||||||
|
#declare CamY = 3.08 + abs(sin(CK/4.00));
|
||||||
|
#declare CamZ = R_circ * sin(CK);
|
||||||
|
|
||||||
|
#declare LatX = R_circ * 0.95 * cos(CK + 0.09);
|
||||||
|
#declare LatY = 3;
|
||||||
|
#declare LatZ = R_circ * 0.95 * sin(CK + 0.09);
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <CamX, CamY, CamZ>
|
||||||
|
look_at <LatX, LatY, LatZ>
|
||||||
|
angle 66
|
||||||
|
}
|
||||||
|
|
292
contexte.inc
292
contexte.inc
@ -4,8 +4,134 @@
|
|||||||
|
|
||||||
/* voir aussi le fichier 'globals.inc' */
|
/* voir aussi le fichier 'globals.inc' */
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ======================================================= */
|
||||||
|
|
||||||
|
#include "groundbase.inc"
|
||||||
|
|
||||||
|
#include "gadgets.inc"
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
/*
|
||||||
|
* essai du 12 mars 2025
|
||||||
|
*/
|
||||||
|
|
||||||
|
#declare RedB_0_X = 19;
|
||||||
|
#declare RedB_0_Z = 29;
|
||||||
|
|
||||||
|
#declare RedB_1_X = -24;
|
||||||
|
#declare RedB_1_Z = 7;
|
||||||
|
|
||||||
|
#declare Pos_RedB_0 = <RedB_0_X, 0, RedB_0_Z>;
|
||||||
|
#declare Pos_RedB_1 = <RedB_1_X, 0, RedB_1_Z>;
|
||||||
|
|
||||||
|
#macro RedBase_0 ( T )
|
||||||
|
difference {
|
||||||
|
#local R = 2.46;
|
||||||
|
cylinder { 0, y*0.40, R }
|
||||||
|
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)
|
||||||
|
#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> }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
// pigment { color Red*0.8 }
|
||||||
|
texture { T }
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
|
||||||
|
#macro GyroPhare_mat ()
|
||||||
|
union {
|
||||||
|
cylinder { 0, y*H_gyro, R_gyro }
|
||||||
|
intersection {
|
||||||
|
sphere { 0, R_gyro scale <1, 1.414, 1> }
|
||||||
|
box { <-1, 0, -1>, <1, 1.94, 1> }
|
||||||
|
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 }
|
||||||
|
#end
|
||||||
|
#undef R
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
#macro GyroPhare_lampe ()
|
||||||
|
union {
|
||||||
|
difference {
|
||||||
|
cylinder { 0, y*H_gylampe, R_gyro }
|
||||||
|
cylinder { y*0.01, y*(H_gylampe-0.01), R_gyro*0.97 }
|
||||||
|
#local WB = 0.017;
|
||||||
|
union {
|
||||||
|
box { <-1, 0.03, -WB>, <1, (H_gylampe-0.03), WB> }
|
||||||
|
box { <-WB, 0.03, -1>, <WB, (H_gylampe-0.03), 1> }
|
||||||
|
}
|
||||||
|
#undef WB
|
||||||
|
pigment { color Gray90 }
|
||||||
|
#local Ro = 0.5 + (2.0 * rand(Rng1));
|
||||||
|
#if (rand(Rng1) < 0.50)
|
||||||
|
#local Ro = -Ro;
|
||||||
|
#end
|
||||||
|
rotate y * Ro * clock
|
||||||
|
#undef Ro
|
||||||
|
}
|
||||||
|
light_source { y*0.10
|
||||||
|
rgb <0.8, 0.9, 0.999999999>
|
||||||
|
fade_distance 3.96
|
||||||
|
fade_power 1.55
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
#macro GyroPhare ()
|
||||||
|
union {
|
||||||
|
object { GyroPhare_mat () }
|
||||||
|
object { GyroPhare_lampe ()
|
||||||
|
// rotate y*rand(Rng1)*clock
|
||||||
|
translate y*(H_gyro+0.02) }
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
#macro Les_GyroPhares ()
|
||||||
|
union {
|
||||||
|
#local E = SzSol * 0.431;
|
||||||
|
#for (Idx, 0, 359, 60)
|
||||||
|
#local Ang = radians(Idx+9.33);
|
||||||
|
#local Dx = E * sin(Ang);
|
||||||
|
#local Dz = E * cos(Ang);
|
||||||
|
object { GyroPhare () translate <Dx, H_sol, Dz> }
|
||||||
|
#end
|
||||||
|
#undef E
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
/* ======================================================= */
|
||||||
|
/* 11 avril 2025, je pose un grand cercle d'hexapoles
|
||||||
|
*/
|
||||||
|
#declare Les_HexaPoles = object
|
||||||
|
{
|
||||||
|
|
||||||
|
union {
|
||||||
|
#for (Ang, 0, 359, 8)
|
||||||
|
#local De = 3.6 + (0.5*rand(Rng1));
|
||||||
|
#if (rand(Rng1) < 0.50)
|
||||||
|
#local E = R_circular + De;
|
||||||
|
#else
|
||||||
|
#local E = R_circular - De;
|
||||||
|
#end
|
||||||
|
#local Ra = radians(Ang);
|
||||||
|
#local Xp = E * cos(Ra);
|
||||||
|
#local Zp = E * sin(Ra);
|
||||||
|
object { HexaPole () translate <Xp, 0, Zp> }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ======================================================= */
|
||||||
#declare Rhxba = 0.30;
|
#declare Rhxba = 0.30;
|
||||||
#declare R2hxba = Rhxba * 0.48;
|
#declare R2hxba = Rhxba * 0.48;
|
||||||
|
|
||||||
@ -20,6 +146,7 @@ merge {
|
|||||||
sphere { 0, R2hxba translate < 0, E, 0> }
|
sphere { 0, R2hxba translate < 0, E, 0> }
|
||||||
sphere { 0, R2hxba translate < 0, 0, -E> }
|
sphere { 0, R2hxba translate < 0, 0, -E> }
|
||||||
sphere { 0, R2hxba translate < 0, 0, E> }
|
sphere { 0, R2hxba translate < 0, 0, E> }
|
||||||
|
#undef E
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,15 +154,15 @@ merge {
|
|||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
object { HexaBalls
|
object { HexaBalls
|
||||||
texture { Lightning1 scale 0.33 }
|
texture { Lightning1 scale 0.44 }
|
||||||
rotate <clock/3, clock/6, clock/9>
|
rotate <clock/3, clock/4, clock/9>
|
||||||
translate <5, -1.2+1.01*Cos_010(NormClock), 7>
|
translate <2, 1.11*Cos_010(NormClock), 4>
|
||||||
}
|
}
|
||||||
|
|
||||||
object { HexaBalls
|
object { HexaBalls
|
||||||
texture { Lightning2 scale 0.56 }
|
texture { Lightning2 scale 0.56 }
|
||||||
// rotate <-clock, clock*0.33333, clock>
|
rotate <-clock, clock*0.33333, clock*3>
|
||||||
translate <7, -1+0.89*Cos_010(NormClock), -6>
|
translate <4, 1.11*Cos_010(NormClock), -3>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -60,60 +187,102 @@ blob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================
|
/* ======================================================= */
|
||||||
|
|
||||||
#declare Le_Sol = object
|
/* ======================================================= */
|
||||||
|
|
||||||
|
#declare UnderHoles = array[6]
|
||||||
|
|
||||||
|
/*
|
||||||
|
* on rempli le tableau avec la place des trous
|
||||||
|
*/
|
||||||
|
#fopen Holes "WS/holes.log" write
|
||||||
|
#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);
|
||||||
|
#declare UnderHoles[Idx] = <Px, 0, Pz>;
|
||||||
|
#write (Holes, Idx, " ", Angle, " ", UnderHoles[Idx], "\n")
|
||||||
|
#end
|
||||||
|
#fclose Holes
|
||||||
|
|
||||||
|
#declare Underground = object
|
||||||
{
|
{
|
||||||
height_field {
|
difference {
|
||||||
png "datas/hf.png"
|
// plane { y, 0 }
|
||||||
smooth
|
#local Big = 300;
|
||||||
translate <-.5, 0, -.5>
|
box { <-Big, -0.15, -Big>, < Big, 0.0000, Big> }
|
||||||
scale <SzSol, 0.98, SzSol>
|
#undef Big
|
||||||
texture {
|
#for (Foo, 0, 5)
|
||||||
pigment {
|
cylinder { -y*5, y*5, 3.2 translate UnderHoles[Foo] }
|
||||||
// color DarkGreen
|
#end
|
||||||
image_map { png "datas/cmap.png" }
|
|
||||||
translate <-.5, 0, -.5>
|
|
||||||
scale <SzSol, 0.98, SzSol>
|
|
||||||
}
|
|
||||||
// normal { bumps 0.035 scale 0.186 }
|
|
||||||
finish { phong 0.125 }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
texture { T_Planete_B scale 0.42 }
|
||||||
|
/*
|
||||||
|
texture {
|
||||||
|
pigment { color Gray20 }
|
||||||
|
normal { bumps 0.38 scale 2.6 }
|
||||||
|
finish { phong 0.125 }
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
|
||||||
#declare Repere = object
|
#declare Repere = object
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
cylinder { 0, <1, 0, 0>, 0.008 pigment { color Red } }
|
#local R = 0.008;
|
||||||
cylinder { 0, <0, 0, 1>, 0.008 pigment { color Blue } }
|
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 } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
/*
|
||||||
|
* nouvel éclairage du 10 février 2025
|
||||||
|
*/
|
||||||
|
#declare Quad_lampe = object
|
||||||
|
{
|
||||||
|
light_source {
|
||||||
|
0
|
||||||
|
color White
|
||||||
|
fade_distance SzSol * 0.40
|
||||||
|
fade_power 1.22
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare QuadriLight = object
|
||||||
|
{
|
||||||
|
#local T = E_QuadriLight;
|
||||||
|
#local H = H_QuadriLight;
|
||||||
|
|
||||||
|
union {
|
||||||
|
object { Quad_lampe translate <-T, H, -T> }
|
||||||
|
object { Quad_lampe translate < T, H, -T> }
|
||||||
|
object { Quad_lampe translate <-T, H, T> }
|
||||||
|
object { Quad_lampe translate < T, H, T> }
|
||||||
|
}
|
||||||
|
rotate -19 * y
|
||||||
|
}
|
||||||
|
/* ======================================================= */
|
||||||
|
|
||||||
#declare Les_Lumieres = object
|
#declare Les_Lumieres = object
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
#if (1)
|
#if (1)
|
||||||
light_source {
|
light_source {
|
||||||
<0.3, 3.50, 2.8> color Gray90
|
<2.3, 5.50, 2.8> color Gray70
|
||||||
spotlight
|
spotlight
|
||||||
radius 14 falloff 10 tightness 10
|
radius 14 falloff 10 tightness 10
|
||||||
point_at <0, 0.95, 0.22222222>
|
point_at <0, 0.95, 0.22222222>
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if ( (clock>166) & (clock<213) )
|
|
||||||
light_source {
|
|
||||||
<2, 10.30, -2> color Yellow
|
|
||||||
spotlight
|
|
||||||
radius 12 falloff 20 tightness 10
|
|
||||||
point_at <-0.08, 0.80, 0.17>
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#if (1)
|
#if (1)
|
||||||
light_source {
|
light_source {
|
||||||
<-5, 5.60, 8>
|
<-5, 5.60, 18>
|
||||||
#if ( (clock > 290) & (clock<344) )
|
#if ( (clock > 290) & (clock<344) )
|
||||||
#local Couleur = rgb <0.20, 0.20, 0.90>;
|
#local Couleur = rgb <0.20, 0.20, 0.90>;
|
||||||
#else
|
#else
|
||||||
@ -125,23 +294,34 @@ union {
|
|||||||
point_at <0, 0.95, -0.22>
|
point_at <0, 0.95, -0.22>
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
#if (0)
|
||||||
|
light_source {
|
||||||
|
<-4, 54, -7>
|
||||||
|
colour Gray50
|
||||||
|
parallel
|
||||||
|
point_at 0
|
||||||
|
}
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
|
||||||
// #declare Le_Ciel = object
|
// #declare Le_Ciel = object
|
||||||
// {
|
// {
|
||||||
sky_sphere {
|
sky_sphere {
|
||||||
pigment {
|
pigment {
|
||||||
gradient y
|
gradient y
|
||||||
color_map {
|
color_map {
|
||||||
[ 0.2 color Gray10 ]
|
[ 0.2 color Gray20 ]
|
||||||
[ 0.4 color Gray60 ]
|
[ 0.4 color rgb <.7, .3, .5> ]
|
||||||
[ 0.7 color Black ]
|
[ 0.7 color Gray30 ]
|
||||||
[ 0.8 color White ]
|
[ 0.9 color rgb <.9, .6, .5> ]
|
||||||
[ 1.0 color Gray10 ]
|
[ 1.0 color Gray20 ]
|
||||||
}
|
}
|
||||||
turbulence 3.14159 + 0.91 * Cos_010(NormClock)
|
turbulence 3.14159 + 0.84 * Cos_010(NormClock)
|
||||||
scale 1.804
|
scale 1.600
|
||||||
// translate -1
|
// translate -1
|
||||||
}
|
}
|
||||||
#local Kem = 0.09;
|
#local Kem = 0.09;
|
||||||
@ -149,16 +329,34 @@ sky_sphere {
|
|||||||
}
|
}
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ======================================================= */
|
||||||
|
|
||||||
|
/* XXX XXX */
|
||||||
|
light_source {
|
||||||
|
<-4, 54, -17>
|
||||||
|
colour Gray40
|
||||||
|
parallel
|
||||||
|
point_at 0
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Et on rassemble tous les éléments...
|
* Et on rassemble tous les éléments...
|
||||||
*/
|
*/
|
||||||
#declare Le_Decor = object
|
#declare Le_Decor = object
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
object { Le_Sol }
|
object { Underground }
|
||||||
object { Les_Bibelots }
|
object { La_GroundBase }
|
||||||
object { Les_Lumieres }
|
object { RedBase_0 (T_Beton_1)
|
||||||
|
translate <RedB_0_X, 0, RedB_0_Z> }
|
||||||
|
object { RedBase_0 (T_Beton_2)
|
||||||
|
translate <RedB_1_X, 0, RedB_1_Z> }
|
||||||
|
// object { Les_Lumieres }
|
||||||
|
object { QuadriLight }
|
||||||
|
object { Les_GyroPhares () }
|
||||||
|
object { Les_HexaPoles }
|
||||||
|
object { Horloge rotate y*27 translate < 3, 0, -30> }
|
||||||
|
object { Chose translate <-25, 0, -31> }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
|
56
cutoff.pov
Normal file
56
cutoff.pov
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - C U T O F F
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#declare POS_Cutoff = <-24, 0, -7>;
|
||||||
|
|
||||||
|
#local TY = 1.5;
|
||||||
|
|
||||||
|
#declare Kbox = (2.03*NormClock);
|
||||||
|
difference {
|
||||||
|
object { HexaCone () }
|
||||||
|
box { -1, 1 translate z*Kbox }
|
||||||
|
translate y*TY + POS_Cutoff
|
||||||
|
}
|
||||||
|
|
||||||
|
// object { Repere scale 2 translate y*2.6 + POS_Cutoff }
|
||||||
|
|
||||||
|
/* this one is for debugging */
|
||||||
|
// object { OpenBox translate y*TY + POS_Cutoff }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
light_source {
|
||||||
|
<-24, 0.4, -1>
|
||||||
|
colour Orange
|
||||||
|
parallel
|
||||||
|
point_at y*TY + POS_Cutoff
|
||||||
|
}
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#local CamX = -25.4 + (2.39*Cos_01(NormClock));
|
||||||
|
#local CamY = 1.6 - (0.24*sqrt(NormClock));
|
||||||
|
#local CamZ = -1.85 + (4.02*NormClock);
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <CamX, CamY, CamZ>
|
||||||
|
look_at <0, 1.5, 0> + POS_Cutoff
|
||||||
|
angle 39 - 5*Cos_01(NormClock)
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
|
# statics datas
|
||||||
|
|
||||||
|
Things like `height_fields` or `image_map` files...
|
||||||
statics datas, like height-fields files...
|
|
||||||
|
|
||||||
|
108
dynamic.inc
Normal file
108
dynamic.inc
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gadgets.inc"
|
||||||
|
|
||||||
|
//
|
||||||
|
object { Les_Bibelots rotate y*clock translate UnderHoles[2] }
|
||||||
|
object { Les_Machins rotate -y*clock translate UnderHoles[3] }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* un hexabenz sur une base exterieure
|
||||||
|
*/
|
||||||
|
#declare BiBenz = object
|
||||||
|
{
|
||||||
|
#local K = 1.39;
|
||||||
|
union {
|
||||||
|
object { HexaBenz () rotate y*90 translate <-K, 1.75, 0> }
|
||||||
|
object { HexaBenz () translate < K, 1.71, 0> }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object { BiBenz rotate -y*(clock*0.21) translate Pos_RedB_0 }
|
||||||
|
|
||||||
|
#declare BiCone = object
|
||||||
|
{
|
||||||
|
#local K = 1.27;
|
||||||
|
union {
|
||||||
|
object { HexaCone () rotate y*90 translate <-K, 1.7, 0> }
|
||||||
|
object { HexaCone () rotate <4, 1, 6> translate < K, 1.9, 0> }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object { BiCone rotate -y*(Cos_010(NormClock)*666) translate Pos_RedB_1 }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* on fait passer un hexatruc dans le ciel
|
||||||
|
*/
|
||||||
|
#declare A = <-SzSol, 22, -10>;
|
||||||
|
#declare B = < SzSol+4, 18, -11>;
|
||||||
|
#declare P = Interpolate(A, B, NormClock);
|
||||||
|
object { HexaCone () rotate y*((12*NormClock)+80) translate P }
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* le vaisseau "trident" passe a travers les
|
||||||
|
* trous de l'underground
|
||||||
|
*/
|
||||||
|
#fopen Trid "WS/tridents.log" write
|
||||||
|
#for (Foo, 0, 5)
|
||||||
|
#declare Dy = rand(Rng1)-3+(11*NormClock);
|
||||||
|
#declare Tr = UnderHoles[Foo] + <0, Dy, 0>;
|
||||||
|
#declare Ry = ((rand(Rng1)-NormClock)*87);
|
||||||
|
#write (Trid, Foo, " ", NormClock, " ", Dy, " ",
|
||||||
|
Ry, " ", Tr, "\n")
|
||||||
|
object { Trident_A () rotate y*Ry translate Tr }
|
||||||
|
#end
|
||||||
|
#fclose Trid
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ----------------------------
|
||||||
|
* echange hexacone et hexabenz
|
||||||
|
*/
|
||||||
|
#declare HC_A = <0.03, 2.18, 0.17>;
|
||||||
|
#declare HC_B = <3.00, 11.07, 11.09>;
|
||||||
|
#declare HC_P = Interpolate(HC_A, HC_B, Cos_01(NormClock));
|
||||||
|
#declare RX = -9+(NormClock*11);
|
||||||
|
#declare RY = 122 * (exp(NormClock) - 1.0);
|
||||||
|
#declare RZ = 33 * cos(NormClock*7.65);
|
||||||
|
object { HexaCone ()
|
||||||
|
rotate <RX, RY, RZ>
|
||||||
|
translate HC_P
|
||||||
|
}
|
||||||
|
#declare HB_A = <-5.00, 10.0, 6.33>;
|
||||||
|
#declare HB_B = < 0.03, 2.32, -0.37>;
|
||||||
|
#declare HB_P = Interpolate(HB_A, HB_B, Cos_01(NormClock));
|
||||||
|
#declare RX = Cos_01(NormClock);
|
||||||
|
#declare RY = -75 * (exp(NormClock*1.8) - 1.0);
|
||||||
|
#declare RZ = abs(33 * sin(NormClock*7.65));
|
||||||
|
object { HexaBenz ()
|
||||||
|
rotate <RX, RY, RZ> translate HB_P }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 P = Interpolate(A, B, NormClock);
|
||||||
|
#local K = NormClock*31;
|
||||||
|
#local R = 16.64 * cos(K);
|
||||||
|
#local H = 0.52 * pow(sin(K), 3);
|
||||||
|
#declare P_hexawood = P + <0, 0.26+H, 0>;
|
||||||
|
object { HexaWood rotate z*R translate P_hexawood }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* survol par un trident
|
||||||
|
*/
|
||||||
|
#declare A = < 2, 49, -20>;
|
||||||
|
#declare B = <-3, 37, 22>;
|
||||||
|
#declare P = Interpolate(A, B, NormClock);
|
||||||
|
object { Trident_A () rotate y*(clock*2.7)
|
||||||
|
rotate z*80
|
||||||
|
rotate <2, 94, 0>
|
||||||
|
translate P }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -9,44 +9,57 @@
|
|||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
#for (idX, 0, 4)
|
#include "dynamic.inc"
|
||||||
#for (idZ, 0, 4)
|
|
||||||
|
|
||||||
#local posX = (idX * 4.56) - 6.5;
|
#for (idX, -3, 3)
|
||||||
#local posY = 1.3 * (rand(Rng1)-0.5);
|
#for (idZ, -3, 3)
|
||||||
#local posZ = (idZ * 4.24) - 8.9;
|
|
||||||
#local Ry = (rand(Rng1) - 0.5) * 16;
|
#local posX = (idX * 4.72) + (rand(Rng1)-0.5);
|
||||||
#if (rand(Rng1) < 0.515)
|
#local posY = 3.1 + (1.2*(rand(Rng1)-0.5));
|
||||||
object { HexaCone ()
|
#local posZ = (idZ * 4.37) ;
|
||||||
rotate y*Ry translate <posX, posY, posZ> }
|
#local Rx = (rand(Rng1) - 0.5) * 8;
|
||||||
|
#local Ry = (rand(Rng1) - 0.5) * 14;
|
||||||
|
#local Rz = (rand(Rng1) - 0.5) * 11;
|
||||||
|
|
||||||
|
// #debug concat("X ", str(posX,7,3), " Z ", str(posZ,7,3), "\n")
|
||||||
|
// #debug concat("position Z ", str(posZ,7,3),"\n")
|
||||||
|
|
||||||
|
#if ( (abs(posX)>1.2) & (abs(posZ)>1.2) )
|
||||||
|
|
||||||
|
#if (rand(Rng1) < 0.555)
|
||||||
|
object { HexaCone () rotate <Rx, Ry, Rz>
|
||||||
|
translate <posX, posY, posZ> }
|
||||||
#else
|
#else
|
||||||
object { HexaBenz ()
|
object { HexaBenz () rotate <Rx, Ry, Rz>
|
||||||
rotate y*Ry translate <posX, posY, posZ> }
|
translate <posX, posY, posZ> }
|
||||||
#end
|
#end
|
||||||
#end
|
|
||||||
#end
|
// #debug "\n"
|
||||||
|
|
||||||
|
|
||||||
|
#end // if pos...
|
||||||
|
#end // loop IDX
|
||||||
|
#end // loop idZ
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
#if (NormClock < 0.08)
|
object { Le_Decor }
|
||||||
light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> }
|
|
||||||
#end
|
|
||||||
|
|
||||||
light_source { < 11, 7, 4>, rgb <NormClock, 0.48, 0.80> }
|
// object { Repere scale 5 translate y }
|
||||||
|
|
||||||
// object { Repere scale 5 }
|
#local CamX = -8.7 + ( 6.9 * Cos_01(NormClock));
|
||||||
|
#local CamY = 0.95 + (24.64 * Cos_01(NormClock));
|
||||||
#local CamX = -8.7+(6.6*NormClock);
|
#local CamZ = 16.86 + (12.9 * Cos_01(NormClock));
|
||||||
#local CamY = -5+(11.9*Cos_01(NormClock));
|
|
||||||
#local CamZ = 15.06+(2.9*Cos_010(NormClock));
|
|
||||||
|
|
||||||
camera {
|
camera {
|
||||||
location <CamX, CamY, CamZ>
|
location <CamX, CamY, CamZ>
|
||||||
look_at <0.0, 0.0, 0>
|
look_at <0.0, -NormClock, 0>
|
||||||
angle 53 - (3.57 * NormClock)
|
angle 64 - (3.97 * NormClock)
|
||||||
}
|
}
|
||||||
|
165
essai.pov
165
essai.pov
@ -7,103 +7,108 @@
|
|||||||
|
|
||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#debug "\n GLOBALS INCLUDED\n"
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "gadgets.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
// #include "dynamic.inc"
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
#macro GyroPhare_mat ()
|
#include "trident.inc"
|
||||||
cylinder {
|
|
||||||
0, y*H_gyro, R_gyro
|
|
||||||
#if (rand(Rng1) < 0.5)
|
|
||||||
texture { T_Stone25 scale 1+rand(Rng1) }
|
|
||||||
#else
|
|
||||||
texture { T_Stone6 }
|
|
||||||
#end
|
|
||||||
}
|
|
||||||
#end // macro
|
|
||||||
|
|
||||||
#macro GyroPhare_lampe ()
|
#debug " ACTION !!!\n"
|
||||||
union {
|
|
||||||
difference {
|
|
||||||
cylinder { 0, y*0.20, R_gyro }
|
|
||||||
cylinder { y*0.01, y*0.19, R_gyro*0.97 }
|
|
||||||
#local WB = 0.015;
|
|
||||||
box { <-1, 0.03, -WB>, <1, 0.18, WB> }
|
|
||||||
box { <-WB, 0.03, -1>, <WB, 0.18, 1> }
|
|
||||||
#undef WB
|
|
||||||
pigment { color White }
|
|
||||||
rotate y*(0.5-rand(Rng1))*clock
|
|
||||||
}
|
|
||||||
light_source { y*0.10 rgb <0.8, 0.9, 0.999999999> }
|
|
||||||
}
|
|
||||||
#end // macro
|
|
||||||
|
|
||||||
#macro GyroPhare ()
|
// ------------------------------------------------------ ##
|
||||||
union {
|
// ------------------------------------------------------ ##
|
||||||
object { GyroPhare_mat () }
|
|
||||||
object { GyroPhare_lampe ()
|
|
||||||
// rotate y*rand(Rng1)*clock
|
|
||||||
translate y*(H_gyro+0.02) }
|
|
||||||
}
|
|
||||||
#end // macro
|
|
||||||
// =======================================================
|
|
||||||
|
|
||||||
#macro Bubble ()
|
#declare Tridents = object
|
||||||
sphere {
|
|
||||||
0, 0.06
|
|
||||||
#if ( rand(Rng1) < 0.333 )
|
|
||||||
texture { Ruby_Glass }
|
|
||||||
#elseif ( rand(Rng1) < 0.666 )
|
|
||||||
texture { Orange_Glass }
|
|
||||||
#else
|
|
||||||
texture { Gold_Nugget }
|
|
||||||
#end
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#macro Un_Machin ()
|
|
||||||
union {
|
|
||||||
#for (Y, 1, 8, 1)
|
|
||||||
object { Bubble() translate y*Y*0.1 }
|
|
||||||
#end
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
|
|
||||||
#declare Les_Machins = object
|
|
||||||
{
|
{
|
||||||
|
#local RX = -11 + (80*sin(NormClock*9.81) + 3*sin(NormClock*23));
|
||||||
|
#local RZ = 96 - (54*Cos_010(NormClock));
|
||||||
union {
|
union {
|
||||||
#local Rk = 4.95;
|
object { Trident_A () rotate <RX, 0, RZ>
|
||||||
#for (foo, 0, 360, 15)
|
translate < -1.4, 3, 0> }
|
||||||
#local Xpos = Rk * sin(radians(foo));
|
object { Trident_A () rotate <0, clock, 0>
|
||||||
#local Zpos = Rk * cos(radians(foo));
|
translate < 1.4, 2, 0> }
|
||||||
#if ( rand(Rng1) < 0.40 )
|
|
||||||
object { GyroPhare () translate <Xpos, 0, Zpos> }
|
|
||||||
#else
|
|
||||||
object { Un_Machin () translate <Xpos, 0.33, Zpos> }
|
|
||||||
#end
|
|
||||||
|
|
||||||
#end
|
|
||||||
|
|
||||||
#undef Rk
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object { Les_Machins translate y*0.01}
|
// ------------------------------------------------------ ##
|
||||||
|
|
||||||
object { Le_Sol }
|
#declare Gyros = object
|
||||||
// object { Repere }
|
{
|
||||||
|
union {
|
||||||
|
#for (I, 0, 359, 60)
|
||||||
|
#declare E = 9;
|
||||||
|
#declare Dx = E * sin(radians(I));
|
||||||
|
#declare Dz = E * cos(radians(I));
|
||||||
|
object { GyroPhare () translate <Dx, 0, Dz> }
|
||||||
|
// #debug " Gyro !!!\n"
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ------------------------------------------------------ ##
|
||||||
|
|
||||||
|
object { Gyros }
|
||||||
|
|
||||||
|
#declare Selector = mod(int(clock/17), 6);
|
||||||
|
#debug concat("Selector = ", str(Selector, 6, 0), "\n")
|
||||||
|
|
||||||
|
#switch (Selector)
|
||||||
|
#case (0)
|
||||||
|
object { Cabane_Compteur scale 2 rotate y*clock }
|
||||||
|
#debug " Cabane+Compteur !!!\n"
|
||||||
|
#break
|
||||||
|
#case (1)
|
||||||
|
object { HexaPole () }
|
||||||
|
#debug " Hexapole !!!\n"
|
||||||
|
#break
|
||||||
|
#case (2)
|
||||||
|
object { HexaWood translate y*2 }
|
||||||
|
#debug " HexaWood !!!\n"
|
||||||
|
#break
|
||||||
|
#case (3)
|
||||||
|
object { Chose rotate y*clock }
|
||||||
|
#debug " Chose\n"
|
||||||
|
#break
|
||||||
|
#case (4)
|
||||||
|
object { Chose rotate -y*clock }
|
||||||
|
#debug " Chose\n"
|
||||||
|
#break
|
||||||
|
#case (5)
|
||||||
|
object { Horloge }
|
||||||
|
#debug " Horloge !!!\n"
|
||||||
|
#break
|
||||||
|
#end // switch selector
|
||||||
|
|
||||||
|
|
||||||
|
plane {
|
||||||
|
y, 0
|
||||||
|
texture { T_Planete_B scale 0.3333 }
|
||||||
|
}
|
||||||
|
|
||||||
|
object { Repere translate y*0.8 }
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
// light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> }
|
#local CamX = -2.7 + (1.8*Cos_010(NormClock));
|
||||||
// light_source { < 11, 7, 4>, rgb <1-NormClock, 0.28, 0.80> }
|
#local CamY = 0.91 + (1.3*exp(NormClock));
|
||||||
|
#local CamZ = -5.777 + (0.8*Cos_01(NormClock));
|
||||||
|
|
||||||
|
#local K = 8.6;
|
||||||
|
#local CamX = CamX * K;
|
||||||
|
#local CamY = CamY * K * 0.5;
|
||||||
|
#local CamZ = CamZ * K;
|
||||||
|
|
||||||
#local CamX = -12.7 + (5.8*NormClock);
|
|
||||||
#local CamY = 8.81 + (14*sqrt(NormClock));
|
|
||||||
camera {
|
camera {
|
||||||
location <CamX, CamY, 9.99>
|
orthographic
|
||||||
look_at <0, 0, 0>
|
location <CamX, CamY, CamZ>
|
||||||
angle 42 + 8*Cos_01(NormClock)
|
look_at <0, 1.4, 0>
|
||||||
|
angle 26 - 3*Cos_01(NormClock)
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
|
# Le silo des frames
|
||||||
|
|
||||||
Avant tout, il faut créer ces répertoires :
|
Avant tout, il faut créer ces répertoires :
|
||||||
|
|
||||||
```
|
```
|
||||||
frames/
|
frames/
|
||||||
├── essai
|
+--- essai
|
||||||
├── orbite
|
+--- orbite
|
||||||
├── passage
|
+--- passage
|
||||||
├── scene
|
+--- scene
|
||||||
├── scene
|
+--- scene
|
||||||
├── orbite
|
+--- orbite
|
||||||
├── escadrille
|
+--- survol
|
||||||
└── topview
|
+--- escadrille
|
||||||
|
+--- topview
|
||||||
|
+--- Spool
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
182
gadgets.inc
Normal file
182
gadgets.inc
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - G A D G E T S
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
/* new 30 aout 2025
|
||||||
|
*
|
||||||
|
* une idée à creuser davantage...
|
||||||
|
*/
|
||||||
|
|
||||||
|
#declare Chose = object
|
||||||
|
{
|
||||||
|
merge {
|
||||||
|
cone { 1.2*z, 0.91, 0.5, 1.22 }
|
||||||
|
#local C2X = 8 * sin(NormClock) * sin(NormClock*3);
|
||||||
|
#local C2Z = 5 * (sin(-NormClock) * cos(NormClock*5));
|
||||||
|
cylinder { 1*x, <C2X, 4.5, C2Z>, 0.20+(0.2*Cos_010(NormClock)) }
|
||||||
|
#local P2 = (clock/51)+1;
|
||||||
|
cylinder { 0, P2, 0.04 }
|
||||||
|
sphere { P2, 0.09 }
|
||||||
|
}
|
||||||
|
texture { tPlasticOrange }
|
||||||
|
scale <0.6, 0.5, 0.7>
|
||||||
|
rotate -y*clock
|
||||||
|
translate y*1.6666666
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
#declare Horloge = object
|
||||||
|
{
|
||||||
|
#local Texte = str(NormClock, 6, 3);
|
||||||
|
#debug concat("Texte horloge ", Texte, "\n\n")
|
||||||
|
|
||||||
|
text {
|
||||||
|
// ttf "datas/DSEG7Classic-Regular.ttf" Texte 0.1, 0
|
||||||
|
ttf "datas/ComicMono-Bold.ttf" Texte 0.1, 0
|
||||||
|
texture { tPlasticGreen }
|
||||||
|
}
|
||||||
|
scale 3.00
|
||||||
|
rotate 90*x
|
||||||
|
translate <-4.5, 0.044, 0>
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
/*
|
||||||
|
* need more work !
|
||||||
|
*/
|
||||||
|
#macro Base_hexapole ()
|
||||||
|
prism {
|
||||||
|
linear_sweep
|
||||||
|
linear_spline
|
||||||
|
0, // sweep the following shape from here ...
|
||||||
|
1, // ... up through here
|
||||||
|
7, // the number of points making up the shape ...
|
||||||
|
<3,5>, <-3,5>, <-5,0>, <-3,-5>, <3, -5>, <5,0>, <3,5>
|
||||||
|
#if (rand(Rng1) < 0.5)
|
||||||
|
texture { T_Beton_1 }
|
||||||
|
#else
|
||||||
|
texture { T_Beton_2 }
|
||||||
|
#end // if
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
// ------------------------------------------------------ ##
|
||||||
|
|
||||||
|
#macro HexaPole_tubes ()
|
||||||
|
#local R = 0.06;
|
||||||
|
#local E = 0.725;
|
||||||
|
#local H = H_cone*3;
|
||||||
|
union {
|
||||||
|
#for (A, 0, 359, 60)
|
||||||
|
#local Xp = E * cos(radians(A));
|
||||||
|
#local Zp = E * sin(radians(A));
|
||||||
|
union {
|
||||||
|
#local H2 = H + rand(Rng1) + rand(Rng1);
|
||||||
|
cylinder { 0, y*H2, R }
|
||||||
|
sphere { 0, R*2 scale <1, 0.666, 1> }
|
||||||
|
sphere { 0, R*2 scale <1, 0.555, 1> translate y*H2 }
|
||||||
|
#local Ra = rand(Rng1);
|
||||||
|
#if (Ra < 0.25)
|
||||||
|
texture { T_Chrome_1A }
|
||||||
|
#elseif (Ra < 0.50)
|
||||||
|
texture { T_Chrome_4D }
|
||||||
|
#elseif (Ra < 0.85)
|
||||||
|
texture { T_Brass_2C }
|
||||||
|
#else
|
||||||
|
texture { Soft_Silver }
|
||||||
|
#end
|
||||||
|
translate <Xp, 0, Zp>
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef E
|
||||||
|
#undef H
|
||||||
|
#undef R
|
||||||
|
#end
|
||||||
|
|
||||||
|
// ------------------------------------------------------ ##
|
||||||
|
/*
|
||||||
|
* l'assemblage en grand cercle de ces trucs est
|
||||||
|
* dans le fichier "contexte.inc"
|
||||||
|
*/
|
||||||
|
|
||||||
|
#macro HexaPole ()
|
||||||
|
union {
|
||||||
|
object { Base_hexapole () scale <0.27, 0.2, 0.27> }
|
||||||
|
object { HexaPole_tubes () translate y*0.2 }
|
||||||
|
rotate y*(53*rand(Rng1))
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
#declare OpenBox = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#local R = 0.010;
|
||||||
|
/* les verticales */
|
||||||
|
cylinder { <-1, -1, -1>, <-1, 1, -1>, R }
|
||||||
|
cylinder { < 1, -1, -1>, < 1, 1, -1>, R }
|
||||||
|
cylinder { <-1, -1, 1>, <-1, 1, 1>, R }
|
||||||
|
cylinder { < 1, -1, 1>, < 1, 1, 1>, R }
|
||||||
|
/* en bas */
|
||||||
|
cylinder { < 1, -1, 1>, <-1, -1, 1>, R }
|
||||||
|
cylinder { < 1, -1, -1>, <-1, -1, -1>, R }
|
||||||
|
cylinder { <-1, -1, 1>, <-1, -1, -1>, R }
|
||||||
|
cylinder { < 1, -1, 1>, < 1, -1, -1>, R }
|
||||||
|
|
||||||
|
/* en haut */
|
||||||
|
cylinder { < 1, 1, 1>, <-1, 1, 1>, R }
|
||||||
|
cylinder { < 1, 1, -1>, <-1, 1, -1>, R }
|
||||||
|
cylinder { <-1, 1, 1>, <-1, 1, -1>, R }
|
||||||
|
cylinder { < 1, 1, 1>, < 1, 1, -1>, R }
|
||||||
|
|
||||||
|
#undef R
|
||||||
|
texture { Soft_Silver scale 6.50 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// =======================================================
|
||||||
|
/*
|
||||||
|
* first written macro for testing the generation of
|
||||||
|
* differente instances of the same shape.
|
||||||
|
*/
|
||||||
|
#macro Bubble ()
|
||||||
|
sphere {
|
||||||
|
0, 0.070
|
||||||
|
#local R = rand(Rng1);
|
||||||
|
#if ( R < 0.333 )
|
||||||
|
texture { Ruby_Glass }
|
||||||
|
#elseif ( R < 0.666 )
|
||||||
|
texture { Orange_Glass }
|
||||||
|
#else
|
||||||
|
texture { Gold_Nugget }
|
||||||
|
#end
|
||||||
|
#undef R
|
||||||
|
scale <1.414, 1.000, 1.414>
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#macro Un_Machin ()
|
||||||
|
union {
|
||||||
|
#for (Y, 1, 8, 1)
|
||||||
|
object { Bubble() translate y*Y*0.11 }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#declare Les_Machins = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#local Rk = 3.90 + 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> }
|
||||||
|
#end
|
||||||
|
#undef Rk
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================
|
123
globals.inc
123
globals.inc
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
global_settings {
|
global_settings {
|
||||||
assumed_gamma 1.0
|
assumed_gamma 1.0
|
||||||
ambient_light rgb <0.18, 0.18, 0.21>
|
ambient_light rgb <0.47, 0.47, 0.47>
|
||||||
max_trace_level 15
|
max_trace_level 15
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9,26 +9,129 @@ global_settings {
|
|||||||
#include "metals.inc"
|
#include "metals.inc"
|
||||||
#include "textures.inc"
|
#include "textures.inc"
|
||||||
#include "stones.inc"
|
#include "stones.inc"
|
||||||
|
#include "woods.inc"
|
||||||
|
|
||||||
#declare Rng1 = seed(1337);
|
#declare Rng1 = seed(1337);
|
||||||
#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);
|
||||||
|
|
||||||
#declare NormClock = clock / 360.0;
|
#declare NormClock = clock / NbFrames;
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
/*
|
/*
|
||||||
* Some constants...
|
* Some constants...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#declare SzSol = 30;
|
#declare SzSol = 34;
|
||||||
|
#declare H_sol = 0.000; // c'est quoi exactement ?
|
||||||
|
|
||||||
|
#declare SzBase = 2.90;
|
||||||
|
#declare H_base = 0.23;
|
||||||
|
|
||||||
#declare R_basecone = 0.117;
|
#declare R_basecone = 0.117;
|
||||||
#declare H_cone = 0.97;
|
#declare H_cone = 0.97;
|
||||||
|
|
||||||
#declare R_gyro = 0.10;
|
#declare R_gyro = 0.14;
|
||||||
#declare H_gyro = 1.20;
|
#declare H_gyro = 1.80;
|
||||||
|
#declare H_gylampe = 0.25;
|
||||||
|
|
||||||
|
#declare H_QuadriLight = 37;
|
||||||
|
#declare E_QuadriLight = SzSol * 1.35;
|
||||||
|
|
||||||
|
#declare R_circular = (SzSol * 1.60);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
* Some textures...
|
||||||
|
*/
|
||||||
|
|
||||||
|
#declare WIP_color = texture
|
||||||
|
{
|
||||||
|
pigment { color Cyan*0.55 }
|
||||||
|
finish { phong 0.23 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare T_WIP_alert = texture
|
||||||
|
{
|
||||||
|
pigment { color Red }
|
||||||
|
finish { ambient 1 specular 0.80 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare T_Planete_A = texture
|
||||||
|
{
|
||||||
|
pigment { color rgb <0.20, 0.30, 0.10> }
|
||||||
|
normal { dents 0.38 scale 0.5}
|
||||||
|
finish { phong 0.70 reflection 0.05 }
|
||||||
|
}
|
||||||
|
#declare T_Planete_B = texture
|
||||||
|
{
|
||||||
|
pigment { rgb <0.40, 0.50, 0.70> }
|
||||||
|
finish { metallic 0.55 reflection 0.55 }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* deux textures pour faire des batiments
|
||||||
|
*/
|
||||||
|
#declare T_Beton_1 = texture
|
||||||
|
{
|
||||||
|
pigment { color <0.9, 0.8, 0.7> }
|
||||||
|
normal { dents 0.75 scale 0.3 }
|
||||||
|
finish { roughness 1.00 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare T_Beton_2 = texture
|
||||||
|
{
|
||||||
|
pigment { color <0.7, 0.6, 0.5> }
|
||||||
|
normal { dents 0.25 scale 3 }
|
||||||
|
finish { roughness 1.00 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare tPlasticOrange = texture
|
||||||
|
{
|
||||||
|
pigment{rgb <2.000, 0.50, 0.0>}
|
||||||
|
finish {
|
||||||
|
ambient 0.1
|
||||||
|
diffuse 0.6
|
||||||
|
specular 0.3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare tPlasticGreen = texture
|
||||||
|
{
|
||||||
|
pigment{rgb <0.50, 2.000, 0.0>}
|
||||||
|
finish {
|
||||||
|
ambient 0.1
|
||||||
|
diffuse 0.6
|
||||||
|
specular 0.3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Flashy = texture {
|
||||||
|
pigment {
|
||||||
|
onion
|
||||||
|
colour_map {
|
||||||
|
[0.00, Red ]
|
||||||
|
[0.40, Gray50 ]
|
||||||
|
[1.00, Blue ]
|
||||||
|
}
|
||||||
|
turbulence 3.14159
|
||||||
|
scale 0.50
|
||||||
|
}
|
||||||
|
finish {
|
||||||
|
emission 0 ambient 1 diffuse 0 specular 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
#declare GoldDark = texture
|
||||||
|
{
|
||||||
|
pigment{ rgb <0.81, 0.71, 0.23> }
|
||||||
|
finish{ diffuse 0.5 ambient 0 specular 1 metallic roughness 0.01
|
||||||
|
reflection{0.6 metallic}
|
||||||
|
}
|
||||||
|
} // This is a metal.
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
/*
|
/*
|
||||||
@ -41,4 +144,10 @@ global_settings {
|
|||||||
(0.5-0.5*cos( 2 * 3.141592654 * X))
|
(0.5-0.5*cos( 2 * 3.141592654 * X))
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
/* Interpolate */
|
||||||
|
#macro Interpolate(A, B, pos)
|
||||||
|
#local resultat = ( (B-A) * pos) +A;
|
||||||
|
resultat
|
||||||
|
#end
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
|
154
groundbase.inc
Normal file
154
groundbase.inc
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
/*
|
||||||
|
* _ _
|
||||||
|
* __ _ _ __ ___ _ _ _ __ __| || |__ __ _ ___ ___
|
||||||
|
* / _` || '__|/ _ \ | | | || '_ \ / _` || '_ \ / _` |/ __| / _ \
|
||||||
|
* | (_| || | | (_) || |_| || | | || (_| || |_) || (_| |\__ \| __/
|
||||||
|
* \__, ||_| \___/ \__,_||_| |_| \__,_||_.__/ \__,_||___/ \___|
|
||||||
|
* |___/
|
||||||
|
*
|
||||||
|
* nouveau debut fevrier 2025 - we love raytracing
|
||||||
|
*
|
||||||
|
* une cabane pour faire riche.
|
||||||
|
* une seule forme de cabane pour le moment
|
||||||
|
*/
|
||||||
|
#declare Base_cabane_forme = object
|
||||||
|
{
|
||||||
|
difference {
|
||||||
|
#local Hc = 0.90;
|
||||||
|
box { <-0.90, 0, 0>, <0.90, Hc, 0.80> }
|
||||||
|
box { <-0.89, 0.01, -1> <0.89, Hc-0.01, 0.79> }
|
||||||
|
#local Hc = Hc * 0.75;
|
||||||
|
cylinder { <-1, Hc, -0.29>, <1, Hc, 0.29>, 0.09 }
|
||||||
|
#undef Hc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* comparaison des deux textures par le rendu
|
||||||
|
* de la meme forme de cabane.
|
||||||
|
*/
|
||||||
|
#declare Cabane_Base_1 = object
|
||||||
|
{
|
||||||
|
object { Base_cabane_forme }
|
||||||
|
texture { T_Beton_1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Cabane_Base_2 = object
|
||||||
|
{
|
||||||
|
object { Base_cabane_forme }
|
||||||
|
texture { T_Beton_2 }
|
||||||
|
}
|
||||||
|
// ------------------------------------------------------ ##
|
||||||
|
|
||||||
|
#declare Compteur = object
|
||||||
|
{
|
||||||
|
#local Texte = str(clock, 3, 0);
|
||||||
|
#debug concat("Texte du compteur ", Texte, "\n\n")
|
||||||
|
text {
|
||||||
|
ttf "datas/ComicMono.ttf" Texte 0.1, 0
|
||||||
|
texture { T_WIP_alert }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#declare Cabane_Compteur = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { Compteur scale 0.55
|
||||||
|
translate <-0.46, 0.22, 0.32> }
|
||||||
|
object { Cabane_Base_2 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
#declare GroundBase_Sol = object
|
||||||
|
{
|
||||||
|
intersection {
|
||||||
|
height_field {
|
||||||
|
png "datas/hf.png" smooth
|
||||||
|
translate <-.5, 0, -.5>
|
||||||
|
#local SC = SzSol * 1.130;
|
||||||
|
scale <SC, 0.90, SC>
|
||||||
|
texture {
|
||||||
|
pigment {
|
||||||
|
image_map { png "datas/cmap.png" }
|
||||||
|
rotate x*90
|
||||||
|
translate <-.5, 0, -.5>
|
||||||
|
scale <SC, 1, SC>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cylinder { -y*5, y*5, SzSol*0.45 }
|
||||||
|
}
|
||||||
|
finish { phong 0.096 }
|
||||||
|
translate y*H_sol
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
||||||
|
#declare GroundBase_a = object
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
C'est quoi ce truc ?
|
||||||
|
*/
|
||||||
|
union {
|
||||||
|
#local Dx = 1.5;
|
||||||
|
#local Dz = 1.0;
|
||||||
|
box { <-Dx, 0, -Dz>, <Dx, H_base, Dz> }
|
||||||
|
#local Ha = y*(H_base*2);
|
||||||
|
cylinder { 0, Ha, 0.08 translate < Dx, 0, -Dz> }
|
||||||
|
cylinder { 0, Ha, 0.08 translate <-Dx, 0, -Dz> }
|
||||||
|
#local Hb = Ha * 1.17;
|
||||||
|
cone { Ha, 0.08, Hb, 0.05 translate < Dx, 0, -Dz> }
|
||||||
|
cone { Ha, 0.08, Hb, 0.05 translate <-Dx, 0, -Dz> }
|
||||||
|
#undef Ha
|
||||||
|
#undef Hb
|
||||||
|
#undef Dx
|
||||||
|
#undef Dz
|
||||||
|
}
|
||||||
|
texture { T_Grnt7 rotate 49 scale 0.333 }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
#declare GroudBase_coin = object
|
||||||
|
{
|
||||||
|
merge {
|
||||||
|
cylinder { 0, y*0.5, 0.10 }
|
||||||
|
sphere { 0, 0.10 scale <1, 0.23, 1> translate y*0.5 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare GroundBase_estrade = object
|
||||||
|
{
|
||||||
|
#local Sz = SzBase - 0.14;
|
||||||
|
#local Hc = H_base;
|
||||||
|
union {
|
||||||
|
box { <-SzBase, 0, -SzBase>, <SzBase, H_base, SzBase> }
|
||||||
|
object { GroudBase_coin translate <-Sz, Hc, -Sz> }
|
||||||
|
object { GroudBase_coin translate < Sz, Hc, -Sz> }
|
||||||
|
object { GroudBase_coin translate <-Sz, Hc, Sz> }
|
||||||
|
object { GroudBase_coin translate < Sz, Hc, Sz> }
|
||||||
|
}
|
||||||
|
texture { T_Grnt27 rotate 9 scale 0.32 }
|
||||||
|
#undef Sz
|
||||||
|
#undef Hc
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
#declare La_GroundBase = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { GroundBase_Sol }
|
||||||
|
object { GroundBase_estrade translate y*H_sol }
|
||||||
|
/*
|
||||||
|
* ici, mettre la cabane
|
||||||
|
*/
|
||||||
|
#local Dz = <0, 0, -7>;
|
||||||
|
object { GroundBase_a translate Dz }
|
||||||
|
object { Cabane_Compteur rotate y*180
|
||||||
|
translate Dz + y*H_base }
|
||||||
|
#undef Dz
|
||||||
|
}
|
||||||
|
translate y*(H_sol+H_base)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ======================================================= */
|
111
hexabenz.inc
111
hexabenz.inc
@ -8,8 +8,15 @@
|
|||||||
union {
|
union {
|
||||||
#local RA = R_basecone;
|
#local RA = R_basecone;
|
||||||
#local RB = 0.001;
|
#local RB = 0.001;
|
||||||
cone { 0, RA, y*0.89, 0.0001 }
|
difference {
|
||||||
sphere { 0, RA*1.098 scale <1, 0.62, 3.03> translate -0.02*y }
|
cone { 0, RA, y*0.89, 0.0001 }
|
||||||
|
cone { 0, RA, y*0.89, 0.0001 translate -0.014*y }
|
||||||
|
}
|
||||||
|
difference {
|
||||||
|
sphere { 0, RA*1.098 scale <1, 0.58, 3.03> }
|
||||||
|
sphere { 0, RA*1.096 scale <1, 0.58, 3.03> }
|
||||||
|
translate -0.02*y
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// }
|
// }
|
||||||
#end
|
#end
|
||||||
@ -18,53 +25,62 @@ union {
|
|||||||
// {
|
// {
|
||||||
union {
|
union {
|
||||||
#for (foo, 0, 360, 60)
|
#for (foo, 0, 360, 60)
|
||||||
#local E = 0.38;
|
#local E = 0.31;
|
||||||
#local Tx = E * sin(radians(foo));
|
#local Tx = E * sin(radians(foo));
|
||||||
#local Ty = E * cos(radians(foo));
|
#local Ty = E * cos(radians(foo));
|
||||||
object {
|
object {
|
||||||
Benz_Cone_Base ()
|
Benz_Cone_Base ()
|
||||||
#if ( rand(Rng1) < 0.5 )
|
#local R = rand(Rng1);
|
||||||
|
#if ( R < 0.3333 )
|
||||||
texture { T_Silver_2C scale 11.50 }
|
texture { T_Silver_2C scale 11.50 }
|
||||||
#else
|
#elseif ( R < 0.6666 )
|
||||||
texture { T_Brass_2C scale 13.50 }
|
texture { T_Brass_2C scale 13.50 }
|
||||||
|
#else
|
||||||
|
texture { T_Brass_4A scale 13.50 }
|
||||||
#end
|
#end
|
||||||
rotate -z*foo
|
rotate -z*foo
|
||||||
translate <Tx, Ty, 0>
|
translate <Tx, Ty, 0>
|
||||||
}
|
}
|
||||||
#end
|
torus { E, E*0.05
|
||||||
|
scale <1, 2.4, 1> rotate x*90
|
||||||
|
#if ( rand(Rng1) < 0.5 )
|
||||||
|
texture { T_Planete_A }
|
||||||
|
#else
|
||||||
|
texture { T_Planete_B }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end // end for
|
||||||
}
|
}
|
||||||
// }
|
// }
|
||||||
#end
|
#end
|
||||||
|
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
|
|
||||||
#local R_Tube = 0.20;
|
#declare R_Tube = 0.17;
|
||||||
#local L_Tube = 0.54;
|
#local L_Tube = 0.54;
|
||||||
|
|
||||||
#declare Benz_Tubules = object
|
#macro Benz_Tubules ()
|
||||||
{
|
|
||||||
merge {
|
merge {
|
||||||
#local E = R_Tube * 0.0910;
|
#local E = R_Tube * 0.75;
|
||||||
#local R = 0.01;
|
#local R = 0.009;
|
||||||
#for (foo, 0, 360, 20)
|
#for (foo, 0, 360, 30)
|
||||||
#local Tx = E * sin(radians(foo));
|
#local Tx = E * sin(radians(foo));
|
||||||
#local Ty = E * cos(radians(foo));
|
#local Ty = E * cos(radians(foo));
|
||||||
#local Dza = z * 0.20;
|
#local Dza = z * 0.25;
|
||||||
#local Dzb = z * 0.90;
|
#local Dzb = z * 0.95;
|
||||||
cylinder { -Dza, Dzb, R translate <Tx, Ty, 0> }
|
cylinder { -Dza, Dzb, R translate <Tx, Ty, 0> }
|
||||||
sphere { -Dza, R*1.8 translate <Tx, Ty, 0> }
|
sphere { -Dza, R*1.8 translate <Tx, Ty, 0> }
|
||||||
sphere { Dzb, R*1.8 translate <Tx, Ty, 0> }
|
sphere { Dzb, R*1.8 translate <Tx, Ty, 0> }
|
||||||
#end
|
#end
|
||||||
|
#if ( rand(Rng1) < 0.520)
|
||||||
|
texture { Orange_Glass }
|
||||||
|
#else
|
||||||
|
texture { Yellow_Glass }
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
#if ( rand(Rng1) < 0.333)
|
|
||||||
texture { Orange_Glass }
|
|
||||||
#else
|
|
||||||
texture { Yellow_Glass }
|
|
||||||
#end
|
#end
|
||||||
}
|
|
||||||
|
|
||||||
#declare Benz_Fuseau = object
|
#macro Benz_Fuseau ()
|
||||||
{
|
|
||||||
difference {
|
difference {
|
||||||
sphere { 0, R_Tube*0.39 }
|
sphere { 0, R_Tube*0.39 }
|
||||||
sphere { 0, R_Tube*0.37 }
|
sphere { 0, R_Tube*0.37 }
|
||||||
@ -72,35 +88,64 @@ difference {
|
|||||||
cylinder { < 1, 0, -1>, <-1, 0, 1>, R_Tube*0.21 }
|
cylinder { < 1, 0, -1>, <-1, 0, 1>, R_Tube*0.21 }
|
||||||
}
|
}
|
||||||
scale <1, 1, 4.4>
|
scale <1, 1, 4.4>
|
||||||
texture { Shadow_Clouds scale 0.56 }
|
#if ( rand(Rng1) < 0.360)
|
||||||
}
|
texture { Shadow_Clouds scale 0.56 }
|
||||||
|
#else
|
||||||
|
texture { Flashy }
|
||||||
|
#end
|
||||||
|
|
||||||
|
#end // end macro
|
||||||
|
|
||||||
#declare Benz_Fuseau_Flash = object
|
#declare Benz_Fuseau_Flash = object
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
object { Benz_Fuseau }
|
object { Benz_Fuseau () }
|
||||||
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.95
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rotate -z*clock*6
|
rotate -z*clock*8
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------
|
||||||
|
|
||||||
|
#local Forme_Cockpit = object
|
||||||
|
{
|
||||||
|
difference {
|
||||||
|
sphere { 0, R_Tube*0.72 }
|
||||||
|
sphere { 0, R_Tube*0.72 scale 0.99 }
|
||||||
|
#for (Foo, 0, 359, 36)
|
||||||
|
cylinder { x, 0, R_Tube*0.15
|
||||||
|
translate y*(R_Tube*0.32)
|
||||||
|
rotate y*Foo }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
scale <1, 0.87, 1>
|
||||||
|
translate z*L_Tube*1.18
|
||||||
}
|
}
|
||||||
|
|
||||||
#declare Benz_Cylindre = object
|
#declare Benz_Cylindre = object
|
||||||
{
|
{
|
||||||
|
#local E_tube = 0.02;
|
||||||
|
#local R_int = R_Tube - E_tube;
|
||||||
difference {
|
difference {
|
||||||
union {
|
union {
|
||||||
cylinder { z*L_Tube*1.5, -z*L_Tube, R_Tube }
|
cylinder { z*L_Tube*1.6, -z*L_Tube, R_Tube }
|
||||||
|
/* les deux bouts du cylindre creux */
|
||||||
|
#local R2 = (R_Tube + R_int) / 2;
|
||||||
|
torus { R2, E_tube scale <1, 4, 1>
|
||||||
|
rotate x*90 translate z*L_Tube*1.6 }
|
||||||
|
torus { R2, E_tube scale <1, 4, 1>
|
||||||
|
rotate x*90 translate -z*L_Tube }
|
||||||
|
|
||||||
/* cette sphere devrait devenir
|
/* cette sphere devrait devenir
|
||||||
un vrai cockpit ? */
|
un vrai cockpit ? */
|
||||||
sphere { z*L_Tube*1.18, R_Tube*0.72
|
object { Forme_Cockpit
|
||||||
scale <1, 0.73, 1>
|
translate y*R_Tube*0.97}
|
||||||
translate y*R_Tube*0.87}
|
|
||||||
}
|
}
|
||||||
cylinder { z*4, -z*4, R_Tube*0.95 }
|
cylinder { z*4, -z*4, R_int }
|
||||||
}
|
}
|
||||||
texture { Soft_Silver scale 6.0 }
|
texture { Soft_Silver scale 6.0 }
|
||||||
}
|
}
|
||||||
@ -109,7 +154,7 @@ texture { Soft_Silver scale 6.0 }
|
|||||||
// #declare Benz_Tube = object
|
// #declare Benz_Tube = object
|
||||||
// {
|
// {
|
||||||
union {
|
union {
|
||||||
object { Benz_Tubules }
|
object { Benz_Tubules () }
|
||||||
object { Benz_Fuseau_Flash translate z*0.40 }
|
object { Benz_Fuseau_Flash translate z*0.40 }
|
||||||
object { Benz_Cylindre }
|
object { Benz_Cylindre }
|
||||||
}
|
}
|
||||||
@ -122,7 +167,7 @@ union {
|
|||||||
// #declare HexaBenz = object
|
// #declare HexaBenz = object
|
||||||
// {
|
// {
|
||||||
union {
|
union {
|
||||||
#local Rk = (rand(Rng1)-0.5) * 1024;
|
#local Rk = (rand(Rng1)-0.5) * 1312;
|
||||||
object { Benz_Cones () rotate z*NormClock*Rk}
|
object { Benz_Cones () rotate z*NormClock*Rk}
|
||||||
object { Benz_Tube () }
|
object { Benz_Tube () }
|
||||||
}
|
}
|
||||||
|
31
hexabenz.pov
31
hexabenz.pov
@ -6,33 +6,30 @@
|
|||||||
|
|
||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "metals.inc"
|
|
||||||
#include "textures.inc"
|
|
||||||
#include "stones.inc"
|
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
#local K = 1.48;
|
|
||||||
object { HexaBenz () rotate y*90 translate -x*K }
|
|
||||||
object { HexaBenz () translate x*K }
|
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
light_source { <19, 7, 14>, rgb <0.77, 0.79, 0.80> }
|
object { Le_Decor }
|
||||||
light_source { <19, 9, -14>, rgb <0.87, 0.79, 0.70> }
|
|
||||||
|
|
||||||
// object { Repere scale 2 }
|
// object { Repere scale 2 }
|
||||||
|
|
||||||
|
#declare Loc_cam = <0, 2, 2*NormClock> + (Pos_RedB_0 * 1.42);
|
||||||
|
|
||||||
camera {
|
camera {
|
||||||
location <-1.9+(8*NormClock), 0.70, 7.59-NormClock>
|
location Loc_cam
|
||||||
look_at <0.37, 0.0, 0>
|
look_at Pos_RedB_0 + <0, 1.20, 0>
|
||||||
focal_point <0.37, 0.0, 0>
|
// focal_point <0.37, 0.0, 0>
|
||||||
aperture 0.046
|
// aperture 0.046
|
||||||
blur_samples 30
|
// blur_samples 30
|
||||||
angle 60 - 28 * Cos_01(NormClock)
|
angle 40 - 14 * Cos_01(NormClock)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,8 @@ union {
|
|||||||
#local xR = (rand(Rng2)-0.5000) * kR;
|
#local xR = (rand(Rng2)-0.5000) * kR;
|
||||||
#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) + (3.14*rand(Rng1)) );
|
#local Value = sin( (NormClock * 26.536) +
|
||||||
|
(3.14*rand(Rng1)) );
|
||||||
#if (Value < 0)
|
#if (Value < 0)
|
||||||
#local Couleur = rgb <abs(Value), 0, 0>;
|
#local Couleur = rgb <abs(Value), 0, 0>;
|
||||||
#else
|
#else
|
||||||
@ -56,6 +57,8 @@ union {
|
|||||||
texture { New_Penny }
|
texture { New_Penny }
|
||||||
// }
|
// }
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -107,7 +110,7 @@ union {
|
|||||||
#end
|
#end
|
||||||
torus { R2, 0.0039 translate -0.08*y }
|
torus { R2, 0.0039 translate -0.08*y }
|
||||||
}
|
}
|
||||||
texture { T_Brass_1C scale 6.50 }
|
texture { GoldDark scale 6.50 }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------
|
/* ---------------------------------------------------------
|
||||||
@ -117,7 +120,7 @@ texture { T_Brass_1C scale 6.50 }
|
|||||||
{
|
{
|
||||||
difference {
|
difference {
|
||||||
merge {
|
merge {
|
||||||
sphere { 0, 0.0137 scale <1, 1, 4.70>
|
sphere { 0, 0.0141 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> }
|
||||||
@ -135,11 +138,14 @@ union {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
#declare DTa = 0.278;
|
#declare DTa = 0.278;
|
||||||
#declare DTb = 0.030;
|
#declare DTb = 0.030;
|
||||||
|
|
||||||
#declare HexaCone_head = object
|
// XXX #declare HexaCone_head = object
|
||||||
{
|
// XXX {
|
||||||
|
#macro HexaCone_head ()
|
||||||
merge {
|
merge {
|
||||||
difference {
|
difference {
|
||||||
torus { DTa, DTb }
|
torus { DTa, DTb }
|
||||||
@ -148,13 +154,17 @@ merge {
|
|||||||
}
|
}
|
||||||
sphere { 0, DTb*1.65 translate -DTa*x }
|
sphere { 0, DTb*1.65 translate -DTa*x }
|
||||||
sphere { 0, DTb*1.65 translate DTa*x }
|
sphere { 0, DTb*1.65 translate DTa*x }
|
||||||
|
#local R = rand(Rng1);
|
||||||
|
#if (R < 0.4)
|
||||||
|
texture { Orange_Glass }
|
||||||
|
#elseif (R < 0.8)
|
||||||
|
texture { Dark_Green_Glass }
|
||||||
|
#else
|
||||||
|
texture { Flashy }
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
#if (rand(Rng1) < 0.8)
|
#end // macro
|
||||||
texture { Orange_Glass }
|
// XXX }
|
||||||
#else
|
|
||||||
texture { Dark_Green_Glass }
|
|
||||||
#end
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ------------------------------------------
|
/* ------------------------------------------
|
||||||
* new Sat Dec 21 11:17:36 PM UTC 2024
|
* new Sat Dec 21 11:17:36 PM UTC 2024
|
||||||
@ -168,11 +178,10 @@ merge {
|
|||||||
box { <-DXail, -DYail, -DZail> , <DXail, DYail, 0> }
|
box { <-DXail, -DYail, -DZail> , <DXail, DYail, 0> }
|
||||||
}
|
}
|
||||||
|
|
||||||
#declare Le_rotor = object
|
#macro Le_rotor ()
|
||||||
{
|
|
||||||
#local Rrot = 0.0034;
|
|
||||||
#local Lrot = 0.13;
|
|
||||||
union {
|
union {
|
||||||
|
#local Rrot = 0.0034;
|
||||||
|
#local Lrot = 0.13;
|
||||||
sphere { -x*Lrot, Rrot }
|
sphere { -x*Lrot, Rrot }
|
||||||
cylinder { <-Lrot, 0, 0>, <Lrot, 0, 0>, Rrot }
|
cylinder { <-Lrot, 0, 0>, <Lrot, 0, 0>, Rrot }
|
||||||
sphere { x*Lrot, Rrot }
|
sphere { x*Lrot, Rrot }
|
||||||
@ -183,14 +192,17 @@ union {
|
|||||||
rotate (foo*35)*x
|
rotate (foo*35)*x
|
||||||
translate (foo*0.013)*x }
|
translate (foo*0.013)*x }
|
||||||
#end
|
#end
|
||||||
}
|
texture {
|
||||||
// texture { T_Chrome_1C }
|
#if ( rand(Rng1) < 0.333 )
|
||||||
texture {
|
pigment { color Orange }
|
||||||
pigment { color Orange }
|
#else
|
||||||
|
pigment { color Magenta }
|
||||||
|
#end
|
||||||
// finish { emission 0.7 }
|
// finish { emission 0.7 }
|
||||||
finish { ambient 0.7 phong 0.5 brilliance 0.9 metallic 0.7 }
|
finish { ambient 0.7 phong 0.5 brilliance 0.9 }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
#end
|
||||||
|
|
||||||
/* ------------------------------------------------------
|
/* ------------------------------------------------------
|
||||||
*
|
*
|
||||||
@ -228,7 +240,7 @@ texture { T_Brass_1C }
|
|||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
object { Tuyere }
|
object { Tuyere }
|
||||||
object { Le_rotor rotate x*(clock*5.8) translate -0.06*x }
|
object { Le_rotor () rotate x*(clock*5.8) translate -0.06*x }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,8 +263,8 @@ rotate -y*90
|
|||||||
union {
|
union {
|
||||||
object { HexaCone_Body () }
|
object { HexaCone_Body () }
|
||||||
#local T = 0.55;
|
#local T = 0.55;
|
||||||
object { HexaCone_head translate <0, 0, T+DTa> }
|
object { HexaCone_head () translate <0, 0, T+DTa> }
|
||||||
#if ( (rand(Rng1) > 0.27) )
|
#if ( (rand(Rng1) > 0.47) )
|
||||||
object { HexaCone_radar_A translate <0, T+0.18, 0> }
|
object { HexaCone_radar_A translate <0, T+0.18, 0> }
|
||||||
#else
|
#else
|
||||||
object { HexaCone_radar_B translate <0, T+0.18, 0> }
|
object { HexaCone_radar_B translate <0, T+0.18, 0> }
|
41
hexacone.pov
41
hexacone.pov
@ -6,41 +6,32 @@
|
|||||||
|
|
||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "metals.inc"
|
|
||||||
#include "textures.inc"
|
|
||||||
#include "stones.inc"
|
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
|
||||||
#declare Cone_Repere = object
|
object { Le_Decor }
|
||||||
{
|
|
||||||
union {
|
|
||||||
object { HexaCone () }
|
|
||||||
object { Repere translate <-0.4, -0.2, -0.5> }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#local K = 1.48;
|
|
||||||
object { Cone_Repere rotate y*90 translate -x*K }
|
|
||||||
object { Cone_Repere translate x*K }
|
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
light_source { <19, 7, 14>, rgb <0.77, 0.79, 0.80> }
|
// light_source { <19, 7, 14>, rgb <0.77, 0.79, 0.80> }
|
||||||
light_source { <19, 9, -14>, rgb <0.87, 0.79, 0.70> }
|
// light_source { <19, 9, -14>, rgb <0.87, 0.79, 0.70> }
|
||||||
|
|
||||||
// object { Repere scale 2 }
|
// object { Repere scale 2 }
|
||||||
|
|
||||||
|
#declare Loc_cam = <2, 2.5, 1> + (Pos_RedB_1 * 1.383);
|
||||||
|
|
||||||
camera {
|
camera {
|
||||||
location <-1.9+(8*NormClock), 0.70, 7.59-NormClock>
|
location Loc_cam
|
||||||
look_at <0.37, 0.0, 0>
|
look_at Pos_RedB_1 + <0.02, 1.16, 0>
|
||||||
focal_point <0.37, 0.0, 0>
|
// focal_point <0.37, 0.90, 0>
|
||||||
aperture 0.046
|
// aperture 0.046
|
||||||
blur_samples 30
|
// blur_samples 30
|
||||||
angle 55 - 28 * Cos_01(NormClock)
|
angle 55 - 25 * Cos_01(NormClock)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
115
hexawood.inc
Normal file
115
hexawood.inc
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
/*
|
||||||
|
* H E X A W O O D
|
||||||
|
*/
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#declare Hc_ep = 0.42; // epaisseur chassis
|
||||||
|
#declare Hc_rad = 0.70; // rayon du chassis
|
||||||
|
#declare Hc_elo = 1.85; // elongation sur x
|
||||||
|
|
||||||
|
// -------------------------------------------------------
|
||||||
|
|
||||||
|
#macro HW_Un_Cone ()
|
||||||
|
merge {
|
||||||
|
#local RA = R_basecone * 0.92;
|
||||||
|
cone { 0, RA, y*0.91, 0.000001 }
|
||||||
|
sphere { 0, RA }
|
||||||
|
#undef RA
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#macro HW_Cones ()
|
||||||
|
union {
|
||||||
|
#for (foo, 0, 360, 60)
|
||||||
|
#local E = Hc_rad * 0.85;
|
||||||
|
#local Tx = Hc_elo * E * sin(radians(foo));
|
||||||
|
#local Tz = E * cos(radians(foo));
|
||||||
|
object {
|
||||||
|
HW_Un_Cone ()
|
||||||
|
#if ( rand(Rng1) < 0.5 )
|
||||||
|
texture { T_Wood32 rotate 37 scale 1.30 }
|
||||||
|
// texture { WIP_color }
|
||||||
|
#else
|
||||||
|
texture { T_Wood23 rotate x*87 scale 1.23 }
|
||||||
|
// texture { T_WIP_alert }
|
||||||
|
#end
|
||||||
|
// rotate -z*foo
|
||||||
|
translate <Tx, Hc_ep - 0.22, Tz>
|
||||||
|
}
|
||||||
|
#end // end for
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
|
||||||
|
#macro HW_Chassis ()
|
||||||
|
difference {
|
||||||
|
#local El = Hc_elo;
|
||||||
|
merge {
|
||||||
|
torus { Hc_rad, 0.20 translate y*0.20 }
|
||||||
|
cylinder { 0, y*0.40, Hc_rad }
|
||||||
|
scale <El, 0.5, 1>
|
||||||
|
}
|
||||||
|
|
||||||
|
/* trou pour mettre une lampe */
|
||||||
|
cylinder { -1*y, 0.12*y, 0.08 }
|
||||||
|
|
||||||
|
torus { Hc_rad*0.30, 0.18 scale <1, 1.45, 1>
|
||||||
|
translate y*0.39 }
|
||||||
|
|
||||||
|
#for (foo, 0, 360, 60)
|
||||||
|
#local E = Hc_rad * 0.85;
|
||||||
|
#local Tx = El * E * sin(radians(foo));
|
||||||
|
#local Tz = E * cos(radians(foo));
|
||||||
|
sphere { 0, 0.17 translate <Tx, 0.20, Tz> }
|
||||||
|
#end
|
||||||
|
#for (foo, 0, 360, 60)
|
||||||
|
#local E = Hc_rad * 1.14;
|
||||||
|
#local Tx = El * E * sin(radians(foo+30));
|
||||||
|
#local Tz = E * cos(radians(foo+30));
|
||||||
|
cylinder { -y, y, 0.05 translate <Tx, 0, Tz> }
|
||||||
|
#end
|
||||||
|
translate y*0.10
|
||||||
|
texture { T_Wood17 scale 0.82 }
|
||||||
|
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#macro HW_une_patte ()
|
||||||
|
merge {
|
||||||
|
sphere { 0, 0.02 scale <1, 0.24, 1> translate 0.30*y }
|
||||||
|
cylinder { 0, 0.30*y, 0.02 }
|
||||||
|
sphere { 0, 0.07 scale <1, 0.29, 1> }
|
||||||
|
}
|
||||||
|
#if ( rand(Rng1) < 0.3 )
|
||||||
|
texture { Tinny_Brass }
|
||||||
|
#else
|
||||||
|
texture { New_Penny }
|
||||||
|
#end // if
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
#declare HW_les_pattes = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#local E = Hc_rad * 1.14;
|
||||||
|
#local El = Hc_elo;
|
||||||
|
#for (foo, 0, 360, 60)
|
||||||
|
#local Tx = El * E * sin(radians(foo+30));
|
||||||
|
#local Tz = E * cos(radians(foo+30));
|
||||||
|
object { HW_une_patte () translate <Tx, 0, Tz> }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare HexaWood = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { HW_Chassis () }
|
||||||
|
object { HW_les_pattes }
|
||||||
|
#if (mod(clock, 10) < 6)
|
||||||
|
light_source { 0.20*y rgb <0, 0.20, 0.95> }
|
||||||
|
#end
|
||||||
|
object { HW_Cones () translate y*0.15 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================
|
30
hexawood.pov
Normal file
30
hexawood.pov
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - H E X A W O O D
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
// object { Repere translate <10, 1, 10> }
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <39, 2+NormClock, 14>
|
||||||
|
look_at <-20, 1.7, 25.6>
|
||||||
|
angle 26 + 2*NormClock
|
||||||
|
}
|
||||||
|
|
25
orbite.pov
25
orbite.pov
@ -7,17 +7,17 @@
|
|||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
// =======================================================
|
// =======================================================
|
||||||
#declare R_planete = 1.42;
|
#declare R_planete = 1.45;
|
||||||
|
|
||||||
#declare Croute = object
|
#declare Croute = object
|
||||||
{
|
{
|
||||||
#local R1 = R_planete * 1.05;
|
#local R1 = R_planete * 1.05;
|
||||||
#local R2 = R_planete * 1.03;
|
#local R2 = R_planete * 1.03;
|
||||||
#local HC = R_planete * 0.11;
|
#local HC = R_planete * 0.12;
|
||||||
#local BN = R_planete * 3;
|
#local BN = R_planete * 3;
|
||||||
|
|
||||||
difference {
|
difference {
|
||||||
@ -28,8 +28,9 @@ difference {
|
|||||||
box { <-BN, -BN, -HC>, <BN, BN, HC> }
|
box { <-BN, -BN, -HC>, <BN, BN, HC> }
|
||||||
}
|
}
|
||||||
texture {
|
texture {
|
||||||
pigment { color rgb <0.20, 0.40, 0.10> }
|
pigment { color rgb <0.20, 0.30, 0.10> }
|
||||||
finish { reflection 0.25 }
|
normal { dents 0.38 scale 0.5}
|
||||||
|
finish { phong 0.80 reflection 0.05 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,8 +38,8 @@ texture {
|
|||||||
{
|
{
|
||||||
sphere { 0, R_planete }
|
sphere { 0, R_planete }
|
||||||
texture {
|
texture {
|
||||||
pigment { rgb <0.70, 0.50, 0.70> }
|
pigment { rgb <0.40, 0.50, 0.70> }
|
||||||
finish { reflection 0.25 }
|
finish { metallic 0.50 reflection 0.55 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,28 +53,28 @@ union {
|
|||||||
// =======================================================
|
// =======================================================
|
||||||
|
|
||||||
#local RO = 4.15;
|
#local RO = 4.15;
|
||||||
#local CK = NormClock * 7.87;
|
#local CK = NormClock * 13.37;
|
||||||
|
|
||||||
#declare PosX = RO * sin(CK);
|
#declare PosX = RO * sin(CK);
|
||||||
#declare PosY = 0;
|
#declare PosY = 0;
|
||||||
#declare PosZ = RO * cos(CK);
|
#declare PosZ = RO * cos(CK);
|
||||||
object { HexaBenz ()
|
object { HexaBenz ()
|
||||||
rotate -y*CK*2.333 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);
|
||||||
object { HexaCone ()
|
object { HexaCone ()
|
||||||
rotate y*CK*3.222 translate <PosX, PosY, PosZ>
|
rotate y*CK*99.22 translate <PosX, PosY, PosZ>
|
||||||
}
|
}
|
||||||
|
|
||||||
object { Planete rotate (-clock*0.21)*y }
|
object { Planete rotate (-clock*0.21)*y }
|
||||||
light_source { <19, 6, 15>, rgb <0.77, 0.79, 0.80> }
|
light_source { <19, 6, 15>, rgb <0.77, 0.79, 0.80> }
|
||||||
|
|
||||||
camera {
|
camera {
|
||||||
location <3, 1.50, 7.59>
|
location <3, -1.0+(2*NormClock), 8.59>
|
||||||
look_at <0.0, 0.0, 0>
|
look_at <0.0, 0.0, 0>
|
||||||
focal_point <0.07, 0.0, 0>
|
focal_point <0.0, 0.0, 0>
|
||||||
aperture 0.046
|
aperture 0.046
|
||||||
blur_samples 30
|
blur_samples 30
|
||||||
angle 62
|
angle 62
|
||||||
|
33
passage.pov
33
passage.pov
@ -7,25 +7,26 @@
|
|||||||
|
|
||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "metals.inc"
|
|
||||||
#include "textures.inc"
|
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
#declare PosX = 3.95;
|
||||||
|
#declare PosY = 2.80 + (NormClock*0.28);
|
||||||
|
#declare PosZ = (NormClock-0.5) * 44.27;
|
||||||
|
object { HexaCone () translate <PosX, PosY, PosZ> }
|
||||||
|
|
||||||
|
object { HexaCone () translate <PosX+2.96, PosY+1.92, PosZ-15.5> }
|
||||||
|
object { HexaBenz () translate <PosX-1.96, PosY+2.42, PosZ-17.5> }
|
||||||
|
|
||||||
object { Le_Decor }
|
object { Le_Decor }
|
||||||
|
|
||||||
#declare PosX = 0.333;
|
|
||||||
#declare PosY = 1.10 + (NormClock*0.24);
|
|
||||||
#declare PosZ = (NormClock-0.5) * 53.27;
|
|
||||||
|
|
||||||
object { HexaBenz () translate <PosX, PosY, PosZ> }
|
|
||||||
object { HexaCone () translate <PosX+1.96, PosY+1.42, PosZ-11.5> }
|
|
||||||
object { HexaCone () translate <PosX-1.96, PosY+2.42, PosZ-17.5> }
|
|
||||||
|
|
||||||
#if ( (clock < 141) )
|
#if ( (clock < 141) )
|
||||||
light_source {
|
light_source {
|
||||||
@ -40,7 +41,7 @@ light_source {
|
|||||||
|
|
||||||
#if ( (clock > 230) & (clock < 300) )
|
#if ( (clock > 230) & (clock < 300) )
|
||||||
light_source {
|
light_source {
|
||||||
<2, 0.30, -2> color White
|
<2, 0.30, -2> color Green
|
||||||
spotlight
|
spotlight
|
||||||
radius .044
|
radius .044
|
||||||
falloff 2
|
falloff 2
|
||||||
@ -50,11 +51,11 @@ light_source {
|
|||||||
#end
|
#end
|
||||||
|
|
||||||
camera {
|
camera {
|
||||||
location <-1.76, 1.03, 9.76>
|
location <-2.76, 1.83, 8.76>
|
||||||
look_at <PosX+0.08, PosY, PosZ>
|
look_at <PosX+0.09, PosY, PosZ-0.03>
|
||||||
// focal_point <0, 1, 0>
|
// focal_point <0, 1, 0>
|
||||||
// aperture 0.046
|
// aperture 0.046
|
||||||
// blur_samples 30
|
// blur_samples 30
|
||||||
angle 34
|
angle 32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
51
remote.pov
Normal file
51
remote.pov
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - R E M O T E
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#declare A = <-SzSol, 16, -8>;
|
||||||
|
#declare B = <SzSol+4, 18, -11>;
|
||||||
|
#declare P = Interpolate(A, B, NormClock);
|
||||||
|
object { HexaCone () rotate y*((6*NormClock)+80) translate P }
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
object { HexaBenz () rotate y*(clock/9) translate <-9, 3, 7> }
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
#declare A = <-15, -1.9, SzSol>;
|
||||||
|
#declare B = < 23, -0.7, SzSol>;
|
||||||
|
#declare P = Interpolate(A, B, NormClock);
|
||||||
|
object { HexaWood translate P }
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
// object { Repere scale 3 translate <SzSol, 2, SzSol> }
|
||||||
|
|
||||||
|
#local DistCam = 280;
|
||||||
|
#local CK = 0.56 + (0.52 * NormClock);
|
||||||
|
#declare CamX = DistCam * sin(CK);
|
||||||
|
#declare CamY = 28;
|
||||||
|
#declare CamZ = DistCam * cos(CK);
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <CamX, CamY, CamZ>
|
||||||
|
look_at <0, 0.3, 0>
|
||||||
|
// focal_point <2, 1, 12>
|
||||||
|
// aperture 0.046
|
||||||
|
// blur_samples 30
|
||||||
|
angle 10
|
||||||
|
}
|
42
scene.pov
42
scene.pov
@ -7,40 +7,30 @@
|
|||||||
|
|
||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "metals.inc"
|
|
||||||
#include "textures.inc"
|
|
||||||
|
|
||||||
#declare NormClock = clock / 360.0;
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
object { Le_Decor }
|
object { Le_Decor }
|
||||||
|
|
||||||
object { HexaCone ()
|
#declare CK = 144 + (clock * 0.27);
|
||||||
rotate < 3, 0, -4> rotate y*17 translate y*1.11 }
|
#declare Dcam = 3.75;
|
||||||
|
#declare CamX = Dcam * cos(radians(CK));
|
||||||
|
#declare CamZ = Dcam * 1.20 * sin(radians(CK));
|
||||||
|
|
||||||
object { HexaBenz ()
|
#declare Lat = <0.03, 2.45, 0.17>;
|
||||||
rotate <6, 40, -7> translate <-8, 3, 7> }
|
|
||||||
|
|
||||||
#declare CK = 96 + (clock * 1);
|
|
||||||
#declare Dcam = 2.22;
|
|
||||||
#declare CamX = Dcam * sin(radians(CK));
|
|
||||||
#declare CamZ = Dcam * 1.20 * cos(radians(CK));
|
|
||||||
#declare CamZ = CamZ - 0.11;
|
|
||||||
|
|
||||||
#declare Lat = <0.03, 1.08, 0.17>;
|
|
||||||
camera {
|
camera {
|
||||||
location <CamX, 1.23, CamZ>
|
location <CamX, 1.97, CamZ>
|
||||||
look_at Lat
|
look_at Lat
|
||||||
focal_point Lat
|
// focal_point Lat
|
||||||
aperture 0.046
|
// aperture 0.046
|
||||||
blur_samples 30
|
// blur_samples 30
|
||||||
angle 70
|
angle 70
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
light_source { <CamX*1.3, 1.35, 1.2+(CamZ*1.3)>,
|
|
||||||
rgb <0.47, 0.65, 0.49> }
|
|
||||||
**/
|
|
||||||
|
38
survol.pov
Normal file
38
survol.pov
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - S U R V O L
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "hexacone.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#include "dynamic.inc"
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
// object { Repere scale 2 translate y*2 }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#declare Debut = <-3, 87, 151> ;
|
||||||
|
#declare Fin = < 2, 91, 41> ;
|
||||||
|
#declare Pos = Cos_01(NormClock);
|
||||||
|
#declare PosCam = Interpolate(Debut, Fin, Pos);
|
||||||
|
|
||||||
|
#declare LatCam = PosCam + <-1, -20, -(3+(NormClock+11))>;
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location PosCam
|
||||||
|
look_at LatCam
|
||||||
|
angle 56
|
||||||
|
}
|
||||||
|
|
@ -2,10 +2,31 @@
|
|||||||
|
|
||||||
Build system and utilities.
|
Build system and utilities.
|
||||||
|
|
||||||
|
## Make a sequence
|
||||||
|
|
||||||
|
Un argument pour construire la séquence entière ou deux pour démarrer au milieu, c'est pratique quand le disjoncteur fait un *beu-beu*. Exemples :
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
$ tools/mkloop.sh survol
|
||||||
|
$ tools/mkloop.sh survol 133
|
||||||
|
```
|
||||||
|
|
||||||
## Linkfarming
|
## Linkfarming
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
## Encoding
|
## Encoding
|
||||||
|
|
||||||
|
Le [script](./encode.sh) n'est qu'un wrapper autour de
|
||||||
|
la fonction `ff_encodage()` de la lib des tools :
|
||||||
|
[fonctions.sh](fonctions.sh). Par défaut, il encode
|
||||||
|
la séquence *essai*.
|
||||||
|
Le fichier de sortie s'appelle *wip.mp4* dans tous les cas.
|
||||||
|
|
||||||
## Plot the timing
|
## Plot the timing
|
||||||
|
|
||||||
|
|
||||||
|
9
tools/config.sh
Normal file
9
tools/config.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
Img_Width=1024
|
||||||
|
Img_Height=720
|
||||||
|
|
||||||
|
TEXTCOL="White"
|
||||||
|
STROKOL="OliveDrab"
|
||||||
|
|
||||||
|
NBFRAMES=400
|
@ -2,11 +2,12 @@
|
|||||||
|
|
||||||
set -e ; set -u
|
set -e ; set -u
|
||||||
|
|
||||||
|
# set default value's)
|
||||||
|
srcdir="essai"
|
||||||
|
|
||||||
if [ $# == 1 ]
|
if [ $# == 1 ]
|
||||||
then
|
then
|
||||||
srcdir=$1
|
srcdir=$1
|
||||||
else
|
|
||||||
srcdir="essai"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source tools/fonctions.sh
|
source tools/fonctions.sh
|
||||||
|
@ -4,8 +4,14 @@ set -eu
|
|||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
visual_sleep ()
|
visual_sleep ()
|
||||||
{
|
{
|
||||||
for foo in $(seq 0 $1) ; do
|
msg="$1"
|
||||||
printf '*'
|
nbre="$2"
|
||||||
|
|
||||||
|
# echo $msg ; echo $nbre
|
||||||
|
|
||||||
|
for foo in $(seq 0 $nbre) ; do
|
||||||
|
local bar=$(( $nbre - $foo ))
|
||||||
|
printf "======== %-20s %3d\r" "$msg" $bar
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
echo
|
echo
|
||||||
@ -42,7 +48,6 @@ ffmpeg -nostdin \
|
|||||||
-tune film \
|
-tune film \
|
||||||
$FILMNAME
|
$FILMNAME
|
||||||
|
|
||||||
# wc -c $FILMNAME | tee -a WS/log
|
|
||||||
}
|
}
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
set -e ; set -u
|
set -e ; set -u
|
||||||
|
|
||||||
|
source tools/config.sh
|
||||||
|
|
||||||
IDX=0
|
IDX=0
|
||||||
SPOOL="frames/Spool"
|
SPOOL="frames/Spool"
|
||||||
SEQNAME="none"
|
SEQNAME="none"
|
||||||
TMP="WS/tmp.png"
|
TMP="WS/tmp.png"
|
||||||
FONTE="Helvetica-Bold"
|
FONTE="Helvetica-Bold"
|
||||||
TEXTCOL="yellow"
|
|
||||||
STROKOL="darkblue"
|
|
||||||
|
|
||||||
source tools/fonctions.sh
|
source tools/fonctions.sh
|
||||||
|
|
||||||
@ -32,13 +32,26 @@ linkfarm ()
|
|||||||
{
|
{
|
||||||
SRC="frames/$1"
|
SRC="frames/$1"
|
||||||
echo "linkfarm $SRC" | tee -a WS/log
|
echo "linkfarm $SRC" | tee -a WS/log
|
||||||
|
|
||||||
|
local INTER="/dev/shm/tmp-intertitre.png"
|
||||||
tools/plot-timing.sh $1
|
tools/plot-timing.sh $1
|
||||||
|
|
||||||
local NBRE=60
|
local NBRE=42
|
||||||
|
|
||||||
|
convert "WS/negatif.png" \
|
||||||
|
-gravity north \
|
||||||
|
-font $FONTE \
|
||||||
|
-pointsize 100 \
|
||||||
|
-kerning 8 \
|
||||||
|
-fill $TEXTCOL \
|
||||||
|
-strokewidth 2 -stroke $STROKOL \
|
||||||
|
-annotate +0+530 "$1" \
|
||||||
|
${INTER}
|
||||||
|
|
||||||
for foo in $(seq 0 $NBRE)
|
for foo in $(seq 0 $NBRE)
|
||||||
do
|
do
|
||||||
copy_a_file "WS/negatif.png"
|
copy_a_file $INTER
|
||||||
|
# :
|
||||||
done
|
done
|
||||||
|
|
||||||
for foo in $(seq 0 $NBRE)
|
for foo in $(seq 0 $NBRE)
|
||||||
@ -51,9 +64,11 @@ do
|
|||||||
copy_a_file $src
|
copy_a_file $src
|
||||||
done
|
done
|
||||||
|
|
||||||
|
PIC=$( printf "%s/%05d.png" $SRC $((NBFRAMES-1)) )
|
||||||
|
# echo "End pic $PIC" >> WS/log
|
||||||
for foo in $(seq 0 $NBRE)
|
for foo in $(seq 0 $NBRE)
|
||||||
do
|
do
|
||||||
copy_a_file "$SRC/00359.png"
|
copy_a_file "$PIC"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
@ -61,8 +76,8 @@ faire_le_titre ()
|
|||||||
{
|
{
|
||||||
echo "faire le titre"
|
echo "faire le titre"
|
||||||
|
|
||||||
local NBRE=180
|
local NBRE=300
|
||||||
local SRC="frames/passage/00059.png"
|
local SRC="frames/hexawood/00199.png"
|
||||||
local GRAY="/dev/shm/tmp-titre.png"
|
local GRAY="/dev/shm/tmp-titre.png"
|
||||||
|
|
||||||
convert -colorspace gray -colors 27 $SRC $GRAY
|
convert -colorspace gray -colors 27 $SRC $GRAY
|
||||||
@ -70,14 +85,14 @@ convert -colorspace gray -colors 27 $SRC $GRAY
|
|||||||
for foo in $(seq 0 $NBRE)
|
for foo in $(seq 0 $NBRE)
|
||||||
do
|
do
|
||||||
Ypos=$(( -175 + foo ))
|
Ypos=$(( -175 + foo ))
|
||||||
convert ${GRAY} \
|
convert ${GRAY} \
|
||||||
-gravity north \
|
-gravity north \
|
||||||
-font $FONTE \
|
-font $FONTE \
|
||||||
-pointsize 172 \
|
-pointsize 140 \
|
||||||
-kerning 6 \
|
-kerning 6 \
|
||||||
-fill $TEXTCOL \
|
-fill $TEXTCOL \
|
||||||
-strokewidth 3 -stroke $STROKOL \
|
-strokewidth 3 -stroke $STROKOL \
|
||||||
-annotate +0+${Ypos} "HexaCone" \
|
-annotate +0+${Ypos} "La famille\nHexaCone" \
|
||||||
${TMP}
|
${TMP}
|
||||||
# identify ${TMP}
|
# identify ${TMP}
|
||||||
copy_a_file ${TMP}
|
copy_a_file ${TMP}
|
||||||
@ -88,14 +103,18 @@ echo
|
|||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
faire_la_fin ()
|
faire_la_fin ()
|
||||||
{
|
{
|
||||||
local NBRE=180
|
local NBRE=160
|
||||||
datetime=$(LANG=fr date -u +"%Y/%m/%d")
|
datetime=$(LANG=fr date -u +"%Y/%m/%d %H:%M")
|
||||||
echo $datetime | tee -a WS/log
|
echo $datetime | tee -a WS/log
|
||||||
|
|
||||||
|
local SRC="frames/escadrille/00299.png"
|
||||||
|
local GRAY="/dev/shm/tmp-titre.png"
|
||||||
|
convert -colorspace gray -colors 23 $SRC $GRAY
|
||||||
|
|
||||||
for foo in $(seq 0 $NBRE)
|
for foo in $(seq 0 $NBRE)
|
||||||
do
|
do
|
||||||
Ypos=$(( foo + 20 ))
|
Ypos=$(( foo + 20 ))
|
||||||
convert "WS/negatif.png" \
|
convert ${GRAY} \
|
||||||
-gravity north \
|
-gravity north \
|
||||||
-font $FONTE \
|
-font $FONTE \
|
||||||
-pointsize 86 \
|
-pointsize 86 \
|
||||||
@ -107,7 +126,7 @@ do
|
|||||||
-pointsize 48 \
|
-pointsize 48 \
|
||||||
-strokewidth 1 \
|
-strokewidth 1 \
|
||||||
-gravity south \
|
-gravity south \
|
||||||
-annotate +0+170 "${datetime}" \
|
-annotate +0+110 "${datetime}" \
|
||||||
${TMP}
|
${TMP}
|
||||||
# identify ${TMP}
|
# identify ${TMP}
|
||||||
copy_a_file ${TMP}
|
copy_a_file ${TMP}
|
||||||
@ -121,17 +140,22 @@ figlet "Link farmer"
|
|||||||
|
|
||||||
rm -f frames/Spool/*.png
|
rm -f frames/Spool/*.png
|
||||||
|
|
||||||
# tools/plot-timing.sh
|
|
||||||
faire_le_titre
|
faire_le_titre
|
||||||
|
|
||||||
linkfarm hexabenz
|
linkfarm hexabenz
|
||||||
linkfarm hexacone
|
linkfarm hexawood
|
||||||
linkfarm escadrille
|
linkfarm escadrille
|
||||||
|
linkfarm survol
|
||||||
|
linkfarm cutoff
|
||||||
linkfarm topview
|
linkfarm topview
|
||||||
linkfarm passage
|
linkfarm passage
|
||||||
linkfarm scene
|
linkfarm scene
|
||||||
|
linkfarm carto
|
||||||
|
linkfarm circular
|
||||||
|
linkfarm bubblecut
|
||||||
linkfarm orbite
|
linkfarm orbite
|
||||||
|
linkfarm hexacone
|
||||||
|
linkfarm remote
|
||||||
linkfarm essai
|
linkfarm essai
|
||||||
|
|
||||||
tools/plot-timing.sh
|
tools/plot-timing.sh
|
||||||
|
@ -1,21 +1,29 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -e ; set -u
|
set -e ; set -u
|
||||||
|
|
||||||
|
source tools/config.sh
|
||||||
source tools/fonctions.sh
|
source tools/fonctions.sh
|
||||||
|
|
||||||
SEQNAME="$1"
|
SEQNAME="$1"
|
||||||
NBFRAMES=360
|
START=0
|
||||||
|
|
||||||
|
if [ $# == 2 ]
|
||||||
|
then
|
||||||
|
START=$2
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Running $0 $SEQNAME" >> WS/log
|
echo "$0 $SEQNAME from $START" >> WS/log
|
||||||
|
|
||||||
DIMS="-W1024 -H768"
|
DIMS="-W$Img_Width -H$Img_Height"
|
||||||
POVOPT="+q9 -a -d ${DIMS} -WT6"
|
NBFR=" Declare=NbFrames=$NBFRAMES "
|
||||||
|
echo $NBFR
|
||||||
|
POVOPT="+q9 +A0.02 -d ${DIMS} ${NBFR} -WT7"
|
||||||
echo $POVOPT ; echo ; sleep 2
|
echo $POVOPT ; echo ; sleep 2
|
||||||
|
|
||||||
TMPIMG=/dev/shm/${SEQNAME}-tmp.png
|
TMPIMG=/dev/shm/${SEQNAME}-tmp.png
|
||||||
|
|
||||||
for frame in $(seq 0 $((NBFRAMES-1)))
|
for frame in $(seq $START $((NBFRAMES-1)))
|
||||||
do
|
do
|
||||||
|
|
||||||
img=$(printf "frames/%s/%05d.png" $SEQNAME $frame)
|
img=$(printf "frames/%s/%05d.png" $SEQNAME $frame)
|
||||||
@ -25,27 +33,30 @@ do
|
|||||||
err=$?
|
err=$?
|
||||||
if [ $err != 0 ] ; then
|
if [ $err != 0 ] ; then
|
||||||
echo "$SEQNAME fail $frame" >> WS/log
|
echo "$SEQNAME fail $frame" >> WS/log
|
||||||
mogrify -colorspace gray $img
|
mogrify -colorspace gray -blur 5x5 $img
|
||||||
visual_sleep 12
|
visual_sleep "render fail" 12
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
set -e
|
set -e
|
||||||
txt=$(printf "%s %03d" ${SEQNAME} $frame | tr '0' 'o')
|
txt=$(printf "%s %03d" ${SEQNAME} $frame | tr '01' 'ol')
|
||||||
# echo $frame $img $txt
|
# echo $frame $img $txt
|
||||||
convert ${TMPIMG} \
|
convert ${TMPIMG} \
|
||||||
-font Courier-Bold \
|
-font Courier-Bold \
|
||||||
-pointsize 18 \
|
-pointsize 11 \
|
||||||
-fill Gray80 \
|
-kerning 4 \
|
||||||
-gravity south \
|
-fill ${TEXTCOL} \
|
||||||
-annotate +0+5 "$txt" \
|
-gravity north \
|
||||||
|
-annotate +12+5 "$txt" \
|
||||||
${img}
|
${img}
|
||||||
fin=$(date +%s)
|
fin=$(date +%s)
|
||||||
echo
|
echo
|
||||||
echo ${SEQNAME} $frame $(( fin - debut )) | \
|
printf "%-12s %4d %4d\n" \
|
||||||
tee -a WS/mp4.timing
|
${SEQNAME} $frame $(( fin-debut )) | \
|
||||||
echo ; sleep 3
|
tee -a WS/mp4.timing
|
||||||
|
echo ; sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
|
date --utc > WS/$SEQNAME.done
|
||||||
echo
|
echo
|
||||||
|
|
||||||
ff_encodage $SEQNAME wip-${SEQNAME}.mp4
|
ff_encodage $SEQNAME wip-${SEQNAME}.mp4
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
set -ue
|
set -ue
|
||||||
|
|
||||||
|
source tools/config.sh
|
||||||
|
|
||||||
TMPFILE="/dev/shm/plot-timing.tmp"
|
TMPFILE="/dev/shm/plot-timing.tmp"
|
||||||
IMAGE="timing.png"
|
IMAGE="timing.png"
|
||||||
|
|
||||||
@ -12,52 +14,62 @@ else
|
|||||||
sequence="escadrille"
|
sequence="escadrille"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "plot timing $sequence" | tee -a WS/log
|
# echo "plot timing $sequence" >> WS/log
|
||||||
# wc WS/mp4.timing | tee -a WS/log
|
|
||||||
|
|
||||||
grep $sequence WS/mp4.timing | tail -3600 | awk ' \
|
grep $sequence WS/mp4.timing | tail -3600 | awk \
|
||||||
|
-v nbframes=$NBFRAMES \
|
||||||
|
' \
|
||||||
BEGIN { \
|
BEGIN { \
|
||||||
nbrames=360; \
|
# print "nb frames = ", nbframes; \
|
||||||
for (foo=0; foo<nbrames; foo++) { \
|
for (foo=0; foo<nbframes; foo++) { \
|
||||||
mini[foo] = 666; \
|
mini[foo] = 666; \
|
||||||
maxi[foo] = -42; \
|
maxi[foo] = -42; \
|
||||||
count[foo] = 0; \
|
count[foo] = 0; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
\
|
|
||||||
|
# for every line \
|
||||||
{ \
|
{ \
|
||||||
accu[$2] += $3; \
|
accu[$2] += $3; \
|
||||||
count[$2]++; \
|
count[$2]++; \
|
||||||
if (mini[$2] > $3) mini[$2] = $3; \
|
if (mini[$2] > $3) mini[$2] = $3; \
|
||||||
if (maxi[$2] < $3) maxi[$2] = $3; \
|
if (maxi[$2] < $3) maxi[$2] = $3;
|
||||||
|
last[$2] = $3 \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
END { \
|
END { \
|
||||||
for (foo=0; foo<nbrames; foo++) { \
|
for (foo=0; foo<nbframes; foo++) { \
|
||||||
if (count[foo] > 0) { \
|
if (count[foo] > 0) { \
|
||||||
mean = accu[foo] / count[foo]; \
|
mean = accu[foo] / count[foo]; \
|
||||||
printf "%4d %4f %4d %4d\n", foo, mean, \
|
printf "%4d %4f %4d %4d %4d\n",
|
||||||
mini[foo], maxi[foo]; \
|
foo, mean,
|
||||||
|
mini[foo], maxi[foo],
|
||||||
|
last[foo];
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
' > $TMPFILE
|
' > $TMPFILE
|
||||||
|
|
||||||
# cat -n $TMPFILE | tail # ; exit
|
# head $TMPFILE ; exit
|
||||||
|
|
||||||
gnuplot << __EOC__
|
gnuplot << __EOC__
|
||||||
set term png size 1024,768
|
set term png size $Img_Width,$Img_Height
|
||||||
set output "timing.png"
|
set output "timing.png"
|
||||||
set grid
|
set grid
|
||||||
set xrange [:360]
|
set xrange [:400]
|
||||||
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"
|
||||||
set ylabel "temps en secondes"
|
set ylabel "temps en secondes"
|
||||||
plot "/dev/shm/plot-timing.tmp" u 1:4 w l lc "#ff0000" t "maximum", \
|
plot "/dev/shm/plot-timing.tmp" u 1:4 w l \
|
||||||
"/dev/shm/plot-timing.tmp" u 1:3 w l lc "#0000ff" t "minimum", \
|
lc "#ff0000" t "maximum", \
|
||||||
"/dev/shm/plot-timing.tmp" u 1:2 w l lc "#000000" t "moyenne",
|
"/dev/shm/plot-timing.tmp" u 1:3 w l \
|
||||||
|
lc "#0000ff" t "minimum", \
|
||||||
|
"/dev/shm/plot-timing.tmp" u 1:2 w l \
|
||||||
|
lc "#00aa00" t "moyenne", \
|
||||||
|
"/dev/shm/plot-timing.tmp" u 1:5 w l \
|
||||||
|
lc "#000000" t "last"
|
||||||
__EOC__
|
__EOC__
|
||||||
|
|
||||||
convert -negate -colorspace gray -level -33% $IMAGE WS/negatif.png
|
convert -negate -level -33% $IMAGE WS/negatif.png
|
||||||
|
|
||||||
|
45
topview.pov
45
topview.pov
@ -7,39 +7,46 @@
|
|||||||
|
|
||||||
#include "globals.inc"
|
#include "globals.inc"
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "metals.inc"
|
|
||||||
#include "textures.inc"
|
|
||||||
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
#include "elements.inc"
|
#include "hexacone.inc"
|
||||||
#include "hexabenz.inc"
|
#include "hexabenz.inc"
|
||||||
|
#include "hexawood.inc"
|
||||||
|
#include "trident.inc"
|
||||||
|
|
||||||
object { Le_Decor }
|
/* XXX
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#declare TrX = 1.84 * sqrt(NormClock);
|
#declare TrX = 1.84 * sqrt(NormClock);
|
||||||
#declare TrY = 0.90 + (3.5 * Cos_01(NormClock));
|
#declare TrY = 0.90 + (3.5 * Cos_01(NormClock));
|
||||||
#declare TrZ = 9.999 * sqrt(NormClock);
|
#declare TrZ = 9.999 * sqrt(NormClock);
|
||||||
#declare TrH = <TrX, TrY, TrZ>;
|
#declare TrH = <TrX, TrY, TrZ>;
|
||||||
#declare RrY = 97 * sqrt(NormClock);
|
#declare RrY = 97 * sqrt(NormClock);
|
||||||
object { HexaCone () rotate y*RrY translate TrH }
|
object { HexaCone () rotate y*RrY translate TrH }
|
||||||
|
*/
|
||||||
|
|
||||||
object { HexaCone () rotate z*9.1 translate <5, 3, -8> }
|
#include "dynamic.inc"
|
||||||
object { HexaBenz () translate <-4, 2, -6> }
|
|
||||||
|
object { HexaCone () rotate z*9.1 translate <7, 3, -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 P = Interpolate(A, B, NormClock);
|
||||||
|
object { HexaWood translate P }
|
||||||
|
|
||||||
light_source { <-16, 17, -24>, rgb <0.51, 0.65, 0.40> }
|
|
||||||
// object { Repere scale 2 }
|
// object { Repere scale 2 }
|
||||||
|
|
||||||
#declare CamY = 19 - (4.5*NormClock);
|
object { Le_Decor }
|
||||||
#declare LatY = -3 + NormClock;
|
|
||||||
|
#declare CamY = 32 - (21.36 * Cos_01(NormClock));
|
||||||
|
#declare LatY = -4 + ( 2.12 * NormClock);
|
||||||
|
|
||||||
camera {
|
camera {
|
||||||
location <-3.60, CamY, 21.09>
|
location <-3.60, CamY, 10.09>
|
||||||
look_at <0, LatY, 0>
|
look_at <0, LatY, 0>
|
||||||
focal_point <2, 1, 12>
|
// focal_point <2, 1, 12>
|
||||||
aperture 0.046
|
// aperture 0.046
|
||||||
blur_samples 30
|
// blur_samples 30
|
||||||
angle 45 + (5*NormClock)
|
angle 45 + (82*NormClock)
|
||||||
}
|
}
|
||||||
|
92
trident.inc
Normal file
92
trident.inc
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
|
||||||
|
#declare Trid_length = 2;
|
||||||
|
|
||||||
|
// ------------------------------------------------------
|
||||||
|
#declare Trid_cone = object
|
||||||
|
{
|
||||||
|
cone { 0, R_basecone, y*0.89, 0.0001 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#macro Trid_A_cone ()
|
||||||
|
difference {
|
||||||
|
object { Trid_cone }
|
||||||
|
object { Trid_cone translate -y*0.001 }
|
||||||
|
#local Foo = rand(Rng1);
|
||||||
|
#if (Foo < 0.25)
|
||||||
|
texture { T_Brass_2C }
|
||||||
|
#elseif (Foo < 0.50)
|
||||||
|
texture { T_Chrome_2C }
|
||||||
|
#elseif (Foo < 0.75)
|
||||||
|
texture { T_Chrome_3A }
|
||||||
|
#else
|
||||||
|
texture { GoldDark }
|
||||||
|
#end // else
|
||||||
|
#undef Foo
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
// ------------------------------------------------------
|
||||||
|
#macro Trid_A_head ()
|
||||||
|
union {
|
||||||
|
#for (A, 0, 360, 120)
|
||||||
|
#local E = 0.26;
|
||||||
|
#local Tx = E * sin(radians(A));
|
||||||
|
#local Tz = E * cos(radians(A));
|
||||||
|
object { Trid_A_cone () translate <Tx*2, 0, Tz> }
|
||||||
|
#end // for
|
||||||
|
#undef Tx
|
||||||
|
#undef Tz
|
||||||
|
torus { E*1.80, 0.02
|
||||||
|
scale <1, 4, 1> translate -y*0.12
|
||||||
|
texture { T_Chrome_3B } }
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
// ------------------------------------------------------
|
||||||
|
#macro Trid_A_body ()
|
||||||
|
#local L = Trid_length / 2;
|
||||||
|
#local R = 0.095;
|
||||||
|
merge {
|
||||||
|
cylinder { <0, -L, 0>, <0, L, 0>, R }
|
||||||
|
sphere { 0, R scale <1, 6, 1> translate y*L }
|
||||||
|
#if (rand(Rng1) < 0.50)
|
||||||
|
texture { T_Chrome_1C }
|
||||||
|
#else
|
||||||
|
texture { T_Brass_5E }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#undef L
|
||||||
|
#end // macro
|
||||||
|
// ------------------------------------------------------
|
||||||
|
#macro Trid_A_ailette ()
|
||||||
|
union {
|
||||||
|
#local E = 0.49;
|
||||||
|
object { Trid_A_cone () scale 0.85
|
||||||
|
translate <E, -0.05, 0> }
|
||||||
|
cylinder { 0, x*E, 0.011
|
||||||
|
scale <1, 5, 1> texture { T_Silver_3A } }
|
||||||
|
#undef E
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
// ------------------------------------------------------
|
||||||
|
#macro Trid_A_tail ()
|
||||||
|
union {
|
||||||
|
#for (A, 0, 360, 120)
|
||||||
|
object { Trid_A_ailette () rotate (A+270)*y }
|
||||||
|
#end // for
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
// ------------------------------------------------------
|
||||||
|
// ------------------------------------------------------
|
||||||
|
#macro Trident_A ()
|
||||||
|
union {
|
||||||
|
object { Trid_A_head () translate y*0.85 }
|
||||||
|
object { Trid_A_body () }
|
||||||
|
object { Trid_A_tail () translate -y*0.6 }
|
||||||
|
// object { Repere translate <0.1, 0, 0.1> }
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
// ------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user