vers l'index général de l'aide - vers l'index des matériaux - vers l'index des motifs
Ce motif, créé à l'origine pour les media, utilise un fichier de données tridimensionnelles qui donne une "carte de densités" dans l'espace, un peu comme ce que donnent les scanners d'imagerie médicale.
à gauche : cerveau normal - à droite : cerveau de POViste
POV-Ray 3.1+sup
pigment { // ou density, etc... density_file df3 "nom_fichier.df3" (interpolate Type) //entier (... modificateurs de motifs ...) } }
Juste après le mot clé density_file, on spécifie le type de fichier (actuellement, seul le df3 est implémenté), puis le nom de ce fichier. Le mot clé optionnel interpolate, suivi de la valeur 1 (la seule implémentée) enclenchera l'utilisation d'une interpolation trilinéaire, pour adoucir les transitions entre les voxels*.
L'ensemble des données contenues dans le fichier seront représentées dans un espace allant de <0,0,0> à <1,1,1>, peu importe la résolution du fichier.
* : en 2D, pixels = PICTure ELements; en 3D, voxels = VOlume ELements.
sphere {0,10 hollow pigment {Clear} interior { media { emission .25 intervals 10 density { density_file df3 "spiral.df3" interpolate 1 scale 10 } } } }
Le fichier "spiral.df3" vient en standard avec POV-Ray.
Il s'agit d'une sorte de format d'image bitmap en niveaux de gris, mais en 3D ! Chaque voxel a donc une coordonnée (x,y,z), et une valeur comprise entre 0 et 255 (qui sera réinterprétée de 0 à 1 par POV-Ray).
Le fichier binaire commencera par 6 octets (3 x 16 bits) représentant le nombre de voxels sur chacun des trois axes. Ensuite, un certain nombre (resolution-X * resolution-Y * resolution-Z) d'octets donneront chacun la densité d'un voxel, comprise entre 00 et FF (0 et 255), en balayant le volume dans l'ordre X, Y, Z.
Un petit exemple sera le bienvenu : Un ensemble de 27 voxels compris dans un 'cube' de 3 voxels de côté. Les voxels 1 à 9 ont une densité maximale (FF, 255, 1), les voxels 10 à 18 ont une densité nulle (0), et les voxels 19 à 27 ont une densité moyenne (AA, 170, 0.66), sauf le 23 qui a une densité nulle.
Le fichier commence donc en donnant la résolution sur les trois axes :
00 03 00 03 00 03
Et se poursuit par les valeurs des voxels, en balayant X, puis Y, puis Z :
FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 AA AA AA AA 00 AA AA AA AA
Et voici le fichier résultant, vu (et créé !) dans un éditeur hexadécimal :