Compare commits
76 Commits
e599be8aa3
...
full-v1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22be42d86e | ||
|
|
6828b25402 | ||
|
|
a290042ee9 | ||
|
|
d8de01a0ae | ||
|
|
f8f3dcd85e | ||
|
|
f8fa077655 | ||
|
|
8b3126cd78 | ||
|
|
8d438d5885 | ||
|
|
8c30830837 | ||
|
|
540dc86601 | ||
|
|
6133319acd | ||
|
|
3d779f68c6 | ||
|
|
abda4f6896 | ||
|
|
afefaa9188 | ||
|
|
273312e7c5 | ||
|
|
5d34aac50c | ||
|
|
936afb01b4 | ||
|
|
e62a531a82 | ||
|
|
f06283b570 | ||
|
|
2ed567a33c | ||
|
|
cb36297499 | ||
|
|
afc4fee8a7 | ||
|
|
a60281b684 | ||
|
|
8569be0327 | ||
|
|
7b186fad2a | ||
|
|
384df739dd | ||
|
|
8c548c6f0e | ||
|
|
d89876b633 | ||
|
|
5b7ad96a29 | ||
|
|
124c3bfd5c | ||
|
|
1d91199ebb | ||
|
|
ce8c0f2bd7 | ||
|
|
0285a14e02 | ||
|
|
cf95106744 | ||
|
|
cdc0fb6780 | ||
|
|
e978a02196 | ||
|
|
d993296ea9 | ||
|
|
5c4287a572 | ||
|
|
750a9d7214 | ||
|
|
e02ec90a44 | ||
|
|
977baa89f4 | ||
|
|
e9ae829ab3 | ||
|
|
09792791f7 | ||
|
|
1f330dec14 | ||
|
|
73bcc2a984 | ||
|
|
d16132de30 | ||
|
|
929d59b169 | ||
|
|
8cbae25479 | ||
|
|
8368fe54e8 | ||
|
|
2fa9a9918a | ||
|
|
2a59fba488 | ||
|
|
090981d84c | ||
|
|
adf59ceff6 | ||
|
|
ef23006b9b | ||
|
|
b40680cb62 | ||
|
|
47b0d005c8 | ||
|
|
7e869133a5 | ||
|
|
8a3e889145 | ||
|
|
d299ad13a1 | ||
|
|
89c78425ce | ||
|
|
00790763b1 | ||
|
|
1fc0810d40 | ||
|
|
d0ef5351d3 | ||
|
|
e51921d212 | ||
|
|
ff8ccfea55 | ||
|
|
cda8b7d2cd | ||
|
|
f5007558ed | ||
|
|
c4c2d4a307 | ||
|
|
0eecce13be | ||
|
|
7665329c25 | ||
|
|
2c87793fb1 | ||
|
|
7936e64a06 | ||
|
|
6b16d3fb75 | ||
|
|
6450765979 | ||
|
|
286e384f64 | ||
|
|
76e0955e19 |
13
.gitignore
vendored
13
.gitignore
vendored
@@ -1,8 +1,17 @@
|
|||||||
|
|
||||||
frames/*
|
frames/*
|
||||||
datas/*.xcf
|
!frames/README.md
|
||||||
|
|
||||||
WS/timing
|
datas/*.xcf
|
||||||
|
datas/*.ttf
|
||||||
|
datas/*.jpg
|
||||||
|
datas/*.webp
|
||||||
|
|
||||||
|
WS/*timing
|
||||||
|
WS/log*
|
||||||
|
|
||||||
*.png
|
*.png
|
||||||
*.gif
|
*.gif
|
||||||
|
*.mp4
|
||||||
|
*.pov-state
|
||||||
|
|
||||||
|
|||||||
35
Makefile
35
Makefile
@@ -1,16 +1,39 @@
|
|||||||
|
|
||||||
|
DIMS = -W1600 -H1200
|
||||||
|
POVOPT = +q9 +a0.02 -d
|
||||||
|
POVDEP = contexte.inc elements.inc hexabenz.inc \
|
||||||
|
globals.inc datas/hf.png
|
||||||
|
|
||||||
|
CK=180
|
||||||
|
|
||||||
|
|
||||||
POVOPT = +q9 +a -d
|
PNG: essai.png scene.png topview.png passage.png \
|
||||||
POVDEP = contexte.inc elements.inc datas/hf.png
|
orbite.png hexabenz.png escadrille.png \
|
||||||
|
hexacone.png
|
||||||
|
|
||||||
|
|
||||||
PNG: essai.png scene.png
|
topview.png: topview.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
essai.png: essai.pov Makefile $(POVDEP)
|
essai.png: essai.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) -W640 -H480 -i$< -o$@
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
hexabenz.png: hexabenz.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
hexacone.png: hexacone.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
passage.png: passage.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
orbite.png: orbite.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
|
||||||
|
|
||||||
scene.png: scene.pov Makefile $(POVDEP)
|
scene.png: scene.pov Makefile $(POVDEP)
|
||||||
povray $(POVOPT) -W1280 -H1024 +K166 -i$< -o$@
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
escadrille.png: escadrille.pov Makefile $(POVDEP)
|
||||||
|
povray $(POVOPT) $(DIMS) +K$(CK) -i$< -o$@
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
51
README.md
51
README.md
@@ -1,8 +1,49 @@
|
|||||||
# HexaCone
|
# HexaCone
|
||||||
|
|
||||||
Projet POVray de l'hiver 2024/2025 : un objet hexaconal,7
|
Un projet POVray né pendant l'hiver 2024/2025, au fin fond du Gers :
|
||||||
prenant en compte les divergences d'opinion. Le concept
|
un objet **hexaconal**
|
||||||
sera amélioré au fil du temps, et vous pourrez lire son
|
prenant en compte les divergences d'opinion et les fluctuations
|
||||||
évolution dans
|
de la temprérature du salon.
|
||||||
[Mastodon](https://mastodon.tetaneutral.net/@tth) #hexacone.
|
Le concept initial, assez inprécis, sera amélioré au fil du temps,
|
||||||
|
et vous pouvez
|
||||||
|
suivre son évolution par l'intermédiaire de
|
||||||
|
[Mastodon](https://mastodon.tetaneutral.net/@tth)
|
||||||
|
avec le croisimot `#hexacone`.
|
||||||
|
|
||||||
|
## Prérequis
|
||||||
|
|
||||||
|
Avant toute chose, il faut avoir installé les logiciels
|
||||||
|
suivants : bash, awk, gnuplot, imagemagick, et, bien
|
||||||
|
entendu, [povray](https://povray.org/).
|
||||||
|
|
||||||
|
## Utilisation
|
||||||
|
|
||||||
|
Il y a deux choses que l'on peut tracer :
|
||||||
|
les images fixes, qui sont traitées
|
||||||
|
par un classique [`Makefile`](./Makefile) et les séquences animées
|
||||||
|
produites par un [script shell](./mkloop.sh).
|
||||||
|
|
||||||
|
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 :
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
frames/
|
||||||
|
├── essai
|
||||||
|
├── orbite
|
||||||
|
├── passage
|
||||||
|
├── escadrille
|
||||||
|
├── scene
|
||||||
|
├── Spool
|
||||||
|
└── topview
|
||||||
|
```
|
||||||
|
et de l'autre coté `./WS/` pour ranger les fichiers de travail.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
* La [mailing-list du tetalab](https://lists.tetalab.org/postorius/lists/tetalab.tetalab.org/) ;
|
||||||
|
* IRC canal `#tetalab` sur le
|
||||||
|
réseau de [Libera](https://libera.chat/).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
168
contexte.inc
168
contexte.inc
@@ -2,33 +2,163 @@
|
|||||||
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// plane { y, 0 pigment { color DarkGreen } }
|
/* voir aussi le fichier 'globals.inc' */
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
|
||||||
|
#declare Rhxba = 0.30;
|
||||||
|
#declare R2hxba = Rhxba * 0.48;
|
||||||
|
|
||||||
|
#declare HexaBalls = object
|
||||||
|
{
|
||||||
|
merge {
|
||||||
|
sphere { 0, Rhxba }
|
||||||
|
#local E = Rhxba * 1.260;
|
||||||
|
sphere { 0, R2hxba translate <-E, 0, 0> }
|
||||||
|
sphere { 0, R2hxba translate < E, 0, 0> }
|
||||||
|
sphere { 0, R2hxba translate < 0, -E, 0> }
|
||||||
|
sphere { 0, R2hxba translate < 0, E, 0> }
|
||||||
|
sphere { 0, R2hxba translate < 0, 0, -E> }
|
||||||
|
sphere { 0, R2hxba translate < 0, 0, E> }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Les_Bibelots = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { HexaBalls
|
||||||
|
texture { Lightning1 scale 0.33 }
|
||||||
|
rotate <clock/3, clock/6, clock/9>
|
||||||
|
translate <5, -1.2+1.01*Cos_010(NormClock), 7>
|
||||||
|
}
|
||||||
|
|
||||||
|
object { HexaBalls
|
||||||
|
texture { Lightning2 scale 0.56 }
|
||||||
|
// rotate <-clock, clock*0.33333, clock>
|
||||||
|
translate <7, -1+0.89*Cos_010(NormClock), -6>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
#declare RHBlo = 0.24;
|
||||||
|
#declare RHBlo2 = RHBlo * 0.666;
|
||||||
|
|
||||||
|
#declare HexaBlob = object
|
||||||
|
{
|
||||||
|
blob {
|
||||||
|
// threshold 0.01 + NormClock
|
||||||
|
threshold 0.01
|
||||||
|
sphere { <0, 0, 0>, RHBlo, 1 }
|
||||||
|
#local E = RHBlo * 1.210;
|
||||||
|
#local W = 0.1;
|
||||||
|
sphere { <-E, 0, 0>, RHBlo2, W }
|
||||||
|
sphere { < E, 0, 0>, RHBlo2, W }
|
||||||
|
sphere { < 0, -E, 0>, RHBlo2, W }
|
||||||
|
sphere { < 0, E, 0>, RHBlo2, W }
|
||||||
|
sphere { < 0, 0, -E>, RHBlo2, W }
|
||||||
|
sphere { < 0, 0, E>, RHBlo2, W }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#declare Le_Sol = object
|
||||||
|
{
|
||||||
height_field {
|
height_field {
|
||||||
png "datas/hf.png"
|
png "datas/hf.png"
|
||||||
smooth
|
smooth
|
||||||
texture {
|
|
||||||
pigment { DarkGreen }
|
|
||||||
finish { phong 0.333 }
|
|
||||||
}
|
|
||||||
translate <-.5, 0, -.5>
|
translate <-.5, 0, -.5>
|
||||||
scale <18, 0.85, 18>
|
scale <SzSol, 0.98, SzSol>
|
||||||
|
texture {
|
||||||
|
pigment {
|
||||||
|
// color DarkGreen
|
||||||
|
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 }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#declare Repere = object
|
||||||
#if (0)
|
{
|
||||||
|
union {
|
||||||
cylinder { 0, <1, 0, 0>, 0.008 pigment { color Red } }
|
cylinder { 0, <1, 0, 0>, 0.008 pigment { color Red } }
|
||||||
cylinder { 0, <0, 0, 1>, 0.008 pigment { color Blue } }
|
cylinder { 0, <0, 0, 1>, 0.008 pigment { color Blue } }
|
||||||
#end
|
}
|
||||||
|
|
||||||
|
|
||||||
light_source {
|
|
||||||
<2, 2.50, 3> color White
|
|
||||||
spotlight
|
|
||||||
radius 12
|
|
||||||
falloff 20
|
|
||||||
tightness 10
|
|
||||||
point_at <0, 0.95, 0.22222222>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// light_source { <-6, 7, -4>, rgb <0.81, 0.65, 0.40> }
|
#declare Les_Lumieres = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#if (1)
|
||||||
|
light_source {
|
||||||
|
<0.3, 3.50, 2.8> color Gray90
|
||||||
|
spotlight
|
||||||
|
radius 14 falloff 10 tightness 10
|
||||||
|
point_at <0, 0.95, 0.22222222>
|
||||||
|
}
|
||||||
|
#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)
|
||||||
|
light_source {
|
||||||
|
<-5, 5.60, 8>
|
||||||
|
#if ( (clock > 290) & (clock<344) )
|
||||||
|
#local Couleur = rgb <0.20, 0.20, 0.90>;
|
||||||
|
#else
|
||||||
|
#local Couleur = rgb <0.80, 0.80, 0.70>;
|
||||||
|
#end
|
||||||
|
color Couleur
|
||||||
|
spotlight
|
||||||
|
radius 12 falloff 10 tightness 5
|
||||||
|
point_at <0, 0.95, -0.22>
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// #declare Le_Ciel = object
|
||||||
|
// {
|
||||||
|
sky_sphere {
|
||||||
|
pigment {
|
||||||
|
gradient y
|
||||||
|
color_map {
|
||||||
|
[ 0.2 color Gray10 ]
|
||||||
|
[ 0.4 color Gray60 ]
|
||||||
|
[ 0.7 color Black ]
|
||||||
|
[ 0.8 color White ]
|
||||||
|
[ 1.0 color Gray10 ]
|
||||||
|
}
|
||||||
|
turbulence 3.14159 + 0.91 * Cos_010(NormClock)
|
||||||
|
scale 1.804
|
||||||
|
// translate -1
|
||||||
|
}
|
||||||
|
#local Kem = 0.09;
|
||||||
|
emission rgb <Kem, Kem, Kem>
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
* Et on rassemble tous les éléments...
|
||||||
|
*/
|
||||||
|
#declare Le_Decor = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { Le_Sol }
|
||||||
|
object { Les_Bibelots }
|
||||||
|
object { Les_Lumieres }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
|||||||
249
elements.inc
249
elements.inc
@@ -2,86 +2,263 @@
|
|||||||
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#declare RA = R_basecone;
|
||||||
|
// #declare RB = 0.001;
|
||||||
|
|
||||||
#declare HexaCone_shape = object
|
#declare HexaCone_shape = object
|
||||||
{
|
{
|
||||||
#local RA = 0.125;
|
|
||||||
#local RB = 0.001;
|
|
||||||
union {
|
union {
|
||||||
cone { 0, RA, <-1, 0, 0>, RB }
|
cone { 0, RA, <-1, 0, 0>, 0.0001 }
|
||||||
cone { 0, RA, < 1, 0, 0>, RB }
|
cone { 0, RA, < 1, 0, 0>, 0.0001 }
|
||||||
cone { 0, RA, < 0, 0, 1>, RB }
|
cone { 0, RA, < 0, 0, 1>, 0.0001 }
|
||||||
cone { 0, RA, < 0, 0, -1>, RB }
|
cone { 0, RA, < 0, 0, -1>, 0.0001 }
|
||||||
cone { 0, RA, < 0, 1, 0>, RB }
|
cone { 0, RA, < 0, 1, 0>, 0.0001 }
|
||||||
cone { 0, RA, < 0, -1, 0>, RB }
|
cone { 0, RA, < 0, -1, 0>, 0.0001 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#declare HexaCone_body = object
|
#macro HexaCone_Body ()
|
||||||
{
|
// #declare HexaCone_body = object
|
||||||
|
// {
|
||||||
union {
|
union {
|
||||||
difference {
|
difference {
|
||||||
object { HexaCone_shape }
|
object { HexaCone_shape }
|
||||||
object { HexaCone_shape scale 0.99 }
|
object { HexaCone_shape scale 0.98 }
|
||||||
sphere {0, 0.24 }
|
sphere {0, 0.24 }
|
||||||
cylinder { <-1, 0, 0.55>, <1, 0, 0.55>,
|
cylinder { <-1, 0, 0.55>, <1, 0, 0.55>,
|
||||||
RA*0.40 }
|
RA*0.40 }
|
||||||
}
|
}
|
||||||
difference {
|
difference {
|
||||||
sphere {0, 0.20 }
|
sphere {0, 0.21 }
|
||||||
sphere {0, 0.18 }
|
sphere {0, 0.19 }
|
||||||
cylinder {-x, x, 0.10 }
|
cylinder {-x, x, 0.11 }
|
||||||
cylinder {-y, y, 0.10 }
|
cylinder {-y, y, 0.11 }
|
||||||
cylinder {-z, z, 0.10 }
|
cylinder {-z, z, 0.11 }
|
||||||
|
}
|
||||||
|
// clignotement de la lumiere \o/
|
||||||
|
#local kR = 0.065;
|
||||||
|
#local xR = (rand(Rng2)-0.5000) * kR;
|
||||||
|
#local yR = (rand(Rng2)-0.5000) * kR;
|
||||||
|
#local zR = (rand(Rng2)-0.5000) * kR;
|
||||||
|
#local Value = sin( (NormClock * 26.536) + (3.14*rand(Rng1)) );
|
||||||
|
#if (Value < 0)
|
||||||
|
#local Couleur = rgb <abs(Value), 0, 0>;
|
||||||
|
#else
|
||||||
|
#local Couleur = rgb <0, abs(Value), 0>;
|
||||||
|
#end
|
||||||
|
#local Couleur = Couleur * rand(Rng2);
|
||||||
|
light_source {
|
||||||
|
<xR, yR, xR>, Couleur
|
||||||
|
fade_distance 0.99
|
||||||
|
fade_power 1.58
|
||||||
}
|
}
|
||||||
light_source { 0, rgb <0.99, 0.05, 0.05> }
|
|
||||||
}
|
}
|
||||||
texture { New_Penny }
|
texture { New_Penny }
|
||||||
}
|
// }
|
||||||
|
#end
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#declare HexaCone_radar = object
|
#local Branche_radar = object
|
||||||
|
{
|
||||||
|
#local D1 = 0.08;
|
||||||
|
#local D2 = 0.0045;
|
||||||
|
merge {
|
||||||
|
cone { 0, D2, 0.08*y, 0.00007 }
|
||||||
|
sphere { 0, D2*2.3 scale <1, 1.77, 1> }
|
||||||
|
intersection {
|
||||||
|
torus { D1, D2 }
|
||||||
|
box { <2, -2, 2>, <0, 2, 0> }
|
||||||
|
rotate x*90
|
||||||
|
translate -D1*x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare HexaCone_radar_A = object
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
#for (foo, 0, 360, 60)
|
#for (foo, 0, 360, 60)
|
||||||
#local RR = 0.16;
|
#local RR = 0.12;
|
||||||
#local PX = RR * sin(radians(foo));
|
#local PX = RR * sin(radians(foo));
|
||||||
#local PZ = RR * cos(radians(foo));
|
#local PZ = RR * cos(radians(foo));
|
||||||
sphere { 0, 0.008
|
object { Branche_radar
|
||||||
scale <1, 1.37, 1>
|
rotate y*(foo-90)
|
||||||
translate <PX, 0, PZ>
|
translate <PX, 0, PZ>
|
||||||
}
|
}
|
||||||
cylinder { -0.11*y, <PX, 0, PZ>, 0.003 }
|
|
||||||
#end
|
#end
|
||||||
|
torus { 0.08, 0.0034 translate -0.08*y }
|
||||||
}
|
}
|
||||||
texture { PinkAlabaster scale 8 }
|
texture { Soft_Silver scale 6.50 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#declare HexaCone_radar_B = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#for (foo, 0, 360, 60)
|
||||||
|
#local RR = 0.12;
|
||||||
|
#local PX = RR * sin(radians(foo));
|
||||||
|
#local PZ = RR * cos(radians(foo));
|
||||||
|
object { Branche_radar scale 2
|
||||||
|
rotate y*(foo-90)
|
||||||
|
translate <PX, 0, PZ>
|
||||||
|
}
|
||||||
|
#local R2 = 0.11;
|
||||||
|
#end
|
||||||
|
torus { R2, 0.0039 translate -0.08*y }
|
||||||
|
}
|
||||||
|
texture { T_Brass_1C scale 6.50 }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------
|
||||||
|
* new Mon Dec 16 12:44:44 PM UTC 2024
|
||||||
|
*/
|
||||||
|
#local Une_derive = object
|
||||||
|
{
|
||||||
|
difference {
|
||||||
|
merge {
|
||||||
|
sphere { 0, 0.0137 scale <1, 1, 4.70>
|
||||||
|
translate <0, 0.26, -0.17> }
|
||||||
|
cone { <0, -0.1, 0>, 0.114, <0, 0.26, -0.17>, 0.0096
|
||||||
|
scale <0.15, 1, 1> }
|
||||||
|
}
|
||||||
|
box { <-1, -1, -1>, <1, 0, 1> }
|
||||||
|
}
|
||||||
|
texture { Soft_Silver scale 6.0 }
|
||||||
|
}
|
||||||
|
#declare HexaCone_derives = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { Une_derive }
|
||||||
|
object { Une_derive rotate 120*z }
|
||||||
|
object { Une_derive rotate -120*z }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare DTa = 0.278;
|
||||||
|
#declare DTb = 0.030;
|
||||||
|
|
||||||
#declare HexaCone_head = object
|
#declare HexaCone_head = object
|
||||||
{
|
{
|
||||||
#local DTa = 0.278;
|
|
||||||
#local DTb = 0.030;
|
|
||||||
|
|
||||||
merge {
|
merge {
|
||||||
difference {
|
difference {
|
||||||
torus { DTa, DTb }
|
torus { DTa, DTb }
|
||||||
#local TB = 0.50;
|
#local TB = 0.60;
|
||||||
box { <-TB, -TB, TB>, <TB, TB, 0> }
|
box { <-TB, -TB, TB>, <TB, TB, 0> }
|
||||||
}
|
}
|
||||||
sphere { 0, DTb*1.55 translate -DTa*x }
|
sphere { 0, DTb*1.65 translate -DTa*x }
|
||||||
sphere { 0, DTb*1.55 translate DTa*x }
|
sphere { 0, DTb*1.65 translate DTa*x }
|
||||||
}
|
}
|
||||||
|
#if (rand(Rng1) < 0.8)
|
||||||
texture { Orange_Glass }
|
texture { Orange_Glass }
|
||||||
|
#else
|
||||||
|
texture { Dark_Green_Glass }
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
#declare HexaCone = object
|
/* ------------------------------------------
|
||||||
|
* new Sat Dec 21 11:17:36 PM UTC 2024
|
||||||
|
*/
|
||||||
|
#declare DXail = 0.0007;
|
||||||
|
#declare DYail = 0.0039;
|
||||||
|
#declare DZail = 0.031;
|
||||||
|
|
||||||
|
#declare Une_Ailettte = object
|
||||||
|
{
|
||||||
|
box { <-DXail, -DYail, -DZail> , <DXail, DYail, 0> }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Le_rotor = object
|
||||||
|
{
|
||||||
|
#local Rrot = 0.0034;
|
||||||
|
#local Lrot = 0.13;
|
||||||
|
union {
|
||||||
|
sphere { -x*Lrot, Rrot }
|
||||||
|
cylinder { <-Lrot, 0, 0>, <Lrot, 0, 0>, Rrot }
|
||||||
|
sphere { x*Lrot, Rrot }
|
||||||
|
#for (foo, -9, 9)
|
||||||
|
object { Une_Ailettte
|
||||||
|
translate -0.004*z
|
||||||
|
rotate z*21
|
||||||
|
rotate (foo*35)*x
|
||||||
|
translate (foo*0.013)*x }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
// texture { T_Chrome_1C }
|
||||||
|
texture {
|
||||||
|
pigment { color Orange }
|
||||||
|
// finish { emission 0.7 }
|
||||||
|
finish { ambient 0.7 phong 0.5 brilliance 0.9 metallic 0.7 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#local Rtuy = 0.06;
|
||||||
|
#local Ltuy = 0.09;
|
||||||
|
#local Etuy = 0.01; // epaisseur des parois
|
||||||
|
#declare Tuyere = object
|
||||||
|
{
|
||||||
|
#local dX = Ltuy;
|
||||||
|
merge {
|
||||||
|
#local R2 = Rtuy - (Etuy/2.0);
|
||||||
|
intersection {
|
||||||
|
torus { R2, Etuy/2 scale <1, 18, 1> }
|
||||||
|
box { <-1, 0, -1>, <1, 1, 1> }
|
||||||
|
rotate 90*z translate -dX*x
|
||||||
|
}
|
||||||
|
torus { R2, Etuy/2 scale <1, 0.75, 1> rotate 90*z translate dX*x }
|
||||||
|
|
||||||
|
#if (1)
|
||||||
|
#difference {
|
||||||
|
cylinder { <-dX, 0, 0>, <dX, 0, 0>, Rtuy }
|
||||||
|
cylinder { <-(dX+1), 0, 0>, <dX+2, 0, 0>, Rtuy-Etuy }
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
cylinder { y*Rtuy, y*(Rtuy+0.08), 0.011 scale <2.95, 1, 1> }
|
||||||
|
sphere { 0, 0.017 scale <4.8, 1, 0.717>
|
||||||
|
translate z*(Rtuy+Etuy/3) }
|
||||||
|
}
|
||||||
|
texture { T_Brass_1C }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Reacteur = object
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
object { HexaCone_body }
|
object { Tuyere }
|
||||||
|
object { Le_rotor rotate x*(clock*5.8) translate -0.06*x }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Les_Reacteurs = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#local E = 0.59;
|
||||||
|
object { Reacteur scale <1, 1, -1> translate -E*z }
|
||||||
|
object { Reacteur translate E*z }
|
||||||
|
}
|
||||||
|
rotate -y*90
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ###########################################################""
|
||||||
|
|
||||||
|
#macro HexaCone ()
|
||||||
|
// #declare HexaCone = object
|
||||||
|
// {
|
||||||
|
union {
|
||||||
|
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> }
|
||||||
object { HexaCone_radar translate <0, T+0.07, 0> }
|
#if ( (rand(Rng1) > 0.27) )
|
||||||
}
|
object { HexaCone_radar_A translate <0, T+0.18, 0> }
|
||||||
rotate <-7, 0, -9>
|
#else
|
||||||
|
object { HexaCone_radar_B translate <0, T+0.18, 0> }
|
||||||
|
#end
|
||||||
|
object { HexaCone_derives translate <0, 0, -0.67> }
|
||||||
|
object { Les_Reacteurs translate -0.18*y }
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
|
#end // macro
|
||||||
|
|||||||
52
escadrille.pov
Normal file
52
escadrille.pov
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E
|
||||||
|
*
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#for (idX, 0, 4)
|
||||||
|
#for (idZ, 0, 4)
|
||||||
|
|
||||||
|
#local posX = (idX * 4.56) - 6.5;
|
||||||
|
#local posY = 1.3 * (rand(Rng1)-0.5);
|
||||||
|
#local posZ = (idZ * 4.24) - 8.9;
|
||||||
|
#local Ry = (rand(Rng1) - 0.5) * 16;
|
||||||
|
#if (rand(Rng1) < 0.515)
|
||||||
|
object { HexaCone ()
|
||||||
|
rotate y*Ry translate <posX, posY, posZ> }
|
||||||
|
#else
|
||||||
|
object { HexaBenz ()
|
||||||
|
rotate y*Ry translate <posX, posY, posZ> }
|
||||||
|
#end
|
||||||
|
#end
|
||||||
|
#end
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#if (NormClock < 0.08)
|
||||||
|
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 }
|
||||||
|
|
||||||
|
#local CamX = -8.7+(6.6*NormClock);
|
||||||
|
#local CamY = -5+(11.9*Cos_01(NormClock));
|
||||||
|
#local CamZ = 15.06+(2.9*Cos_010(NormClock));
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <CamX, CamY, CamZ>
|
||||||
|
look_at <0.0, 0.0, 0>
|
||||||
|
angle 53 - (3.57 * NormClock)
|
||||||
|
}
|
||||||
111
essai.pov
111
essai.pov
@@ -1,22 +1,109 @@
|
|||||||
/*
|
/*
|
||||||
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
* 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;
|
#version 3.7;
|
||||||
|
|
||||||
global_settings {
|
#include "globals.inc"
|
||||||
assumed_gamma 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "colors.inc"
|
|
||||||
#include "textures.inc"
|
|
||||||
#include "elements.inc"
|
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
object { HexaCone_radar translate y*0.6 }
|
// =======================================================
|
||||||
|
|
||||||
camera {
|
#macro GyroPhare_mat ()
|
||||||
location <-3, 2, 1>
|
cylinder {
|
||||||
look_at <0, 0.6, 0>
|
0, y*H_gyro, R_gyro
|
||||||
angle 10
|
#if (rand(Rng1) < 0.5)
|
||||||
|
texture { T_Stone25 scale 1+rand(Rng1) }
|
||||||
|
#else
|
||||||
|
texture { T_Stone6 }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#end // macro
|
||||||
|
|
||||||
|
#macro GyroPhare_lampe ()
|
||||||
|
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 ()
|
||||||
|
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
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
#local Rk = 4.95;
|
||||||
|
#for (foo, 0, 360, 15)
|
||||||
|
#local Xpos = Rk * sin(radians(foo));
|
||||||
|
#local Zpos = Rk * cos(radians(foo));
|
||||||
|
#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 }
|
||||||
|
// object { Repere }
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
// light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> }
|
||||||
|
// light_source { < 11, 7, 4>, rgb <1-NormClock, 0.28, 0.80> }
|
||||||
|
|
||||||
|
#local CamX = -12.7 + (5.8*NormClock);
|
||||||
|
#local CamY = 8.81 + (14*sqrt(NormClock));
|
||||||
|
camera {
|
||||||
|
location <CamX, CamY, 9.99>
|
||||||
|
look_at <0, 0, 0>
|
||||||
|
angle 42 + 8*Cos_01(NormClock)
|
||||||
}
|
}
|
||||||
|
|||||||
25
fonctions.sh
25
fonctions.sh
@@ -1,25 +0,0 @@
|
|||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
ff_encodage()
|
|
||||||
{
|
|
||||||
ffmpeg -nostdin \
|
|
||||||
-y -r 30 -f image2 -i frames/%05d.png \
|
|
||||||
-metadata artist='--[ tTh ]--' \
|
|
||||||
-metadata title='-- HexaCone --' \
|
|
||||||
-c:v libx264 \
|
|
||||||
-pix_fmt yuv420p \
|
|
||||||
-tune film \
|
|
||||||
wip.mp4
|
|
||||||
}
|
|
||||||
|
|
||||||
mp_encodage()
|
|
||||||
{
|
|
||||||
mencoder 'mf://frames/*.png' \
|
|
||||||
-mf \
|
|
||||||
fps=30 \
|
|
||||||
-ovc lavc \
|
|
||||||
-lavcopts vcodec=mpeg4 \
|
|
||||||
-o output.avi
|
|
||||||
}
|
|
||||||
|
|
||||||
15
frames/README.md
Normal file
15
frames/README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
Avant tout, il faut créer ces répertoires :
|
||||||
|
|
||||||
|
```
|
||||||
|
frames/
|
||||||
|
├── essai
|
||||||
|
├── orbite
|
||||||
|
├── passage
|
||||||
|
├── scene
|
||||||
|
├── scene
|
||||||
|
├── orbite
|
||||||
|
├── escadrille
|
||||||
|
└── topview
|
||||||
|
|
||||||
|
|
||||||
44
globals.inc
Normal file
44
globals.inc
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
global_settings {
|
||||||
|
assumed_gamma 1.0
|
||||||
|
ambient_light rgb <0.18, 0.18, 0.21>
|
||||||
|
max_trace_level 15
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "colors.inc"
|
||||||
|
#include "metals.inc"
|
||||||
|
#include "textures.inc"
|
||||||
|
#include "stones.inc"
|
||||||
|
|
||||||
|
#declare Rng1 = seed(1337);
|
||||||
|
#declare foo = rand(Rng1);
|
||||||
|
#declare Rng2 = seed(now*24*60*60);
|
||||||
|
#declare bar = rand(Rng2);
|
||||||
|
|
||||||
|
#declare NormClock = clock / 360.0;
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
* Some constants...
|
||||||
|
*/
|
||||||
|
|
||||||
|
#declare SzSol = 30;
|
||||||
|
|
||||||
|
#declare R_basecone = 0.117;
|
||||||
|
#declare H_cone = 0.97;
|
||||||
|
|
||||||
|
#declare R_gyro = 0.10;
|
||||||
|
#declare H_gyro = 1.20;
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
* Usefull macros
|
||||||
|
*/
|
||||||
|
#macro Cos_01( X )
|
||||||
|
(0.5-0.5*cos( 3.141592654 * X))
|
||||||
|
#end
|
||||||
|
#macro Cos_010( X )
|
||||||
|
(0.5-0.5*cos( 2 * 3.141592654 * X))
|
||||||
|
#end
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
131
hexabenz.inc
Normal file
131
hexabenz.inc
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
/*
|
||||||
|
* H E X A B E N Z
|
||||||
|
*/
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#macro Benz_Cone_Base () // = object
|
||||||
|
// {
|
||||||
|
union {
|
||||||
|
#local RA = R_basecone;
|
||||||
|
#local RB = 0.001;
|
||||||
|
cone { 0, RA, y*0.89, 0.0001 }
|
||||||
|
sphere { 0, RA*1.098 scale <1, 0.62, 3.03> translate -0.02*y }
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
#end
|
||||||
|
|
||||||
|
#macro Benz_Cones () // = object
|
||||||
|
// {
|
||||||
|
union {
|
||||||
|
#for (foo, 0, 360, 60)
|
||||||
|
#local E = 0.38;
|
||||||
|
#local Tx = E * sin(radians(foo));
|
||||||
|
#local Ty = E * cos(radians(foo));
|
||||||
|
object {
|
||||||
|
Benz_Cone_Base ()
|
||||||
|
#if ( rand(Rng1) < 0.5 )
|
||||||
|
texture { T_Silver_2C scale 11.50 }
|
||||||
|
#else
|
||||||
|
texture { T_Brass_2C scale 13.50 }
|
||||||
|
#end
|
||||||
|
rotate -z*foo
|
||||||
|
translate <Tx, Ty, 0>
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
#end
|
||||||
|
|
||||||
|
// ------------------------------------------------------
|
||||||
|
|
||||||
|
#local R_Tube = 0.20;
|
||||||
|
#local L_Tube = 0.54;
|
||||||
|
|
||||||
|
#declare Benz_Tubules = object
|
||||||
|
{
|
||||||
|
merge {
|
||||||
|
#local E = R_Tube * 0.0910;
|
||||||
|
#local R = 0.01;
|
||||||
|
#for (foo, 0, 360, 20)
|
||||||
|
#local Tx = E * sin(radians(foo));
|
||||||
|
#local Ty = E * cos(radians(foo));
|
||||||
|
#local Dza = z * 0.20;
|
||||||
|
#local Dzb = z * 0.90;
|
||||||
|
cylinder { -Dza, Dzb, R translate <Tx, Ty, 0> }
|
||||||
|
sphere { -Dza, R*1.8 translate <Tx, Ty, 0> }
|
||||||
|
sphere { Dzb, R*1.8 translate <Tx, Ty, 0> }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
#if ( rand(Rng1) < 0.333)
|
||||||
|
texture { Orange_Glass }
|
||||||
|
#else
|
||||||
|
texture { Yellow_Glass }
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Benz_Fuseau = object
|
||||||
|
{
|
||||||
|
difference {
|
||||||
|
sphere { 0, R_Tube*0.39 }
|
||||||
|
sphere { 0, R_Tube*0.37 }
|
||||||
|
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>
|
||||||
|
texture { Shadow_Clouds scale 0.56 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Benz_Fuseau_Flash = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { Benz_Fuseau }
|
||||||
|
light_source { 0,
|
||||||
|
rgb <rand(Rng2), rand(Rng2), rand(Rng2)>
|
||||||
|
fade_distance 0.96
|
||||||
|
fade_power 1.95
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rotate -z*clock*6
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Benz_Cylindre = object
|
||||||
|
{
|
||||||
|
difference {
|
||||||
|
union {
|
||||||
|
cylinder { z*L_Tube*1.5, -z*L_Tube, R_Tube }
|
||||||
|
/* cette sphere devrait devenir
|
||||||
|
un vrai cockpit ? */
|
||||||
|
sphere { z*L_Tube*1.18, R_Tube*0.72
|
||||||
|
scale <1, 0.73, 1>
|
||||||
|
translate y*R_Tube*0.87}
|
||||||
|
}
|
||||||
|
cylinder { z*4, -z*4, R_Tube*0.95 }
|
||||||
|
}
|
||||||
|
texture { Soft_Silver scale 6.0 }
|
||||||
|
}
|
||||||
|
|
||||||
|
#macro Benz_Tube ()
|
||||||
|
// #declare Benz_Tube = object
|
||||||
|
// {
|
||||||
|
union {
|
||||||
|
object { Benz_Tubules }
|
||||||
|
object { Benz_Fuseau_Flash translate z*0.40 }
|
||||||
|
object { Benz_Cylindre }
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
#end
|
||||||
|
|
||||||
|
// ------------------------------------------------------
|
||||||
|
|
||||||
|
#macro HexaBenz ()
|
||||||
|
// #declare HexaBenz = object
|
||||||
|
// {
|
||||||
|
union {
|
||||||
|
#local Rk = (rand(Rng1)-0.5) * 1024;
|
||||||
|
object { Benz_Cones () rotate z*NormClock*Rk}
|
||||||
|
object { Benz_Tube () }
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
#end
|
||||||
|
|
||||||
38
hexabenz.pov
Normal file
38
hexabenz.pov
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - H E X A B E N Z
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "colors.inc"
|
||||||
|
#include "metals.inc"
|
||||||
|
#include "textures.inc"
|
||||||
|
#include "stones.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.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> }
|
||||||
|
light_source { <19, 9, -14>, rgb <0.87, 0.79, 0.70> }
|
||||||
|
|
||||||
|
// object { Repere scale 2 }
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <-1.9+(8*NormClock), 0.70, 7.59-NormClock>
|
||||||
|
look_at <0.37, 0.0, 0>
|
||||||
|
focal_point <0.37, 0.0, 0>
|
||||||
|
aperture 0.046
|
||||||
|
blur_samples 30
|
||||||
|
angle 60 - 28 * Cos_01(NormClock)
|
||||||
|
}
|
||||||
|
|
||||||
46
hexacone.pov
Normal file
46
hexacone.pov
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - H E X A C O N E
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "colors.inc"
|
||||||
|
#include "metals.inc"
|
||||||
|
#include "textures.inc"
|
||||||
|
#include "stones.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
|
|
||||||
|
#declare Cone_Repere = object
|
||||||
|
{
|
||||||
|
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, 9, -14>, rgb <0.87, 0.79, 0.70> }
|
||||||
|
|
||||||
|
// object { Repere scale 2 }
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <-1.9+(8*NormClock), 0.70, 7.59-NormClock>
|
||||||
|
look_at <0.37, 0.0, 0>
|
||||||
|
focal_point <0.37, 0.0, 0>
|
||||||
|
aperture 0.046
|
||||||
|
blur_samples 30
|
||||||
|
angle 55 - 28 * Cos_01(NormClock)
|
||||||
|
}
|
||||||
|
|
||||||
47
mkloop.sh
47
mkloop.sh
@@ -1,47 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source fonctions.sh
|
|
||||||
|
|
||||||
set -e ; set -u
|
|
||||||
|
|
||||||
TYPE="gif89a"
|
|
||||||
NBFRAMES=180
|
|
||||||
|
|
||||||
case $TYPE in
|
|
||||||
"gif89a") DIMS="-W640 -H400" ;;
|
|
||||||
"mp4") DIMS="-W1280 -H1024" ;;
|
|
||||||
esac
|
|
||||||
POVOPT="+q9 +a -d ${DIMS}"
|
|
||||||
echo $POVOPT ; echo ; sleep 2
|
|
||||||
|
|
||||||
TMPIMG=/dev/shm/tmpimg.png
|
|
||||||
|
|
||||||
for frame in $(seq 0 $((NBFRAMES-1)))
|
|
||||||
do
|
|
||||||
img=$(printf "frames/%05d.png" $frame)
|
|
||||||
|
|
||||||
debut=$(date +%s)
|
|
||||||
povray ${POVOPT} +K${frame} -iscene.pov -o${TMPIMG}
|
|
||||||
|
|
||||||
txt=$(printf "#%03d" $frame)
|
|
||||||
echo $frame $img $txt
|
|
||||||
convert ${TMPIMG} \
|
|
||||||
-pointsize 14 \
|
|
||||||
-fill white \
|
|
||||||
-gravity south \
|
|
||||||
-annotate +0+0 "$txt" \
|
|
||||||
${img}
|
|
||||||
fin=$(date +%s)
|
|
||||||
echo
|
|
||||||
echo $frame $(( fin - debut )) | tee -a WS/timing
|
|
||||||
echo ; echo
|
|
||||||
done
|
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
case $TYPE in
|
|
||||||
"gif89a") convert -delay 8 -dither none \
|
|
||||||
-colors 102 frames/* foo.gif ;;
|
|
||||||
esac
|
|
||||||
ls -lh foo.gif
|
|
||||||
|
|
||||||
81
orbite.pov
Normal file
81
orbite.pov
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - O R B I T E
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
#declare R_planete = 1.42;
|
||||||
|
|
||||||
|
#declare Croute = object
|
||||||
|
{
|
||||||
|
#local R1 = R_planete * 1.05;
|
||||||
|
#local R2 = R_planete * 1.03;
|
||||||
|
#local HC = R_planete * 0.11;
|
||||||
|
#local BN = R_planete * 3;
|
||||||
|
|
||||||
|
difference {
|
||||||
|
sphere { 0, R1 }
|
||||||
|
sphere { 0, R2 }
|
||||||
|
box { <-HC, -BN, -BN>, <HC, BN, BN> }
|
||||||
|
box { <-BN, -HC, -BN>, <BN, HC, BN> }
|
||||||
|
box { <-BN, -BN, -HC>, <BN, BN, HC> }
|
||||||
|
}
|
||||||
|
texture {
|
||||||
|
pigment { color rgb <0.20, 0.40, 0.10> }
|
||||||
|
finish { reflection 0.25 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Boule = object
|
||||||
|
{
|
||||||
|
sphere { 0, R_planete }
|
||||||
|
texture {
|
||||||
|
pigment { rgb <0.70, 0.50, 0.70> }
|
||||||
|
finish { reflection 0.25 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#declare Planete = object
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
object { Croute }
|
||||||
|
object { Boule }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// =======================================================
|
||||||
|
|
||||||
|
#local RO = 4.15;
|
||||||
|
#local CK = NormClock * 7.87;
|
||||||
|
|
||||||
|
#declare PosX = RO * sin(CK);
|
||||||
|
#declare PosY = 0;
|
||||||
|
#declare PosZ = RO * cos(CK);
|
||||||
|
object { HexaBenz ()
|
||||||
|
rotate -y*CK*2.333 translate <PosX, PosY, PosZ>
|
||||||
|
}
|
||||||
|
#declare PosX = RO * sin(CK+2.12);
|
||||||
|
#declare PosY = 0;
|
||||||
|
#declare PosZ = RO * cos(CK+2.23);
|
||||||
|
object { HexaCone ()
|
||||||
|
rotate y*CK*3.222 translate <PosX, PosY, PosZ>
|
||||||
|
}
|
||||||
|
|
||||||
|
object { Planete rotate (-clock*0.21)*y }
|
||||||
|
light_source { <19, 6, 15>, rgb <0.77, 0.79, 0.80> }
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <3, 1.50, 7.59>
|
||||||
|
look_at <0.0, 0.0, 0>
|
||||||
|
focal_point <0.07, 0.0, 0>
|
||||||
|
aperture 0.046
|
||||||
|
blur_samples 30
|
||||||
|
angle 62
|
||||||
|
}
|
||||||
|
|
||||||
60
passage.pov
Normal file
60
passage.pov
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E
|
||||||
|
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "colors.inc"
|
||||||
|
#include "metals.inc"
|
||||||
|
#include "textures.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
|
// ---------------------------------------
|
||||||
|
|
||||||
|
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) )
|
||||||
|
light_source {
|
||||||
|
<3, 0.30, -8> color Blue
|
||||||
|
spotlight
|
||||||
|
radius .044
|
||||||
|
falloff 2
|
||||||
|
tightness 3
|
||||||
|
point_at <PosX, PosY, PosZ>
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
#if ( (clock > 230) & (clock < 300) )
|
||||||
|
light_source {
|
||||||
|
<2, 0.30, -2> color White
|
||||||
|
spotlight
|
||||||
|
radius .044
|
||||||
|
falloff 2
|
||||||
|
tightness 3
|
||||||
|
point_at <PosX, PosY-0.30, PosZ>
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <-1.76, 1.03, 9.76>
|
||||||
|
look_at <PosX+0.08, PosY, PosZ>
|
||||||
|
// focal_point <0, 1, 0>
|
||||||
|
// aperture 0.046
|
||||||
|
// blur_samples 30
|
||||||
|
angle 34
|
||||||
|
}
|
||||||
|
|
||||||
39
scene.pov
39
scene.pov
@@ -1,35 +1,46 @@
|
|||||||
/*
|
/*
|
||||||
|
* H E X A C O N E
|
||||||
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
* nouveau projet Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#version 3.7;
|
#version 3.7;
|
||||||
|
|
||||||
global_settings {
|
#include "globals.inc"
|
||||||
assumed_gamma 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "colors.inc"
|
#include "colors.inc"
|
||||||
|
#include "metals.inc"
|
||||||
#include "textures.inc"
|
#include "textures.inc"
|
||||||
#include "elements.inc"
|
|
||||||
|
#declare NormClock = clock / 360.0;
|
||||||
#include "contexte.inc"
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
object { HexaCone translate y*1.15 }
|
object { Le_Decor }
|
||||||
|
|
||||||
#declare CK = 56 + (clock * 2);
|
object { HexaCone ()
|
||||||
#declare Dcam = 1.95;
|
rotate < 3, 0, -4> rotate y*17 translate y*1.11 }
|
||||||
|
|
||||||
|
object { HexaBenz ()
|
||||||
|
rotate <6, 40, -7> translate <-8, 3, 7> }
|
||||||
|
|
||||||
|
#declare CK = 96 + (clock * 1);
|
||||||
|
#declare Dcam = 2.22;
|
||||||
#declare CamX = Dcam * sin(radians(CK));
|
#declare CamX = Dcam * sin(radians(CK));
|
||||||
#declare CamZ = Dcam * 1.23 * cos(radians(CK));
|
#declare CamZ = Dcam * 1.20 * cos(radians(CK));
|
||||||
#declare CamZ = CamZ - 0.9;
|
#declare CamZ = CamZ - 0.11;
|
||||||
|
|
||||||
#declare Lat = <0.03, 1.08, 0.22>;
|
#declare Lat = <0.03, 1.08, 0.17>;
|
||||||
camera {
|
camera {
|
||||||
location <CamX, 1.20, CamZ>
|
location <CamX, 1.23, CamZ>
|
||||||
look_at Lat
|
look_at Lat
|
||||||
focal_point Lat
|
focal_point Lat
|
||||||
aperture 0.06
|
aperture 0.046
|
||||||
blur_samples 33
|
blur_samples 30
|
||||||
angle 70
|
angle 70
|
||||||
}
|
}
|
||||||
|
|
||||||
light_source { <CamX*1.3, 1.35, 2+(CamZ*1.3)>,
|
/**
|
||||||
|
light_source { <CamX*1.3, 1.35, 1.2+(CamZ*1.3)>,
|
||||||
rgb <0.47, 0.65, 0.49> }
|
rgb <0.47, 0.65, 0.49> }
|
||||||
|
**/
|
||||||
|
|||||||
11
tools/README.md
Normal file
11
tools/README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Tools
|
||||||
|
|
||||||
|
Build system and utilities.
|
||||||
|
|
||||||
|
## Linkfarming
|
||||||
|
|
||||||
|
## Encoding
|
||||||
|
|
||||||
|
## Plot the timing
|
||||||
|
|
||||||
|
|
||||||
14
tools/encode.sh
Executable file
14
tools/encode.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e ; set -u
|
||||||
|
|
||||||
|
if [ $# == 1 ]
|
||||||
|
then
|
||||||
|
srcdir=$1
|
||||||
|
else
|
||||||
|
srcdir="essai"
|
||||||
|
fi
|
||||||
|
|
||||||
|
source tools/fonctions.sh
|
||||||
|
|
||||||
|
ff_encodage $srcdir wip.mp4
|
||||||
65
tools/fonctions.sh
Normal file
65
tools/fonctions.sh
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
visual_sleep ()
|
||||||
|
{
|
||||||
|
for foo in $(seq 0 $1) ; do
|
||||||
|
printf '*'
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
# un essai qui semble un echec.
|
||||||
|
#
|
||||||
|
ralentisseur ()
|
||||||
|
{
|
||||||
|
temps=$1
|
||||||
|
|
||||||
|
load=$(awk '{print int($1)}' < /proc/loadavg)
|
||||||
|
# echo " load is $load" | tee -a WS/log
|
||||||
|
if [ $load -gt 10 ] ; then
|
||||||
|
attente=$(( $temps + ($RANDOM % 90) ))
|
||||||
|
echo "ralentir $0 $SEQNAME $attente" # | tee -a WS/log
|
||||||
|
sleep $attente
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
|
||||||
|
ff_encodage()
|
||||||
|
{
|
||||||
|
SRCDIR="$1"
|
||||||
|
FILMNAME="$2"
|
||||||
|
|
||||||
|
echo "Encoding $SRCDIR to $FILMNAME" | tee -a WS/log
|
||||||
|
ffmpeg -nostdin \
|
||||||
|
-y -r 30 -f image2 -i frames/${SRCDIR}/%05d.png \
|
||||||
|
-metadata artist='--[ tTh ]--' \
|
||||||
|
-metadata title='-- HexaCone --' \
|
||||||
|
-c:v libx264 \
|
||||||
|
-pix_fmt yuv420p \
|
||||||
|
-tune film \
|
||||||
|
$FILMNAME
|
||||||
|
|
||||||
|
# wc -c $FILMNAME | tee -a WS/log
|
||||||
|
}
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# celui-ci n'est pas terminé !
|
||||||
|
#
|
||||||
|
mp_encodage()
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# NOT WORKING !
|
||||||
|
#
|
||||||
|
mencoder 'mf://frames/*.png' \
|
||||||
|
-mf \
|
||||||
|
fps=24 \
|
||||||
|
-ovc lavc \
|
||||||
|
-lavcopts vcodec=mpeg4 \
|
||||||
|
-o output.avi
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
# --------------------------------------------------------------
|
||||||
148
tools/linkfarmer.sh
Executable file
148
tools/linkfarmer.sh
Executable file
@@ -0,0 +1,148 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e ; set -u
|
||||||
|
|
||||||
|
IDX=0
|
||||||
|
SPOOL="frames/Spool"
|
||||||
|
SEQNAME="none"
|
||||||
|
TMP="WS/tmp.png"
|
||||||
|
FONTE="Helvetica-Bold"
|
||||||
|
TEXTCOL="yellow"
|
||||||
|
STROKOL="darkblue"
|
||||||
|
|
||||||
|
source tools/fonctions.sh
|
||||||
|
|
||||||
|
# -------------------------------------------------------
|
||||||
|
# /!\ this function just copy the
|
||||||
|
# file to the spool dir, so
|
||||||
|
# you can use it for tmp pics.
|
||||||
|
#
|
||||||
|
copy_a_file ()
|
||||||
|
{
|
||||||
|
src="$1"
|
||||||
|
dstname=$(printf "%s/%05d.png" $SPOOL $IDX)
|
||||||
|
# echo "$src -> $dstname"
|
||||||
|
# ln --force --symbolic $src $dstname
|
||||||
|
cp -f $src $dstname
|
||||||
|
IDX=$(( IDX + 1 ))
|
||||||
|
}
|
||||||
|
# -------------------------------------------------------
|
||||||
|
|
||||||
|
linkfarm ()
|
||||||
|
{
|
||||||
|
SRC="frames/$1"
|
||||||
|
echo "linkfarm $SRC" | tee -a WS/log
|
||||||
|
tools/plot-timing.sh $1
|
||||||
|
|
||||||
|
local NBRE=60
|
||||||
|
|
||||||
|
for foo in $(seq 0 $NBRE)
|
||||||
|
do
|
||||||
|
copy_a_file "WS/negatif.png"
|
||||||
|
done
|
||||||
|
|
||||||
|
for foo in $(seq 0 $NBRE)
|
||||||
|
do
|
||||||
|
copy_a_file "$SRC/00000.png"
|
||||||
|
done
|
||||||
|
|
||||||
|
for src in "$SRC"/*
|
||||||
|
do
|
||||||
|
copy_a_file $src
|
||||||
|
done
|
||||||
|
|
||||||
|
for foo in $(seq 0 $NBRE)
|
||||||
|
do
|
||||||
|
copy_a_file "$SRC/00359.png"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
# -------------------------------------------------------
|
||||||
|
faire_le_titre ()
|
||||||
|
{
|
||||||
|
echo "faire le titre"
|
||||||
|
|
||||||
|
local NBRE=180
|
||||||
|
local SRC="frames/passage/00059.png"
|
||||||
|
local GRAY="/dev/shm/tmp-titre.png"
|
||||||
|
|
||||||
|
convert -colorspace gray -colors 27 $SRC $GRAY
|
||||||
|
|
||||||
|
for foo in $(seq 0 $NBRE)
|
||||||
|
do
|
||||||
|
Ypos=$(( -175 + foo ))
|
||||||
|
convert ${GRAY} \
|
||||||
|
-gravity north \
|
||||||
|
-font $FONTE \
|
||||||
|
-pointsize 172 \
|
||||||
|
-kerning 6 \
|
||||||
|
-fill $TEXTCOL \
|
||||||
|
-strokewidth 3 -stroke $STROKOL \
|
||||||
|
-annotate +0+${Ypos} "HexaCone" \
|
||||||
|
${TMP}
|
||||||
|
# identify ${TMP}
|
||||||
|
copy_a_file ${TMP}
|
||||||
|
printf "."
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
# -------------------------------------------------------
|
||||||
|
faire_la_fin ()
|
||||||
|
{
|
||||||
|
local NBRE=180
|
||||||
|
datetime=$(LANG=fr date -u +"%Y/%m/%d")
|
||||||
|
echo $datetime | tee -a WS/log
|
||||||
|
|
||||||
|
for foo in $(seq 0 $NBRE)
|
||||||
|
do
|
||||||
|
Ypos=$(( foo + 20 ))
|
||||||
|
convert "WS/negatif.png" \
|
||||||
|
-gravity north \
|
||||||
|
-font $FONTE \
|
||||||
|
-pointsize 86 \
|
||||||
|
-kerning 6 \
|
||||||
|
-fill $TEXTCOL \
|
||||||
|
-strokewidth 2 -stroke $STROKOL \
|
||||||
|
-annotate +0+${Ypos} \
|
||||||
|
"un film de\ntTh des Bourtoulots" \
|
||||||
|
-pointsize 48 \
|
||||||
|
-strokewidth 1 \
|
||||||
|
-gravity south \
|
||||||
|
-annotate +0+170 "${datetime}" \
|
||||||
|
${TMP}
|
||||||
|
# identify ${TMP}
|
||||||
|
copy_a_file ${TMP}
|
||||||
|
printf "."
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
# -------------------------------------------------------
|
||||||
|
|
||||||
|
figlet "Link farmer"
|
||||||
|
|
||||||
|
rm -f frames/Spool/*.png
|
||||||
|
|
||||||
|
# tools/plot-timing.sh
|
||||||
|
faire_le_titre
|
||||||
|
|
||||||
|
linkfarm hexabenz
|
||||||
|
linkfarm hexacone
|
||||||
|
linkfarm escadrille
|
||||||
|
linkfarm topview
|
||||||
|
linkfarm passage
|
||||||
|
linkfarm scene
|
||||||
|
linkfarm orbite
|
||||||
|
|
||||||
|
linkfarm essai
|
||||||
|
|
||||||
|
tools/plot-timing.sh
|
||||||
|
faire_la_fin
|
||||||
|
|
||||||
|
ff_encodage Spool full.mp4
|
||||||
|
|
||||||
|
nb=$(( $IDX - 1 ))
|
||||||
|
echo "linkfarmed $nb files" | tee -a WS/log
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
54
tools/mkloop.sh
Executable file
54
tools/mkloop.sh
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e ; set -u
|
||||||
|
source tools/fonctions.sh
|
||||||
|
|
||||||
|
SEQNAME="$1"
|
||||||
|
NBFRAMES=360
|
||||||
|
|
||||||
|
|
||||||
|
echo "Running $0 $SEQNAME" >> WS/log
|
||||||
|
|
||||||
|
DIMS="-W1024 -H768"
|
||||||
|
POVOPT="+q9 -a -d ${DIMS} -WT6"
|
||||||
|
echo $POVOPT ; echo ; sleep 2
|
||||||
|
|
||||||
|
TMPIMG=/dev/shm/${SEQNAME}-tmp.png
|
||||||
|
|
||||||
|
for frame in $(seq 0 $((NBFRAMES-1)))
|
||||||
|
do
|
||||||
|
|
||||||
|
img=$(printf "frames/%s/%05d.png" $SEQNAME $frame)
|
||||||
|
debut=$(date +%s)
|
||||||
|
set +e
|
||||||
|
povray ${POVOPT} +K${frame} -i${SEQNAME}.pov -o${TMPIMG}
|
||||||
|
err=$?
|
||||||
|
if [ $err != 0 ] ; then
|
||||||
|
echo "$SEQNAME fail $frame" >> WS/log
|
||||||
|
mogrify -colorspace gray $img
|
||||||
|
visual_sleep 12
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
txt=$(printf "%s %03d" ${SEQNAME} $frame | tr '0' 'o')
|
||||||
|
# echo $frame $img $txt
|
||||||
|
convert ${TMPIMG} \
|
||||||
|
-font Courier-Bold \
|
||||||
|
-pointsize 18 \
|
||||||
|
-fill Gray80 \
|
||||||
|
-gravity south \
|
||||||
|
-annotate +0+5 "$txt" \
|
||||||
|
${img}
|
||||||
|
fin=$(date +%s)
|
||||||
|
echo
|
||||||
|
echo ${SEQNAME} $frame $(( fin - debut )) | \
|
||||||
|
tee -a WS/mp4.timing
|
||||||
|
echo ; sleep 3
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
ff_encodage $SEQNAME wip-${SEQNAME}.mp4
|
||||||
|
|
||||||
|
echo "+------- build of $SEQNAME done"
|
||||||
|
|
||||||
63
tools/plot-timing.sh
Executable file
63
tools/plot-timing.sh
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
TMPFILE="/dev/shm/plot-timing.tmp"
|
||||||
|
IMAGE="timing.png"
|
||||||
|
|
||||||
|
if [ $# == 1 ]
|
||||||
|
then
|
||||||
|
sequence=$1
|
||||||
|
else
|
||||||
|
sequence="escadrille"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "plot timing $sequence" | tee -a WS/log
|
||||||
|
# wc WS/mp4.timing | tee -a WS/log
|
||||||
|
|
||||||
|
grep $sequence WS/mp4.timing | tail -3600 | awk ' \
|
||||||
|
BEGIN { \
|
||||||
|
nbrames=360; \
|
||||||
|
for (foo=0; foo<nbrames; foo++) { \
|
||||||
|
mini[foo] = 666; \
|
||||||
|
maxi[foo] = -42; \
|
||||||
|
count[foo] = 0; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
{ \
|
||||||
|
accu[$2] += $3; \
|
||||||
|
count[$2]++; \
|
||||||
|
if (mini[$2] > $3) mini[$2] = $3; \
|
||||||
|
if (maxi[$2] < $3) maxi[$2] = $3; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
END { \
|
||||||
|
for (foo=0; foo<nbrames; foo++) { \
|
||||||
|
if (count[foo] > 0) { \
|
||||||
|
mean = accu[foo] / count[foo]; \
|
||||||
|
printf "%4d %4f %4d %4d\n", foo, mean, \
|
||||||
|
mini[foo], maxi[foo]; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
' > $TMPFILE
|
||||||
|
|
||||||
|
# cat -n $TMPFILE | tail # ; exit
|
||||||
|
|
||||||
|
gnuplot << __EOC__
|
||||||
|
set term png size 1024,768
|
||||||
|
set output "timing.png"
|
||||||
|
set grid
|
||||||
|
set xrange [:360]
|
||||||
|
set yrange [0:]
|
||||||
|
set title "Séquence '${sequence}'"
|
||||||
|
set xlabel "numéro de la trame"
|
||||||
|
set ylabel "temps en secondes"
|
||||||
|
plot "/dev/shm/plot-timing.tmp" u 1:4 w l lc "#ff0000" t "maximum", \
|
||||||
|
"/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 "#000000" t "moyenne",
|
||||||
|
__EOC__
|
||||||
|
|
||||||
|
convert -negate -colorspace gray -level -33% $IMAGE WS/negatif.png
|
||||||
|
|
||||||
45
topview.pov
Normal file
45
topview.pov
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* H E X A C O N E - T O P V I E W
|
||||||
|
* nouveau projet du Thu Dec 5 11:37:05 AM UTC 2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
#version 3.7;
|
||||||
|
|
||||||
|
#include "globals.inc"
|
||||||
|
|
||||||
|
#include "colors.inc"
|
||||||
|
#include "metals.inc"
|
||||||
|
#include "textures.inc"
|
||||||
|
|
||||||
|
#include "contexte.inc"
|
||||||
|
#include "elements.inc"
|
||||||
|
#include "hexabenz.inc"
|
||||||
|
|
||||||
|
object { Le_Decor }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#declare TrX = 1.84 * sqrt(NormClock);
|
||||||
|
#declare TrY = 0.90 + (3.5 * Cos_01(NormClock));
|
||||||
|
#declare TrZ = 9.999 * sqrt(NormClock);
|
||||||
|
#declare TrH = <TrX, TrY, TrZ>;
|
||||||
|
#declare RrY = 97 * sqrt(NormClock);
|
||||||
|
object { HexaCone () rotate y*RrY translate TrH }
|
||||||
|
|
||||||
|
object { HexaCone () rotate z*9.1 translate <5, 3, -8> }
|
||||||
|
object { HexaBenz () translate <-4, 2, -6> }
|
||||||
|
|
||||||
|
light_source { <-16, 17, -24>, rgb <0.51, 0.65, 0.40> }
|
||||||
|
// object { Repere scale 2 }
|
||||||
|
|
||||||
|
#declare CamY = 19 - (4.5*NormClock);
|
||||||
|
#declare LatY = -3 + NormClock;
|
||||||
|
|
||||||
|
camera {
|
||||||
|
location <-3.60, CamY, 21.09>
|
||||||
|
look_at <0, LatY, 0>
|
||||||
|
focal_point <2, 1, 12>
|
||||||
|
aperture 0.046
|
||||||
|
blur_samples 30
|
||||||
|
angle 45 + (5*NormClock)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user