vers l'index général de l'aide
Lire et écrire des données dans un simple fichier ASCII, afin de les conserver pour l'image suivante d'une animation, ou pour un rendu ultérieur...
POV-Ray 3.0+sup
Il s'agit d'un fichier ASCII, où une série de valeurs de type décimal, chaîne ou vecteur sont simplement séparées par une virgule.
#fopen Identif "nom_du_fichier" read | write | append
Identif est un nom donné au fichier à ouvrir, comme le nom que l'on donne à un objet. Le nom (le vrai) du fichier à ouvrir est suivi de read, write, ou append, qui spécifient si le fichier est destiné à être lu, écrit, ou à recevoir des données supplémentaires.
#fclose Identif
Ferme le fichier désigné par Identif. Si un fichier n'a pas été fermé dans le script, il le sera automatiquement une fois le script complètement interprété.
#read (Identif,Var1,Var2,Var3...)
Lit séquentiellement (pas à pas) le contenu du fichier désigné par Identif (qui doit donc avoir été préalablement ouvert), et passe les valeurs successives trouvées dans le fichier vers les variables. Ces variables peuvent avoir été déclarées précédemment ou pas (dans ce cas, le type de variable sera automatiquement détecté).
En cas de tentative de lecture du contenu du fichier au delà des dernières données, le fichier est automatiquement fermé, et son identificateur est inhibé. Cela signifie qu'on peut détecter la fin du fichier à l'aide de la fonction booléenne defined (Identif), qui renverra 0 si le fichier a été fermé.
#write (Identif,Var1,Var2,Var3...)
Écrit séquentiellement (pas à pas) les variables spécifiées dans le fichier désigné par Identif. Attention, les virgules de séparation et les guillemets (pour les chaînes) ne sont pas automatiquement générés par #write, et il faudra prendre soin de provoquer leur écriture.
#write (Identif,Var1, "," ,Var2, "," ,Var3, ",")
Si #fopen a été réglé sur write, le fichier sera complètement écrasé par le nouveau contenu, et si append a été sélectionné, le contenu existant est conservé, et se voit augmenté des nouvelles écritures.
#declare r1=seed(0); //ouverture d'un fichier pour écriture (qui n'a pas besoin de préexister) #fopen Data1 "data.txt" write //écriture de 20 vecteurs aléatoires #declare I=0; #while (I < 20) #declare Couleur = <rand(r1),rand(r1),rand(r1)>; #write (Data1,Couleur,",") #declare I=I+1; #end //fermeture du fichier #fclose Data1 //ouverture d'un fichier pour lecture #fopen Data1 "data.txt" read //lecture des 20 vecteurs, utilisés comme couleurs #declare I=0; #while (I < 20) #read (Data1,Coul_01) sphere {<0,0,I>,1 pigment {rgb Coul_01}} #declare I=I+1; #end //fermeture du fichier #fclose Data1 camera {location <0,10,-10> look_at <0,0,5>} light_source {<100,1500,100> rgb <.8,.8,.9>*2 }
rédacteur : Fabien Mosen