Compare commits

...

9 Commits

Author SHA1 Message Date
Tonton Th
f9755cf0a2 La cabane part en prod' un lundi matin 2025-02-10 04:16:53 +01:00
Tonton Th
7e7f9fbe40 little tweak 2025-02-10 04:15:42 +01:00
Tonton Th
6407a3ed3a cosmetic 2025-02-10 04:15:02 +01:00
Tonton Th
701b6187a5 plot the last timing value 2025-02-10 04:14:38 +01:00
Tonton Th
6f637ca79a more doc, really ? 2025-02-10 02:25:39 +01:00
Tonton Th
97950f2483 cosmetic and addition of "survol" seq 2025-02-10 02:15:10 +01:00
Tonton Th
15eedb2034 change a default value 2025-02-09 22:15:04 +01:00
Tonton Th
f487f35ccd centering 2025-02-09 20:44:55 +01:00
Tonton Th
66f54c283d fine tuning 2025-02-09 20:44:05 +01:00
13 changed files with 180 additions and 149 deletions

View File

@ -5,7 +5,7 @@ POVOPT = +q9 +A -d
POVDEP = contexte.inc elements.inc hexabenz.inc \ POVDEP = contexte.inc elements.inc hexabenz.inc \
globals.inc datas/hf.png globals.inc datas/hf.png
CK=180 CK=230
PNG: essai.png scene.png topview.png passage.png \ PNG: essai.png scene.png topview.png passage.png \

View File

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

View File

@ -4,6 +4,63 @@
/* voir aussi le fichier 'globals.inc' */ /* voir aussi le fichier 'globals.inc' */
/* ======================================================= */
/*
* Inserer ici le SDL de la cabane
*/
// =======================================================
/*
* nouveau debut fevrier 2025 - we love raytracing
*/
/*
* deux textures
*/
#declare T_Beton_1 = texture
{
pigment { color <0.9, 0.8, 0.8> }
normal { dents 0.75 scale 0.3 }
finish { roughness 1.00 }
}
#declare T_Beton_2 = texture
{
pigment { color <0.7, 0.6, 0.6> }
normal { dents 0.25 scale 2 }
finish { roughness 1.00 }
}
/*
* 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.23>, <1, Hc, 0.23>, 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 GroudBase_coin = object #declare GroudBase_coin = object
@ -14,11 +71,30 @@ merge {
} }
} }
#declare GroundBase = object #declare GroundBase_a = object
{
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> }
#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_Stone2 rotate 49 scale 0.22 }
}
#declare GroundBase_b = object
{ {
#local Sz = SzBase - 0.02; #local Sz = SzBase - 0.02;
union { union {
box { <-SzBase, 0, -SzBase>, <SzBase, 0.2, SzBase> } box { <-SzBase, 0, -SzBase>, <SzBase, H_base, SzBase> }
object { GroudBase_coin translate <-Sz, 0, -Sz> } object { GroudBase_coin translate <-Sz, 0, -Sz> }
object { GroudBase_coin translate < Sz, 0, -Sz> } object { GroudBase_coin translate < Sz, 0, -Sz> }
object { GroudBase_coin translate <-Sz, 0, Sz> } object { GroudBase_coin translate <-Sz, 0, Sz> }
@ -28,6 +104,20 @@ texture { T_Stone6 rotate 9 scale 0.32 }
#undef Sz #undef Sz
} }
/* ------------------------------------------------------------ */
#declare La_GroundBase = object
{
union {
object { GroundBase_b }
/*
* ici, mettre la cabane
*/
#local Dz = <0, 0, -7>;
object { GroundBase_a translate Dz }
object { Cabane_Base_2 rotate y*180 translate Dz }
}
}
/* ======================================================= */ /* ======================================================= */
#macro GyroPhare_mat () #macro GyroPhare_mat ()
@ -294,7 +384,7 @@ sky_sphere {
union { union {
object { Le_Sol } object { Le_Sol }
object { Underground } object { Underground }
object { GroundBase } object { La_GroundBase }
object { Les_Bibelots } object { Les_Bibelots }
object { Les_Lumieres } object { Les_Lumieres }
object { Les_GyroPhares () } object { Les_GyroPhares () }

View File

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

View File

@ -17,7 +17,7 @@
#for (idX, 0, 4) #for (idX, 0, 4)
#for (idZ, 0, 4) #for (idZ, 0, 4)
#local posX = (idX * 4.56) - 7.5 + (rand(Rng1)-0.5); #local posX = (idX * 4.56) - 9.5 + (rand(Rng1)-0.5);
#local posY = 2.6 + (1.2*(rand(Rng1)-0.5)); #local posY = 2.6 + (1.2*(rand(Rng1)-0.5));
#local posZ = (idZ * 4.24) - 7.9; #local posZ = (idZ * 4.24) - 7.9;
#local Rx = (rand(Rng1) - 0.5) * 8; #local Rx = (rand(Rng1) - 0.5) * 8;
@ -39,7 +39,7 @@
object { Le_Decor } object { Le_Decor }
// object { Repere scale 5 } // object { Repere scale 5 translate y }
#local CamX = -8.7+(6.6*NormClock); #local CamX = -8.7+(6.6*NormClock);
#local CamY = 2.1+(13.37*Cos_01(NormClock)); #local CamY = 2.1+(13.37*Cos_01(NormClock));

145
essai.pov
View File

@ -8,145 +8,54 @@
#include "globals.inc" #include "globals.inc"
#include "contexte.inc" #include "contexte.inc"
#include "gadgets.inc"
#include "elements.inc" #include "elements.inc"
#include "hexabenz.inc" #include "hexabenz.inc"
// ======================================================= // =======================================================
/*
* nouveau debut fevrier 2025 - we love raytracing
*/
/* #macro GGG_Un_Cone ()
* deux textures merge {
*/ #local RA = R_basecone;
#declare T_Beton_1 = texture cone { 0, RA, y*0.89, 0.000001 }
{ sphere { 0, RA }
pigment { color <0.9, 0.8, 0.8> }
normal { dents 0.75 scale 0.3 }
}
#declare T_Beton_2 = texture
{
pigment { color <0.9, 0.8, 0.8> }
normal { dents 0.25 scale 2 }
}
/*
* une seule forme de cabane pour le moment
*/
#declare Base_cabane_forme = object
{
difference {
box { <-0.90, 0, 0>, <0.90, 1.00, 0.80> }
box { <-0.89, -1, -1> <0.89, 0.99, 0.79> }
cylinder { <-1, 0.75, -0.23>, <1, 0.75, 0.23>, 0.09 }
}
}
/*
* 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 }
}
/*
* assemblage des deux versions face a face
*/
#declare Les_Cabanes = object
{
union {
#local E = 1.10;
object { Cabane_Base_1 rotate 270*y translate -x*E }
object { Cabane_Base_2 rotate 90*y translate x*E }
#undef E
}
}
// =======================================================
#declare QuadriPole = object
{
#local R = 0.02;
#local E = 0.25;
#local H = H_cone*2;
union {
cylinder { 0, y*H, R translate -x*E }
cylinder { 0, y*H, R translate x*E }
cylinder { 0, y*H, R translate -z*E }
cylinder { 0, y*H, R translate z*E }
}
texture { WIP_color }
#undef E
#undef H
#undef R
}
// =======================================================
#macro Bubble ()
sphere {
0, 0.065
#if ( rand(Rng1) < 0.333 )
texture { Ruby_Glass }
#elseif ( rand(Rng1) < 0.666 )
texture { Orange_Glass }
#else
texture { Gold_Nugget }
#end
} }
#end #end
#macro Un_Machin () #macro GGG_Cones ()
union { union {
#for (Y, 1, 8, 1) #for (foo, 0, 360, 60)
object { Bubble() translate y*Y*0.1 } #local E = 0.50;
#end #local Tx = 1.333 * E * sin(radians(foo));
#local Tz = E * cos(radians(foo));
object {
GGG_Un_Cone ()
#if ( rand(Rng1) < 0.5001 )
texture { T_Wood32 rotate 17 scale 1.50 }
#else
texture { T_Wood23 scale 2.50 }
#end
// rotate -z*foo
translate <Tx, 0, Tz>
}
#end // end for
} }
#end #end
#declare Les_Machins = object object { GGG_Cones () translate y*0.5 }
{
union {
#local Rk = 3.95 + NormClock;
#for (foo, 0, 359, 45)
#local Xpos = Rk * sin(radians(foo));
#local Zpos = Rk * cos(radians(foo));
#local RND = rand(Rng1);
object { Un_Machin () translate <Xpos, 0, Zpos> }
#end
#undef RND
#undef Rk
}
}
// ======================================================= // =======================================================
object { OpenBox translate y*1.2 }
object { GroundBase }
object { Les_Cabanes rotate -y*(clock*0.75) translate y*H_base }
// object { OpenBox translate y*1.2 }
object { Les_Machins translate y*1.5 }
object { Le_Decor } object { Le_Decor }
object { Repere translate y*2 } // object { Repere translate y*2 }
// ======================================================= // =======================================================
// light_source { <-8, 7, -9>, rgb <0.81, 0.65, NormClock> } #local CamX = -2.7 + (3.8*Cos_010(NormClock));
// light_source { < 11, 7, 4>, rgb <1-NormClock, 0.28, 0.80> }
#local CamX = -2.7 + (3.8*Cos_01(NormClock));
#local CamY = 1.81 + (4*sqrt(NormClock)); #local CamY = 1.81 + (4*sqrt(NormClock));
#local CamZ = 1.7 + (3.8*Cos_01(NormClock)); #local CamZ = 1.7 + (3.8*Cos_010(NormClock));
camera { camera {
// fisheye // fisheye
location <CamX, CamY, 9.99> location <CamX, CamY, 9.99>

View File

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

View File

@ -20,7 +20,7 @@
object { Le_Decor } object { Le_Decor }
#declare PosX = 1.55; #declare PosX = 1.55;
#declare PosY = 2.10 + (NormClock*0.28); #declare PosY = 2.20 + (NormClock*0.28);
#declare PosZ = (NormClock-0.5) * 53.27; #declare PosZ = (NormClock-0.5) * 53.27;
object { HexaBenz () translate <PosX, PosY, PosZ> } object { HexaBenz () translate <PosX, PosY, PosZ> }

View File

@ -14,12 +14,14 @@
// ======================================================= // =======================================================
#declare A = <-SzSol, 16, -8>; #declare A = <-SzSol, 16, -8>;
#declare B = <SzSol+4, 18, -11>; #declare B = <SzSol+4, 18, -1>;
#declare P = Interpolate(A, B, NormClock); #declare P = Interpolate(A, B, NormClock);
object { HexaCone () rotate y*((6*NormClock)+80) translate P } object { HexaCone () rotate y*((6*NormClock)+80) translate P }
object { Le_Decor } object { Le_Decor }
// object { Repere translate y*2 }
// ======================================================= // =======================================================
#declare Debut = <-3, 42, 47> ; #declare Debut = <-3, 42, 47> ;
@ -32,6 +34,6 @@ object { Le_Decor }
camera { camera {
location PosCam location PosCam
look_at LatCam look_at LatCam
angle 52 angle 53
} }

View File

@ -2,10 +2,25 @@
Build system and utilities. Build system and utilities.
## Make a sequence
Un argument pour construire la séquence entière ou deux pour démarrer au milieu, c'est pratique quand le disjoncteur fait un *beu-beu*. Exemples :
```
$ tools/mkloop.sh survol
$ tools/mkloop.sh survol 133
```
## Linkfarming ## Linkfarming
C'est le directeur de la production, le grand script
d'assemblage des séquendes avec générique et intertitres.
## Encoding ## Encoding
## Plot the timing ## Plot the timing

View File

@ -45,7 +45,7 @@ convert "WS/negatif.png" \
-kerning 6 \ -kerning 6 \
-fill $TEXTCOL \ -fill $TEXTCOL \
-strokewidth 2 -stroke $STROKOL \ -strokewidth 2 -stroke $STROKOL \
-annotate +0+490 "$1" \ -annotate +0+530 "$1" \
${INTER} ${INTER}
for foo in $(seq 0 $NBRE) for foo in $(seq 0 $NBRE)
do do
@ -88,7 +88,7 @@ do
-kerning 6 \ -kerning 6 \
-fill $TEXTCOL \ -fill $TEXTCOL \
-strokewidth 3 -stroke $STROKOL \ -strokewidth 3 -stroke $STROKOL \
-annotate +0+${Ypos} "HexaCones" \ -annotate +0+${Ypos} "La famille\nHexaCone" \
${TMP} ${TMP}
# identify ${TMP} # identify ${TMP}
copy_a_file ${TMP} copy_a_file ${TMP}
@ -141,6 +141,7 @@ faire_le_titre
linkfarm hexabenz linkfarm hexabenz
linkfarm hexacone linkfarm hexacone
linkfarm escadrille linkfarm escadrille
linkfarm survol
linkfarm topview linkfarm topview
linkfarm passage linkfarm passage
linkfarm scene linkfarm scene

View File

@ -41,6 +41,7 @@ do
convert ${TMPIMG} \ convert ${TMPIMG} \
-font Courier-Bold \ -font Courier-Bold \
-pointsize 14 \ -pointsize 14 \
-kerning 3 \
-fill ${TEXTCOL} \ -fill ${TEXTCOL} \
-gravity north \ -gravity north \
-annotate +12+5 "$txt" \ -annotate +12+5 "$txt" \

View File

@ -27,20 +27,24 @@ BEGIN { \
count[foo] = 0; \ count[foo] = 0; \
} \ } \
} \ } \
\
# for every line \
{ \ { \
accu[$2] += $3; \ accu[$2] += $3; \
count[$2]++; \ count[$2]++; \
if (mini[$2] > $3) mini[$2] = $3; \ if (mini[$2] > $3) mini[$2] = $3; \
if (maxi[$2] < $3) maxi[$2] = $3; \ if (maxi[$2] < $3) maxi[$2] = $3;
last[$2] = $3 \
} \ } \
\ \
END { \ END { \
for (foo=0; foo<nbframes; foo++) { \ for (foo=0; foo<nbframes; foo++) { \
if (count[foo] > 0) { \ if (count[foo] > 0) { \
mean = accu[foo] / count[foo]; \ mean = accu[foo] / count[foo]; \
printf "%4d %4f %4d %4d\n", foo, mean, \ printf "%4d %4f %4d %4d %4d\n",
mini[foo], maxi[foo]; \ foo, mean,
mini[foo], maxi[foo],
last[foo];
} \ } \
} \ } \
} \ } \
@ -57,9 +61,14 @@ gnuplot << __EOC__
set title "Séquence '${sequence}'" set title "Séquence '${sequence}'"
set xlabel "numéro de la trame" set xlabel "numéro de la trame"
set ylabel "temps en secondes" set ylabel "temps en secondes"
plot "/dev/shm/plot-timing.tmp" u 1:4 w l lc "#ff0000" t "maximum", \ plot "/dev/shm/plot-timing.tmp" u 1:4 w l \
"/dev/shm/plot-timing.tmp" u 1:3 w l lc "#0000ff" t "minimum", \ lc "#ff0000" t "maximum", \
"/dev/shm/plot-timing.tmp" u 1:2 w l lc "#000000" t "moyenne", "/dev/shm/plot-timing.tmp" u 1:3 w l \
lc "#0000ff" t "minimum", \
"/dev/shm/plot-timing.tmp" u 1:2 w l \
lc "#00ff00" t "moyenne", \
"/dev/shm/plot-timing.tmp" u 1:5 w l \
lc "#000000" t "last"
__EOC__ __EOC__
convert -negate -level -33% $IMAGE WS/negatif.png convert -negate -level -33% $IMAGE WS/negatif.png