vers l'index général de l'aide - vers l'index des matériaux - vers l'index des motifs

motif spécial : density_file

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

compatibilité

POV-Ray 3.1+sup

syntaxe

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.

exemple

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.

le format de fichier df3

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 :