#povray
#syntax_highlighting #xml #gtksourceview #povray
[fr] Depuis le passage à la version 2.0 des fichiers de définition d'un langage, la coloration syntaxique ne se fait plus avec les fichiers en version 1.0. Il faut tout réécrire -- voire ajouter un fichier pour le type mime. La conversion d'une V1 vers la V2 ne se fait pas en 2 coups de cuillère à pot, justement et ce n'est pas une mince affaire... Donc, je n'ai plus de coloration syntaxique pour POV-Ray, ce qui est fort dommage, car ça m'aidait bien à m'y retrouver.
Language Definition v2.0 Reference
Language Definition v2.0 Tutorial -- C language
J'essaie de mettre mon nez là-dedans depuis quelques jours, mais je me perds dans les définitions... D'autant que je ne maitrise pas déjà les expressions de type regex
-- ce qui est nécessaire, pourtant. C'est vraiment pas simple...
#fr #en #tags #aide-demandée #help-wanted #diaspora #diasp #diasporg
Problem: when I go to #sundaypov page, I only see my own 2 posts if I'm connected to my account on diasp.org, and I see all 4 posts if I'm not connected to my account. Other tags -- eg #povray -- seems to work fine. This problem occurs on PC Debian running Firefox, or running Epiphany [aka Web]. It's also true on Android cellphone running Firefox or running FDroid/Dandelion.
The other #sundaypov user @tTh using another pod, can see everything fine.
Question: I'd like someone having a diasp.org account doing this test:
- create a post, containing "#sundaypov test"
- go to #sundaypov tag page (just click on tag to do so), and check if only your post is visible, or more. Please tell exactly what.
Other pods user is welcome to check this test, too.
At the moment, there exists only 4 posts: 2 from me, 2 from @tTh.
Thanks for helping. ;)
#cgi #povray
[fr] Chose promise, chose due.
...
==== [Parsing...] ==========================================================
datetime seconds = 1664614401
Environment map: "povray/Images/Maps/Environment/nature/glass_passage_4k.exr"
Radiosity_Final in use
----------------------------------------------------------------------------
Parser Statistics
----------------------------------------------------------------------------
Finite Objects: 122
Infinite Objects: 0
Light Sources: 2
Total: 124
----------------------------------------------------------------------------
Parser Time
Parse Time: 0 hours 1 minutes 17 seconds (77.196 seconds)
using 1 thread(s) with 48.081 CPU-seconds total
Bounding Time: 0 hours 0 minutes 0 seconds (0.001 seconds)
using 1 thread(s) with 0.000 CPU-seconds total
----------------------------------------------------------------------------
Render Options
Quality: 9
Bounding boxes.......On Bounding threshold: 3
Antialiasing.........On (Method 2, Threshold 0.012, Depth 3, Jitter 1.00, Gamma 2.50)
==== [Rendering...] ========================================================
----------------------------------------------------------------------------
Render Statistics
Image Resolution 1920 x 1080
----------------------------------------------------------------------------
Pixels: 2214937 Samples: 26749784 Smpls/Pxl: 12.08
Rays: 3340116737 Saved: 294197720 Max Level: 5/5
----------------------------------------------------------------------------
Ray->Shape Intersection Tests Succeeded Percentage
----------------------------------------------------------------------------
Blob 26438658124 10106821219 38.23
Blob Component 311082761349 81567902646 26.22
Blob Bound 3629569968762 1143450081922 31.50
Box 57040815425 5625816864 9.86
Cone/Cylinder 159201252025 35930185139 22.57
CSG Intersection 94529078086 5762937110 6.10
CSG Merge 35526930485 883451592 2.49
Isosurface 9748725220 2588756394 26.55
Isosurface Container 13981715447 9748748487 69.72
Isosurface Cache 339834072 55907966 16.45
Plane 34747526078 15454333049 44.48
Sphere 32780040255 11868542227 36.21
Torus 779404407 7706024 0.99
Torus Bound 779404407 8728409 1.12
True Type Font 193961 28005 14.44
Bounding Box 357570940119 179114851597 50.09
----------------------------------------------------------------------------
Isosurface roots: 9721850965
Function VM calls: 299090261476
----------------------------------------------------------------------------
Roots tested: 14495201962 eliminated: 2745152602
Shadow Ray Tests: 27188375636 Succeeded: 12303693126
Shadow Cache Hits: 3311733325
Reflected Rays: 1322488035 Total Internal: 205017101
Refracted Rays: 1631900360
Transmitted Rays: 14782021
----------------------------------------------------------------------------
Radiosity samples calculated: 427477 (0.34 %)
discarded due to low quality: 14015
retained for re-use: 413462
Radiosity samples reused: 125272118
Radiosity sample rays shot: 341981600
Radiosity octree nodes: 65102
Radiosity octree samples/node: 6.35
Radiosity blocks examined: 149468616451
Radiosity blocks passed test 0: 149468616451 (100.00 %)
Radiosity blocks passed test 1: 51645328591 (34.55 %)
Radiosity blocks passed test 2: 33436489295 (22.37 %)
Radiosity blocks passed test 3: 3244799462 (2.17 %)
Radiosity blocks passed test 4: 2189966892 (1.47 %)
Radiosity blocks passed test 5: 2079234507 (1.39 %)
Radiosity blocks rejected: 147389381944 (98.61 %)
----------------------------------------------------------------------------
Radiosity Depth 0 calculated: 427477 (0.34 %)
Radiosity Depth 0 reused: 125272118
Radiosity Depth 0 rays shot: 341981600
----------------------------------------------------------------------------
Radiosity (final) calculated: 350330 (0.28 %)
Radiosity (final) reused: 125164141
Radiosity (final) rays shot: 280264000
----------------------------------------------------------------------------
Pass Depth 0 Total
----------------------------------------------------------------------------
1 82 82
2 377 377
3 2590 2590
4 9815 9815
5+ 64283 64283
Final 350330 350330
----------------------------------------------------------------------------
Total 427477 427477
Weight 0.115
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Render Time:
Photon Time: No photons
Radiosity Time: 2 hours 12 minutes 24 seconds (7944.230 seconds)
using 8 thread(s) with 53926.107 CPU-seconds total
Trace Time: 186 hours 17 minutes 42 seconds (670662.832 seconds)
#cgi #povray
ping @tTh, @Nunuche Follette, @inco gnito, ... :)
Bois et Résine Epoxyde dans povray
Après avoir un peu fait joujou avec mon dé, à lui essayer tout plein de textures diverses et variées... j'ai repensé à ces vidéos, postées par @Nunuche Follette, sur des objets en bois flotté noyé dans de la résine époxyde.
J'ai donc tout naturellement voulu faire un dé de la sorte.
Créer un objet qui sera inséré, comme un bout de bois, à l'aide d'une isosurface {}
et une fonction f_granite
comme générateur de forme, ce n'est pas le plus compliqué :
```povray
/*
** Gros dé en bois et résine époxyde
*/
#version 3.7;
#include "colors.inc"
#include "consts.inc"
#include "functions.inc"
#include "transforms.inc"
#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php
#declare EPSILON = 1e-4; // toute petite valeur, pour les marges
#ifndef (ASPECT_RATIO)
#declare ASPECT_RATIO = image_width / image_height;
#end
#declare AMBIENT_LIGHT = rgb 1/3;
#default {
finish { ambient AMBIENT_LIGHT }
}
global_settings {
charset utf8
assumed_gamma srgb
ambient_light AMBIENT_LIGHT
}
#declare SEED = seed(639663322);
#macro V3Rand()
< rand(SEED), rand(SEED), rand(SEED) >
#end
#macro V3SRand()
(V3Rand() * 2 - 1)
#end
#declare Size = 5; // taille du dé : 5 cms
#declare Size2 = Size / 2;
#declare Size2E = Size2 + EPSILON;
#local f1 = IC_Transform(f_granite,
transform {
scale Size * pi
translate V3SRand() * 100
rotate V3SRand() * 180
}
)
isosurface {
function { f1(x,y,z) * 0.4 - 0.075 }
contained_by { box { -Size2E, Size2E } }
accuracy 0.001
evaluate 1.1*0.6, sqrt(1/0.6), 0.7
pigment { White }
translate y * Size2E
}
// ground
plane { y, 0 pigment { Gray } }
camera {
location -z * 10
look_at o
direction z * 10
sky y
right x * ASPECT_RATIO
up y
translate -z * 100
rotate x * 30
rotate y * -60
translate y * Size2
}
// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }
#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
Pos
color White * 1/3 * Int
fade_distance 200
fade_power 1.5
}
#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
Pos
color White * 2/3 * Int
fade_distance 100
fade_power 1.5
}
```
Délimité par un cube.
Sauf que mon conteneur, ce n'est pas juste un simple cube (contained_by { box { -Size2E, Size2E } }
), mais un dé, fait de l'intersection d'une sphère et d'un cube à laquelle on a enlevé des sphères écrasées pour y numéroter les faces de 1 à 6.
On a alors simplement l'idée d'utiliser le dé, fait en CSG classique, que l'on va intersecter (je ne sais pas si ça se dit) avec le morceau de bois précédemment créé en isosurface :
/*
** Gros dé en bois et résine époxyde
*/
#version 3.7;
#include "colors.inc"
#include "consts.inc"
#include "functions.inc"
#include "transforms.inc"
#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php
#include "ftz_dice.inc"
#declare EPSILON = 1e-4; // toute petite valeur, pour les marges
#ifndef (ASPECT_RATIO)
#declare ASPECT_RATIO = image_width / image_height;
#end
#declare AMBIENT_LIGHT = rgb 1/3;
#default {
finish { ambient AMBIENT_LIGHT }
}
global_settings {
charset utf8
assumed_gamma srgb
ambient_light AMBIENT_LIGHT
}
#declare SEED = seed(639663322);
#macro V3Rand()
< rand(SEED), rand(SEED), rand(SEED) >
#end
#macro V3SRand()
(V3Rand() * 2 - 1)
#end
#declare Size = 5; // taille du dé : 5 cms
#declare Size2 = Size / 2;
#declare Size2E = Size2 + EPSILON;
#local f1 = IC_Transform(f_granite,
transform {
scale Size * pi
translate V3SRand() * 100
rotate V3SRand() * 180
}
)
intersection {
isosurface {
function { f1(x,y,z) * 0.4 - 0.075 }
contained_by { box { -Size2E, Size2E } }
accuracy 0.001
evaluate 1.1*0.6, sqrt(1/0.6), 0.7
}
FTZ_Dice(
Size,
material {},
material {}
)
pigment { White }
translate y * Size2E
}
// ground
plane { y, 0 pigment { Gray } }
camera {
location -z * 10
look_at o
direction z * 10
sky y
right x * ASPECT_RATIO
up y
translate -z * 100
rotate x * 30
rotate y * -60
translate y * Size2
}
// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }
#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
Pos
color White * 1/3 * Int
fade_distance 200
fade_power 1.5
}
#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
Pos
color White * 2/3 * Int
fade_distance 100
fade_power 1.5
}
Voilà, c'est déjà mieux. Mon morceau de bois ne dépassera pas du dé conteneur.
Reste plus qu'à utiliser une jolie texture bois pour cette partie... disons T_Wood13 (de woods.inc
fourni avec povray) :
/*
** Gros dé en bois et résine époxyde
*/
#version 3.7;
#include "colors.inc"
#include "consts.inc"
#include "functions.inc"
#include "transforms.inc"
#include "woods.inc"
#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php
#include "ftz_dice.inc"
#declare EPSILON = 1e-4; // toute petite valeur, pour les marges
#ifndef (ASPECT_RATIO)
#declare ASPECT_RATIO = image_width / image_height;
#end
#declare AMBIENT_LIGHT = rgb 1/3;
#default {
finish { ambient AMBIENT_LIGHT }
}
global_settings {
charset utf8
assumed_gamma srgb
ambient_light AMBIENT_LIGHT
}
#declare SEED = seed(639663322); // changez ce nombre, et toute la chaîne de nombres aléatoires appelés sera différente
#macro V3Rand()
< rand(SEED), rand(SEED), rand(SEED) >
#end
#macro V3SRand()
(V3Rand() * 2 - 1)
#end
#declare Size = 5; // taille du dé : 5 cms
#declare Size2 = Size / 2;
#declare Size2E = Size2 + EPSILON;
#local f1 = IC_Transform(f_granite,
transform {
scale Size * pi
translate V3SRand() * 100
rotate V3SRand() * 180
}
)
intersection {
isosurface {
function { f1(x,y,z) * 0.4 - 0.075 }
contained_by { box { -Size2E, Size2E } }
accuracy 0.001
evaluate 1.1*0.6, sqrt(1/0.6), 0.7
}
FTZ_Dice(
Size,
material {},
material {}
)
texture {
T_Wood13
translate V3SRand() * 1e4
rotate V3SRand() * 180
}
translate y * Size2E
}
// ground
plane { y, 0 pigment { Gray } }
camera {
location -z * 10
look_at o
direction z * 10
sky y
right x * ASPECT_RATIO
up y
translate -z * 100
rotate x * 30
rotate y * -60
translate y * Size2
}
// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }
#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
Pos
color White * 1/3 * Int
fade_distance 200
fade_power 1.5
}
#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
Pos
color White * 2/3 * Int
fade_distance 100
fade_power 1.5
}
Il ne reste plus qu'à ajouter le dé en résine époxyde :
/*
** Gros dé en bois et résine époxyde
*/
#version 3.7;
#include "colors.inc"
#include "consts.inc"
#include "finish.inc"
#include "functions.inc"
#include "transforms.inc"
#include "woods.inc"
#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php
#include "ftz_dice.inc"
#declare EPSILON = 1e-4; // toute petite valeur, pour les marges
#ifndef (ASPECT_RATIO)
#declare ASPECT_RATIO = image_width / image_height;
#end
#declare AMBIENT_LIGHT = rgb 1/3;
#default {
finish { ambient AMBIENT_LIGHT }
}
global_settings {
charset utf8
assumed_gamma srgb
ambient_light AMBIENT_LIGHT
}
#declare SEED = seed(639663322);
#macro V3Rand()
< rand(SEED), rand(SEED), rand(SEED) >
#end
#macro V3SRand()
(V3Rand() * 2 - 1)
#end
#declare Size = 5; // taille du dé : 5 cms
#declare Size2 = Size / 2;
#declare Size2E = Size2 + EPSILON;
#local f1 = IC_Transform(f_granite,
transform {
scale Size * pi
translate V3SRand() * 100
rotate V3SRand() * 180
}
)
#local o_Wood = intersection {
isosurface {
function { f1(x,y,z) * 0.4 - 0.075 }
contained_by { box { -Size2E, Size2E } }
accuracy 0.001
evaluate 1.1*0.6, sqrt(1/0.6), 0.7
}
FTZ_Dice(
Size,
material {},
material {}
)
texture {
T_Wood13
translate V3SRand() * 1e4
rotate V3SRand() * 180
}
}
#local o_Dice = FTZ_Dice(Size,
// résine époxyde légèrement bleue
material {
#local C1 = < 186, 229, 255 > / 255;
#local C2 = < 117, 157, 181 > / 255;
#local T = 0.995; // transparence totale (filtrage compris)
#local F = 0.2; // filtrage seul
texture {
pigment { color C1 filter F transmit (T - F) }
finish {
diffuse 0.15
specular 0.8
roughness 0.001
reflection {
C1/17
fresnel on
}
}
}
interior {
ior 1.5
//dispersion 1.0125 // très long à rendre, avec de la dispersion
fade_color C2
fade_distance Size * 0.85
fade_power 1001
}
},
// matériau pour les nombres
material {
texture {
pigment { color White * 0.995 }
finish { Dull }
}
}
);
union {
object { o_Wood }
object { o_Dice }
translate y * Size2E
}
// ground
plane { y, 0 pigment { Gray } }
camera {
location -z * 10
look_at o
direction z * 10
sky y
right x * ASPECT_RATIO
up y
translate -z * 100
rotate x * 30
rotate y * -60
translate y * Size2
}
// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }
#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
Pos
color White * 1/3 * Int
fade_distance 200
fade_power 1.5
}
#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
Pos
color White * 2/3 * Int
fade_distance 100
fade_power 1.5
}
Et voilà.
#cgi #povray
[en] An include file to build a nice dice, using two material {}
of your choice. One for the plain dice, another one for the numbers. Usage :
[fr] Un fichier include pour modéliser un joli dé, utilisant deux material {}
de votre choix. Un pour le dé lui-même, un autre pour les nombres. Utilisation :
FTZ_Dice(Size, BaseMaterial, DotsMaterial)
#cgi #povray #gimp
[fr] Modélisation et rendu : povray 3.7. Montage final : gimp.
J'ai volontairement fait de très courtes vis et mis un éclairage ponctuel simple, pour accélérer le temps de rendu.
La colonne de gauche représente des pas de vis à droite (sens par défaut). Les deux autres colonnes représentent des pas de vis à gauche. Au centre, marquage classique. À droite, marquage alternatif.
#fr #aide-demandée #gimp #scripting
Alors, voilà : j'ai plus de 300 images à modifier avec GIMP couleurs → auto → balance des blancs
.
Et, bien évidemment, pas de bol ( - "cimetière indien" es-tu là ? - oui :P - grrr :S ), ce filtre n'est pas disponible dans filtres → filtrer tous les calques
, ce qui m'aurait permis, sinon, de charger ces images ensemble sous forme de calques, filtrer tous ces calques en une fois et sortir le résultat sous forme de GIF animé. Le tout en 1 passe.
Je dois donc créer un script bash qui ferait le boulot pour chaque image : charger l'image crée par #povray (.exr), la filtrer avec couleurs → auto → balance des blancs
, puis sauver l'image modifiée, sous le même nom mais vers un autre dossier pour ne pas écraser l'image source.
Ou, mieux, charger l'image (comme nouveau calque), la filtrer, puis passer à l'image suivante (comme nouveau calque par dessus), etc. Et enfin, quitte à finaliser ça à la main, sauver sous forme de GIF animé.
Je ne trouve pas de documentation détaillée pour savoir comment appeler ce filtre dans une commande (script-fu ? en notation polonaise inversée)... appel qui serait passé à GIMP via un script bash.
#povray #cgi
[fr] J'ai encore ajouté 2 types de têtes de vis : fendue fraisée plate et fendue fraisée bombée.
Une petite image qui va bien. Avec un mapping d'environnement, ça a tout de suite un peu plus de réalimse. ;)
Ça se devine pas sur l'image, mais les pas de vis sont de vrais pas de vis, réalisés avec la fonction f_helix1()
.
#povray #cgi
[fr] Petit ajout, une nouvelle tête : fraisée 6 pans creux.
Dans ce GIF, j'ai ajouté les conteneurs (clip, bound) en cyan, ainsi que les axes de référence en bleu.
On peut voir que la tête fraisée 6 pans creux est en dessous du plan de référence, du fait que cette tête est entièrement noyée lors de l'assemblage. Ce qui n'est pas du tout le cas des 5 autres types de tête de vis.