Compare commits

..

No commits in common. "main" and "full-v1" have entirely different histories.

37 changed files with 412 additions and 1868 deletions

2
.gitignore vendored
View File

@ -9,8 +9,6 @@ datas/*.webp
WS/*timing
WS/log*
WS/*.done
WS/*.log
*.png
*.gif

View File

@ -1,31 +1,20 @@
DIMS = -W1600 -H1200
# POVOPT = +q9 +a0.02 -d
POVOPT = +q9 +A Declare=NbFrames=400 -d
POVDEP = contexte.inc hexacone.inc hexabenz.inc \
globals.inc hexawood.inc datas/hf.png \
dynamic.inc trident.inc groundbase.inc \
gadgets.inc
POVOPT = +q9 +a0.02 -d
POVDEP = contexte.inc elements.inc hexabenz.inc \
globals.inc datas/hf.png
CK=180
PNG: essai.png scene.png topview.png passage.png \
orbite.png hexabenz.png escadrille.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
hexacone.png
topview.png: topview.pov Makefile $(POVDEP)
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)
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
@ -35,9 +24,6 @@ hexabenz.png: hexabenz.pov Makefile $(POVDEP)
hexacone.png: hexacone.pov Makefile $(POVDEP)
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)
povray $(POVOPT) $(DIMS) -K$(CK) -i$< -o$@
@ -50,17 +36,4 @@ scene.png: scene.pov Makefile $(POVDEP)
escadrille.png: escadrille.pov Makefile $(POVDEP)
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$@

View File

@ -9,15 +9,12 @@ et vous pouvez
suivre son évolution par l'intermédiaire de
[Mastodon](https://mastodon.tetaneutral.net/@tth)
avec le croisimot `#hexacone`.
Quelques images sont disponibles sur mon serveur de
[cuisine](http://maison.tth.netlib.re/pov/hexacone.html).
## Prérequis
Avant toute chose, il faut avoir installé les logiciels
suivants : bash, awk, gnuplot, imagemagick, et, bien
entendu, [povray](https://povray.org/).
Une bonne maitrise des scripts shell sera un plus.
## Utilisation
@ -27,8 +24,8 @@ 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 et `./frames/Spool` pour l'assemblage
de la vidéo intégrale :
répertoires : d'un coté `./frames/<name>` pour stocker les images calculées :
```
frames/
@ -42,8 +39,6 @@ de la vidéo intégrale :
```
et de l'autre coté `./WS/` pour ranger les fichiers de travail.
À vous de jouer maintenant.
## Contact
* La [mailing-list du tetalab](https://lists.tetalab.org/postorius/lists/tetalab.tetalab.org/) ;

View File

@ -1,3 +1,3 @@
# Workspace
For intermediates files, and timing log.
workspace

View File

@ -1,62 +0,0 @@
/*
* 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)
}

View File

@ -1,38 +0,0 @@
/*
* 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
}

View File

@ -1,40 +0,0 @@
/*
* 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
}

View File

@ -4,134 +4,8 @@
/* 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 R2hxba = Rhxba * 0.48;
@ -146,7 +20,6 @@ merge {
sphere { 0, R2hxba translate < 0, E, 0> }
sphere { 0, R2hxba translate < 0, 0, -E> }
sphere { 0, R2hxba translate < 0, 0, E> }
#undef E
}
}
@ -154,15 +27,15 @@ merge {
{
union {
object { HexaBalls
texture { Lightning1 scale 0.44 }
rotate <clock/3, clock/4, clock/9>
translate <2, 1.11*Cos_010(NormClock), 4>
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*3>
translate <4, 1.11*Cos_010(NormClock), -3>
// rotate <-clock, clock*0.33333, clock>
translate <7, -1+0.89*Cos_010(NormClock), -6>
}
}
}
@ -187,102 +60,60 @@ blob {
}
}
/* ======================================================= */
// =======================================================
/* ======================================================= */
#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
#declare Le_Sol = object
{
difference {
// plane { y, 0 }
#local Big = 300;
box { <-Big, -0.15, -Big>, < Big, 0.0000, Big> }
#undef Big
#for (Foo, 0, 5)
cylinder { -y*5, y*5, 3.2 translate UnderHoles[Foo] }
#end
height_field {
png "datas/hf.png"
smooth
translate <-.5, 0, -.5>
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 }
}
}
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
{
union {
#local R = 0.008;
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 } }
cylinder { 0, <1, 0, 0>, 0.008 pigment { color Red } }
cylinder { 0, <0, 0, 1>, 0.008 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
{
union {
#if (1)
light_source {
<2.3, 5.50, 2.8> color Gray70
<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, 18>
<-5, 5.60, 8>
#if ( (clock > 290) & (clock<344) )
#local Couleur = rgb <0.20, 0.20, 0.90>;
#else
@ -294,34 +125,23 @@ union {
point_at <0, 0.95, -0.22>
}
#end
#if (0)
light_source {
<-4, 54, -7>
colour Gray50
parallel
point_at 0
}
#end
}
}
/* ======================================================= */
// #declare Le_Ciel = object
// {
sky_sphere {
pigment {
gradient y
color_map {
[ 0.2 color Gray20 ]
[ 0.4 color rgb <.7, .3, .5> ]
[ 0.7 color Gray30 ]
[ 0.9 color rgb <.9, .6, .5> ]
[ 1.0 color Gray20 ]
[ 0.2 color Gray10 ]
[ 0.4 color Gray60 ]
[ 0.7 color Black ]
[ 0.8 color White ]
[ 1.0 color Gray10 ]
}
turbulence 3.14159 + 0.84 * Cos_010(NormClock)
scale 1.600
turbulence 3.14159 + 0.91 * Cos_010(NormClock)
scale 1.804
// translate -1
}
#local Kem = 0.09;
@ -329,34 +149,16 @@ sky_sphere {
}
// }
/* ======================================================= */
/* XXX XXX */
light_source {
<-4, 54, -17>
colour Gray40
parallel
point_at 0
}
/* ------------------------------------------------------------ */
/*
* Et on rassemble tous les éléments...
*/
#declare Le_Decor = object
{
union {
object { Underground }
object { La_GroundBase }
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> }
object { Le_Sol }
object { Les_Bibelots }
object { Les_Lumieres }
}
}
/* ------------------------------------------------------------ */

View File

@ -1,56 +0,0 @@
/*
* 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)
}

View File

@ -1,4 +1,4 @@
# statics datas
Things like `height_fields` or `image_map` files...
statics datas, like height-fields files...

View File

@ -1,108 +0,0 @@
/*
*/
#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 }

View File

@ -40,8 +40,7 @@ union {
#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)) );
#local Value = sin( (NormClock * 26.536) + (3.14*rand(Rng1)) );
#if (Value < 0)
#local Couleur = rgb <abs(Value), 0, 0>;
#else
@ -57,8 +56,6 @@ union {
texture { New_Penny }
// }
#end
// ---------------------------------------------------------
/*
*
*/
@ -110,7 +107,7 @@ union {
#end
torus { R2, 0.0039 translate -0.08*y }
}
texture { GoldDark scale 6.50 }
texture { T_Brass_1C scale 6.50 }
}
/* ---------------------------------------------------------
@ -120,7 +117,7 @@ texture { GoldDark scale 6.50 }
{
difference {
merge {
sphere { 0, 0.0141 scale <1, 1, 4.70>
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> }
@ -138,14 +135,11 @@ union {
}
}
// ---------------------------------------------------------
#declare DTa = 0.278;
#declare DTb = 0.030;
// XXX #declare HexaCone_head = object
// XXX {
#macro HexaCone_head ()
#declare HexaCone_head = object
{
merge {
difference {
torus { DTa, DTb }
@ -154,17 +148,13 @@ merge {
}
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
}
#end // macro
// XXX }
#if (rand(Rng1) < 0.8)
texture { Orange_Glass }
#else
texture { Dark_Green_Glass }
#end
}
/* ------------------------------------------
* new Sat Dec 21 11:17:36 PM UTC 2024
@ -178,10 +168,11 @@ merge {
box { <-DXail, -DYail, -DZail> , <DXail, DYail, 0> }
}
#macro Le_rotor ()
#declare Le_rotor = object
{
#local Rrot = 0.0034;
#local Lrot = 0.13;
union {
#local Rrot = 0.0034;
#local Lrot = 0.13;
sphere { -x*Lrot, Rrot }
cylinder { <-Lrot, 0, 0>, <Lrot, 0, 0>, Rrot }
sphere { x*Lrot, Rrot }
@ -192,17 +183,14 @@ union {
rotate (foo*35)*x
translate (foo*0.013)*x }
#end
texture {
#if ( rand(Rng1) < 0.333 )
pigment { color Orange }
#else
pigment { color Magenta }
#end
// finish { emission 0.7 }
finish { ambient 0.7 phong 0.5 brilliance 0.9 }
}
}
#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 }
}
}
/* ------------------------------------------------------
*
@ -240,7 +228,7 @@ texture { T_Brass_1C }
{
union {
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 }
}
}
@ -263,8 +251,8 @@ rotate -y*90
union {
object { HexaCone_Body () }
#local T = 0.55;
object { HexaCone_head () translate <0, 0, T+DTa> }
#if ( (rand(Rng1) > 0.47) )
object { HexaCone_head translate <0, 0, T+DTa> }
#if ( (rand(Rng1) > 0.27) )
object { HexaCone_radar_A translate <0, T+0.18, 0> }
#else
object { HexaCone_radar_B translate <0, T+0.18, 0> }

View File

@ -9,57 +9,44 @@
#include "globals.inc"
#include "contexte.inc"
#include "hexacone.inc"
#include "elements.inc"
#include "hexabenz.inc"
#include "hexawood.inc"
#include "trident.inc"
// =======================================================
#include "dynamic.inc"
#for (idX, 0, 4)
#for (idZ, 0, 4)
#for (idX, -3, 3)
#for (idZ, -3, 3)
#local posX = (idX * 4.72) + (rand(Rng1)-0.5);
#local posY = 3.1 + (1.2*(rand(Rng1)-0.5));
#local posZ = (idZ * 4.37) ;
#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> }
#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 <Rx, Ry, Rz>
translate <posX, posY, posZ> }
object { HexaBenz ()
rotate y*Ry translate <posX, posY, posZ> }
#end
// #debug "\n"
#end // if pos...
#end // loop IDX
#end // loop idZ
#end
#end
// =======================================================
object { Le_Decor }
#if (NormClock < 0.08)
light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> }
#end
// object { Repere scale 5 translate y }
light_source { < 11, 7, 4>, rgb <NormClock, 0.48, 0.80> }
#local CamX = -8.7 + ( 6.9 * Cos_01(NormClock));
#local CamY = 0.95 + (24.64 * Cos_01(NormClock));
#local CamZ = 16.86 + (12.9 * Cos_01(NormClock));
// 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, -NormClock, 0>
angle 64 - (3.97 * NormClock)
look_at <0.0, 0.0, 0>
angle 53 - (3.57 * NormClock)
}

173
essai.pov
View File

@ -7,108 +7,103 @@
#include "globals.inc"
#debug "\n GLOBALS INCLUDED\n"
#include "contexte.inc"
#include "gadgets.inc"
#include "hexacone.inc"
#include "elements.inc"
#include "hexabenz.inc"
#include "hexawood.inc"
// =======================================================
// #include "dynamic.inc"
// =======================================================
#include "trident.inc"
#debug " ACTION !!!\n"
// ------------------------------------------------------ ##
// ------------------------------------------------------ ##
#declare Tridents = object
{
#local RX = -11 + (80*sin(NormClock*9.81) + 3*sin(NormClock*23));
#local RZ = 96 - (54*Cos_010(NormClock));
union {
object { Trident_A () rotate <RX, 0, RZ>
translate < -1.4, 3, 0> }
object { Trident_A () rotate <0, clock, 0>
translate < 1.4, 2, 0> }
}
}
// ------------------------------------------------------ ##
#declare Gyros = object
{
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"
#macro GyroPhare_mat ()
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
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 }
#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
object { Repere translate y*0.8 }
#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 }
// =======================================================
#local CamX = -2.7 + (1.8*Cos_010(NormClock));
#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;
// 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 {
orthographic
location <CamX, CamY, CamZ>
look_at <0, 1.4, 0>
angle 26 - 3*Cos_01(NormClock)
location <CamX, CamY, 9.99>
look_at <0, 0, 0>
angle 42 + 8*Cos_01(NormClock)
}

View File

@ -1,19 +1,15 @@
# Le silo des frames
Avant tout, il faut créer ces répertoires :
```
frames/
+--- essai
+--- orbite
+--- passage
+--- scene
+--- scene
+--- orbite
+--- survol
+--- escadrille
+--- topview
+--- Spool
```
frames/
├── essai
├── orbite
├── passage
├── scene
├── scene
├── orbite
├── escadrille
└── topview

View File

@ -1,182 +0,0 @@
/*
* 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
}
}
// =======================================================

View File

@ -1,7 +1,7 @@
global_settings {
assumed_gamma 1.0
ambient_light rgb <0.47, 0.47, 0.47>
ambient_light rgb <0.18, 0.18, 0.21>
max_trace_level 15
}
@ -9,129 +9,26 @@ global_settings {
#include "metals.inc"
#include "textures.inc"
#include "stones.inc"
#include "woods.inc"
#declare Rng1 = seed(1337);
#declare foo = rand(Rng1);
#declare foo = rand(Rng1);
#declare Rng2 = seed(now*24*60*60);
#declare bar = rand(Rng2);
#declare bar = rand(Rng2);
#declare NormClock = clock / NbFrames;
#declare NormClock = clock / 360.0;
/* ------------------------------------------------------------ */
/*
* Some constants...
*/
#declare SzSol = 34;
#declare H_sol = 0.000; // c'est quoi exactement ?
#declare SzBase = 2.90;
#declare H_base = 0.23;
#declare SzSol = 30;
#declare R_basecone = 0.117;
#declare H_cone = 0.97;
#declare R_gyro = 0.14;
#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.
#declare R_gyro = 0.10;
#declare H_gyro = 1.20;
/* ------------------------------------------------------------ */
/*
@ -144,10 +41,4 @@ finish {
(0.5-0.5*cos( 2 * 3.141592654 * X))
#end
/* Interpolate */
#macro Interpolate(A, B, pos)
#local resultat = ( (B-A) * pos) +A;
resultat
#end
/* ------------------------------------------------------------ */

View File

@ -1,154 +0,0 @@
/*
* _ _
* __ _ _ __ ___ _ _ _ __ __| || |__ __ _ ___ ___
* / _` || '__|/ _ \ | | | || '_ \ / _` || '_ \ / _` |/ __| / _ \
* | (_| || | | (_) || |_| || | | || (_| || |_) || (_| |\__ \| __/
* \__, ||_| \___/ \__,_||_| |_| \__,_||_.__/ \__,_||___/ \___|
* |___/
*
* 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)
}
/* ======================================================= */

View File

@ -8,15 +8,8 @@
union {
#local RA = R_basecone;
#local RB = 0.001;
difference {
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
}
cone { 0, RA, y*0.89, 0.0001 }
sphere { 0, RA*1.098 scale <1, 0.62, 3.03> translate -0.02*y }
}
// }
#end
@ -25,62 +18,53 @@ union {
// {
union {
#for (foo, 0, 360, 60)
#local E = 0.31;
#local E = 0.38;
#local Tx = E * sin(radians(foo));
#local Ty = E * cos(radians(foo));
object {
Benz_Cone_Base ()
#local R = rand(Rng1);
#if ( R < 0.3333 )
#if ( rand(Rng1) < 0.5 )
texture { T_Silver_2C scale 11.50 }
#elseif ( R < 0.6666 )
texture { T_Brass_2C scale 13.50 }
#else
texture { T_Brass_4A scale 13.50 }
texture { T_Brass_2C scale 13.50 }
#end
rotate -z*foo
translate <Tx, Ty, 0>
}
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
// ------------------------------------------------------
#declare R_Tube = 0.17;
#local R_Tube = 0.20;
#local L_Tube = 0.54;
#macro Benz_Tubules ()
#declare Benz_Tubules = object
{
merge {
#local E = R_Tube * 0.75;
#local R = 0.009;
#for (foo, 0, 360, 30)
#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.25;
#local Dzb = z * 0.95;
#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.520)
texture { Orange_Glass }
#else
texture { Yellow_Glass }
#end
}
#if ( rand(Rng1) < 0.333)
texture { Orange_Glass }
#else
texture { Yellow_Glass }
#end
}
#macro Benz_Fuseau ()
#declare Benz_Fuseau = object
{
difference {
sphere { 0, R_Tube*0.39 }
sphere { 0, R_Tube*0.37 }
@ -88,64 +72,35 @@ difference {
cylinder { < 1, 0, -1>, <-1, 0, 1>, R_Tube*0.21 }
}
scale <1, 1, 4.4>
#if ( rand(Rng1) < 0.360)
texture { Shadow_Clouds scale 0.56 }
#else
texture { Flashy }
#end
#end // end macro
texture { Shadow_Clouds scale 0.56 }
}
#declare Benz_Fuseau_Flash = object
{
union {
object { Benz_Fuseau () }
object { Benz_Fuseau }
light_source { 0,
rgb <rand(Rng2), rand(Rng2), rand(Rng2)>
fade_distance 0.96
fade_power 1.95
}
}
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
rotate -z*clock*6
}
#declare Benz_Cylindre = object
{
#local E_tube = 0.02;
#local R_int = R_Tube - E_tube;
difference {
union {
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 }
cylinder { z*L_Tube*1.5, -z*L_Tube, R_Tube }
/* cette sphere devrait devenir
un vrai cockpit ? */
object { Forme_Cockpit
translate y*R_Tube*0.97}
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_int }
cylinder { z*4, -z*4, R_Tube*0.95 }
}
texture { Soft_Silver scale 6.0 }
}
@ -154,7 +109,7 @@ texture { Soft_Silver scale 6.0 }
// #declare Benz_Tube = object
// {
union {
object { Benz_Tubules () }
object { Benz_Tubules }
object { Benz_Fuseau_Flash translate z*0.40 }
object { Benz_Cylindre }
}
@ -167,7 +122,7 @@ union {
// #declare HexaBenz = object
// {
union {
#local Rk = (rand(Rng1)-0.5) * 1312;
#local Rk = (rand(Rng1)-0.5) * 1024;
object { Benz_Cones () rotate z*NormClock*Rk}
object { Benz_Tube () }
}

View File

@ -6,30 +6,33 @@
#include "globals.inc"
#include "colors.inc"
#include "metals.inc"
#include "textures.inc"
#include "stones.inc"
#include "contexte.inc"
#include "hexacone.inc"
#include "elements.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 }
// =======================================================
object { Le_Decor }
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 }
#declare Loc_cam = <0, 2, 2*NormClock> + (Pos_RedB_0 * 1.42);
camera {
location Loc_cam
look_at Pos_RedB_0 + <0, 1.20, 0>
// focal_point <0.37, 0.0, 0>
// aperture 0.046
// blur_samples 30
angle 40 - 14 * Cos_01(NormClock)
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)
}

View File

@ -6,32 +6,41 @@
#include "globals.inc"
#include "colors.inc"
#include "metals.inc"
#include "textures.inc"
#include "stones.inc"
#include "contexte.inc"
#include "hexacone.inc"
#include "elements.inc"
#include "hexabenz.inc"
#include "hexawood.inc"
#include "trident.inc"
#include "dynamic.inc"
object { Le_Decor }
#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> }
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 }
#declare Loc_cam = <2, 2.5, 1> + (Pos_RedB_1 * 1.383);
camera {
location Loc_cam
look_at Pos_RedB_1 + <0.02, 1.16, 0>
// focal_point <0.37, 0.90, 0>
// aperture 0.046
// blur_samples 30
angle 55 - 25 * Cos_01(NormClock)
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)
}

View File

@ -1,115 +0,0 @@
/*
* 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 }
}
}
// =======================================================

View File

@ -1,30 +0,0 @@
/*
* 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
}

View File

@ -7,17 +7,17 @@
#include "globals.inc"
#include "contexte.inc"
#include "hexacone.inc"
#include "elements.inc"
#include "hexabenz.inc"
// =======================================================
#declare R_planete = 1.45;
#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.12;
#local HC = R_planete * 0.11;
#local BN = R_planete * 3;
difference {
@ -28,9 +28,8 @@ difference {
box { <-BN, -BN, -HC>, <BN, BN, HC> }
}
texture {
pigment { color rgb <0.20, 0.30, 0.10> }
normal { dents 0.38 scale 0.5}
finish { phong 0.80 reflection 0.05 }
pigment { color rgb <0.20, 0.40, 0.10> }
finish { reflection 0.25 }
}
}
@ -38,8 +37,8 @@ texture {
{
sphere { 0, R_planete }
texture {
pigment { rgb <0.40, 0.50, 0.70> }
finish { metallic 0.50 reflection 0.55 }
pigment { rgb <0.70, 0.50, 0.70> }
finish { reflection 0.25 }
}
}
@ -53,28 +52,28 @@ union {
// =======================================================
#local RO = 4.15;
#local CK = NormClock * 13.37;
#local CK = NormClock * 7.87;
#declare PosX = RO * sin(CK);
#declare PosY = 0;
#declare PosZ = RO * cos(CK);
object { HexaBenz ()
rotate -y*CK*82.3 translate <PosX, PosY, PosZ>
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*99.22 translate <PosX, PosY, PosZ>
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.0+(2*NormClock), 8.59>
location <3, 1.50, 7.59>
look_at <0.0, 0.0, 0>
focal_point <0.0, 0.0, 0>
focal_point <0.07, 0.0, 0>
aperture 0.046
blur_samples 30
angle 62

View File

@ -7,26 +7,25 @@
#include "globals.inc"
#include "colors.inc"
#include "metals.inc"
#include "textures.inc"
#include "contexte.inc"
#include "hexacone.inc"
#include "elements.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 }
#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 {
@ -41,7 +40,7 @@ light_source {
#if ( (clock > 230) & (clock < 300) )
light_source {
<2, 0.30, -2> color Green
<2, 0.30, -2> color White
spotlight
radius .044
falloff 2
@ -51,11 +50,11 @@ light_source {
#end
camera {
location <-2.76, 1.83, 8.76>
look_at <PosX+0.09, PosY, PosZ-0.03>
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 32
angle 34
}

View File

@ -1,51 +0,0 @@
/*
* 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
}

View File

@ -7,30 +7,40 @@
#include "globals.inc"
#include "colors.inc"
#include "metals.inc"
#include "textures.inc"
#declare NormClock = clock / 360.0;
#include "contexte.inc"
#include "hexacone.inc"
#include "elements.inc"
#include "hexabenz.inc"
#include "hexawood.inc"
#include "trident.inc"
#include "dynamic.inc"
// ---------------------------------------------------------
object { Le_Decor }
#declare CK = 144 + (clock * 0.27);
#declare Dcam = 3.75;
#declare CamX = Dcam * cos(radians(CK));
#declare CamZ = Dcam * 1.20 * sin(radians(CK));
object { HexaCone ()
rotate < 3, 0, -4> rotate y*17 translate y*1.11 }
#declare Lat = <0.03, 2.45, 0.17>;
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 CamZ = Dcam * 1.20 * cos(radians(CK));
#declare CamZ = CamZ - 0.11;
#declare Lat = <0.03, 1.08, 0.17>;
camera {
location <CamX, 1.97, CamZ>
location <CamX, 1.23, CamZ>
look_at Lat
// focal_point Lat
// aperture 0.046
// blur_samples 30
focal_point Lat
aperture 0.046
blur_samples 30
angle 70
}
/**
light_source { <CamX*1.3, 1.35, 1.2+(CamZ*1.3)>,
rgb <0.47, 0.65, 0.49> }
**/

View File

@ -1,38 +0,0 @@
/*
* 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
}

View File

@ -2,31 +2,10 @@
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
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
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

View File

@ -1,9 +0,0 @@
Img_Width=1024
Img_Height=720
TEXTCOL="White"
STROKOL="OliveDrab"
NBFRAMES=400

View File

@ -2,12 +2,11 @@
set -e ; set -u
# set default value's)
srcdir="essai"
if [ $# == 1 ]
then
srcdir=$1
else
srcdir="essai"
fi
source tools/fonctions.sh

View File

@ -4,14 +4,8 @@ set -eu
# --------------------------------------------------------------
visual_sleep ()
{
msg="$1"
nbre="$2"
# echo $msg ; echo $nbre
for foo in $(seq 0 $nbre) ; do
local bar=$(( $nbre - $foo ))
printf "======== %-20s %3d\r" "$msg" $bar
for foo in $(seq 0 $1) ; do
printf '*'
sleep 1
done
echo
@ -48,6 +42,7 @@ ffmpeg -nostdin \
-tune film \
$FILMNAME
# wc -c $FILMNAME | tee -a WS/log
}
# --------------------------------------------------------------
#

View File

@ -2,13 +2,13 @@
set -e ; set -u
source tools/config.sh
IDX=0
SPOOL="frames/Spool"
SEQNAME="none"
TMP="WS/tmp.png"
FONTE="Helvetica-Bold"
TEXTCOL="yellow"
STROKOL="darkblue"
source tools/fonctions.sh
@ -32,26 +32,13 @@ linkfarm ()
{
SRC="frames/$1"
echo "linkfarm $SRC" | tee -a WS/log
local INTER="/dev/shm/tmp-intertitre.png"
tools/plot-timing.sh $1
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}
local NBRE=60
for foo in $(seq 0 $NBRE)
do
copy_a_file $INTER
# :
copy_a_file "WS/negatif.png"
done
for foo in $(seq 0 $NBRE)
@ -64,11 +51,9 @@ do
copy_a_file $src
done
PIC=$( printf "%s/%05d.png" $SRC $((NBFRAMES-1)) )
# echo "End pic $PIC" >> WS/log
for foo in $(seq 0 $NBRE)
do
copy_a_file "$PIC"
copy_a_file "$SRC/00359.png"
done
}
# -------------------------------------------------------
@ -76,8 +61,8 @@ faire_le_titre ()
{
echo "faire le titre"
local NBRE=300
local SRC="frames/hexawood/00199.png"
local NBRE=180
local SRC="frames/passage/00059.png"
local GRAY="/dev/shm/tmp-titre.png"
convert -colorspace gray -colors 27 $SRC $GRAY
@ -85,14 +70,14 @@ convert -colorspace gray -colors 27 $SRC $GRAY
for foo in $(seq 0 $NBRE)
do
Ypos=$(( -175 + foo ))
convert ${GRAY} \
convert ${GRAY} \
-gravity north \
-font $FONTE \
-pointsize 140 \
-pointsize 172 \
-kerning 6 \
-fill $TEXTCOL \
-strokewidth 3 -stroke $STROKOL \
-annotate +0+${Ypos} "La famille\nHexaCone" \
-annotate +0+${Ypos} "HexaCone" \
${TMP}
# identify ${TMP}
copy_a_file ${TMP}
@ -103,18 +88,14 @@ echo
# -------------------------------------------------------
faire_la_fin ()
{
local NBRE=160
datetime=$(LANG=fr date -u +"%Y/%m/%d %H:%M")
local NBRE=180
datetime=$(LANG=fr date -u +"%Y/%m/%d")
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)
do
Ypos=$(( foo + 20 ))
convert ${GRAY} \
convert "WS/negatif.png" \
-gravity north \
-font $FONTE \
-pointsize 86 \
@ -126,7 +107,7 @@ do
-pointsize 48 \
-strokewidth 1 \
-gravity south \
-annotate +0+110 "${datetime}" \
-annotate +0+170 "${datetime}" \
${TMP}
# identify ${TMP}
copy_a_file ${TMP}
@ -140,22 +121,17 @@ figlet "Link farmer"
rm -f frames/Spool/*.png
# tools/plot-timing.sh
faire_le_titre
linkfarm hexabenz
linkfarm hexawood
linkfarm hexacone
linkfarm escadrille
linkfarm survol
linkfarm cutoff
linkfarm topview
linkfarm passage
linkfarm scene
linkfarm carto
linkfarm circular
linkfarm bubblecut
linkfarm orbite
linkfarm hexacone
linkfarm remote
linkfarm essai
tools/plot-timing.sh

View File

@ -1,29 +1,21 @@
#!/bin/bash
set -e ; set -u
source tools/config.sh
source tools/fonctions.sh
SEQNAME="$1"
START=0
NBFRAMES=360
if [ $# == 2 ]
then
START=$2
fi
echo "$0 $SEQNAME from $START" >> WS/log
echo "Running $0 $SEQNAME" >> WS/log
DIMS="-W$Img_Width -H$Img_Height"
NBFR=" Declare=NbFrames=$NBFRAMES "
echo $NBFR
POVOPT="+q9 +A0.02 -d ${DIMS} ${NBFR} -WT7"
DIMS="-W1024 -H768"
POVOPT="+q9 -a -d ${DIMS} -WT6"
echo $POVOPT ; echo ; sleep 2
TMPIMG=/dev/shm/${SEQNAME}-tmp.png
for frame in $(seq $START $((NBFRAMES-1)))
for frame in $(seq 0 $((NBFRAMES-1)))
do
img=$(printf "frames/%s/%05d.png" $SEQNAME $frame)
@ -33,30 +25,27 @@ do
err=$?
if [ $err != 0 ] ; then
echo "$SEQNAME fail $frame" >> WS/log
mogrify -colorspace gray -blur 5x5 $img
visual_sleep "render fail" 12
mogrify -colorspace gray $img
visual_sleep 12
continue
fi
set -e
txt=$(printf "%s %03d" ${SEQNAME} $frame | tr '01' 'ol')
txt=$(printf "%s %03d" ${SEQNAME} $frame | tr '0' 'o')
# echo $frame $img $txt
convert ${TMPIMG} \
-font Courier-Bold \
-pointsize 11 \
-kerning 4 \
-fill ${TEXTCOL} \
-gravity north \
-annotate +12+5 "$txt" \
-pointsize 18 \
-fill Gray80 \
-gravity south \
-annotate +0+5 "$txt" \
${img}
fin=$(date +%s)
echo
printf "%-12s %4d %4d\n" \
${SEQNAME} $frame $(( fin-debut )) | \
tee -a WS/mp4.timing
echo ; sleep 2
echo ${SEQNAME} $frame $(( fin - debut )) | \
tee -a WS/mp4.timing
echo ; sleep 3
done
date --utc > WS/$SEQNAME.done
echo
ff_encodage $SEQNAME wip-${SEQNAME}.mp4

View File

@ -2,8 +2,6 @@
set -ue
source tools/config.sh
TMPFILE="/dev/shm/plot-timing.tmp"
IMAGE="timing.png"
@ -14,62 +12,52 @@ else
sequence="escadrille"
fi
# echo "plot timing $sequence" >> WS/log
echo "plot timing $sequence" | tee -a WS/log
# wc WS/mp4.timing | tee -a WS/log
grep $sequence WS/mp4.timing | tail -3600 | awk \
-v nbframes=$NBFRAMES \
' \
grep $sequence WS/mp4.timing | tail -3600 | awk ' \
BEGIN { \
# print "nb frames = ", nbframes; \
for (foo=0; foo<nbframes; foo++) { \
nbrames=360; \
for (foo=0; foo<nbrames; foo++) { \
mini[foo] = 666; \
maxi[foo] = -42; \
count[foo] = 0; \
} \
} \
# for every line \
\
{ \
accu[$2] += $3; \
count[$2]++; \
if (mini[$2] > $3) mini[$2] = $3; \
if (maxi[$2] < $3) maxi[$2] = $3;
last[$2] = $3 \
if (maxi[$2] < $3) maxi[$2] = $3; \
} \
\
END { \
for (foo=0; foo<nbframes; foo++) { \
for (foo=0; foo<nbrames; foo++) { \
if (count[foo] > 0) { \
mean = accu[foo] / count[foo]; \
printf "%4d %4f %4d %4d %4d\n",
foo, mean,
mini[foo], maxi[foo],
last[foo];
printf "%4d %4f %4d %4d\n", foo, mean, \
mini[foo], maxi[foo]; \
} \
} \
} \
' > $TMPFILE
# head $TMPFILE ; exit
# cat -n $TMPFILE | tail # ; exit
gnuplot << __EOC__
set term png size $Img_Width,$Img_Height
set term png size 1024,768
set output "timing.png"
set grid
set xrange [:400]
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 "#00aa00" t "moyenne", \
"/dev/shm/plot-timing.tmp" u 1:5 w l \
lc "#000000" t "last"
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 -level -33% $IMAGE WS/negatif.png
convert -negate -colorspace gray -level -33% $IMAGE WS/negatif.png

View File

@ -7,46 +7,39 @@
#include "globals.inc"
#include "contexte.inc"
#include "hexacone.inc"
#include "hexabenz.inc"
#include "hexawood.inc"
#include "trident.inc"
#include "colors.inc"
#include "metals.inc"
#include "textures.inc"
#include "contexte.inc"
#include "elements.inc"
#include "hexabenz.inc"
object { Le_Decor }
/* XXX
#declare TrX = 1.84 * sqrt(NormClock);
#declare TrY = 0.90 + (3.5 * Cos_01(NormClock));
#declare TrZ = 9.999 * sqrt(NormClock);
#declare TrH = <TrX, TrY, TrZ>;
#declare RrY = 97 * sqrt(NormClock);
object { HexaCone () rotate y*RrY translate TrH }
*/
#include "dynamic.inc"
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 }
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 }
object { Le_Decor }
#declare CamY = 32 - (21.36 * Cos_01(NormClock));
#declare LatY = -4 + ( 2.12 * NormClock);
#declare CamY = 19 - (4.5*NormClock);
#declare LatY = -3 + NormClock;
camera {
location <-3.60, CamY, 10.09>
location <-3.60, CamY, 21.09>
look_at <0, LatY, 0>
// focal_point <2, 1, 12>
// aperture 0.046
// blur_samples 30
angle 45 + (82*NormClock)
focal_point <2, 1, 12>
aperture 0.046
blur_samples 30
angle 45 + (5*NormClock)
}

View File

@ -1,92 +0,0 @@
#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
// ------------------------------------------------------