Materiale per il progetto Longitudine

classe 5D Liceo scientifico Torricelli, Bolzano

a.s. 2012/2013 - prof. Mauro Coghi


Introduzione

Incontro 1

Incontro 2

Incontro 3

Incontro 4

Incontro 5

Qualche consiglio

Prodotti


Introduzione

Usiamo il software povray.

Il materiale (appunti e file di esempio) si trova nella cartella condivisa home -> classi -> comune -> povray. Gli appunti sono disponibili anche a questi link: prima parte; seconda parte.

L'editor di testi che usiamo è Kate.

Le istruzioni che abbiamo usato:

  • per leggere i file *.pov usiamo Kate, perché evidenzia in automatico le parole chiave (per aprire i file: clic con il destro -> apri con -> Kate)
  • aprire un Terminale: Ctrl+Alt+t oppure cliccare sul tasto con il disegno di uno schermo nella barra a sinistra
  • Nel terminale: entrare in una cartella:
    cd NOMECARTELLA
    oppure anche
    cd NOMECARTELLA/NOMESOTTOCARTELLA
    (ad esempio cd Scrivania/povray invece di scrivere cd Scrivania e poi cd povray)
    se vi è comodo, utilizzate il tasto TAB per completare automaticamente i nomi.
    Per tornare a una cartella superiore
    cd ..
  • Nel terminale: compilare un file di povray (cioè generare l'immagine partendo dal codice scritto nel file):
    povray NOMEFILE.pov
  • Nel terminale: ripetere l'ultimo comando dato: freccia in su
  • Nel terminale: generare un filmato a partire da files che si chiamano files00.png, files01.png, ... filesXX.png, (comandi necessari):
    mencoder mf://files*.png -ovc lavc -o nomevideo.avi
    * significa “qualsiasi stringa (di qualsiasi lunghezza)”, ? significa “qualsiasi carattere (stringa di lunghezza 1)”, ?? significa “qualsiasi stringa di lunghezza 2”, ecc.
  • opzioni ulteriori:
    mencoder mf://files*.png -mf w=800:h=600:fps=25:type=png -vf scale -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o nomevideo.avi
    • mencoder è il programma che genera un video a partire da immagini
    • mf://files*.png i files delle immagini (presi automaticamente in ordine alfanumerico): al posto di “files” scrivete il nome dei vostri files. Ad esempio, se si chiamano terra00.png, terra01.png ecc. scrivete mf://terra*.png
    • -mf w=800:h=600:fps=25:type=png alcune opzioni: larghezza e altezza del video in pixel, frames al secondo, tipo di file in input. Cambiate solo il valore dopo fps (con valore basso film va a scatti, con valore più alto di 20 è abbastanza liscio)
    • -vf scale opzione per le dimensioni
    • -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell tipo di codifica del video
    • -o nomevideo.avi nome del file di output
  • manuali difficili da leggere: manuale in inglese -- help da terminale
  • Nel terminale: vedere un video:
    mplayer nomevideo.avi

Primo incontro

Nel primo incontro, il 5 ottobre 2012, abbiamo preso confidenza con povray e con il modo di lavorare. Abbiamo compilato e modificato qualche immagine.


Secondo incontro

Nel secondo incontro, il 10 ottobre 2012, abbiamo disegnato un orologio. Abbiamo poi imparato le definizioni e i cicli while.


Terzo incontro

Nel terzo incontro, il 19 ottobre 2012, abbiamo modificato il file orologio.pov e visto il file orologio.ini. Ecco un video (10 frames al secondo) e un altro video realistico (1 frame al secondo).


Quarto incontro

Nel quarto incontro, il 9 novembre 2012, abbiamo lavorato per gruppi: ognuno ha iniziato a produrre un‘animazione: Saturno con gli anelli, la Terra con meridiani e paralleli, i passaggi di Venere davanti al sole.

Come mettere la fotografia della Terra su una sfera: copiate questo file nella cartella e usate questo codice:

sphere { <0,0,0>, 1 // dati della sfera (usate i vostri, ma mettetela nell’origine e poi traslatela)
  texture {
    pigment {
      image_map {
        gif "terra.gif" // cambiate nome per gli altri pianeti
        map_type 1
      }
    }
  }
}

Altri corpi celesti: mercurio, venere, marte, giove, saturno, urano, nettuno, plutone, luna.
(Immagini prese da questo sito. Altro sito interessante.)

Usate la parola chiave no_shadow (tra le due parentesi esterne, ad esempio sphere { 0,1 texture {...} no_shadow } ) se volete che un oggetto non proietti ombre.
Usate shadowless se volete che una luce non crei le ombre degli oggetti illuminati (ad esempio light_source { <0,10,0> color White shadowless } ).
Si può definire come le superfici si comportano rispetto alla luce: ad esempio

  texture {
    pigment { color rgb <1,0,0> }
    finish {
      ambient 0.2 // tra 0 e 1: illuminazione generale, per tutti i punti della superficie
      diffuse 0.8 // tra 0 e 1: quanto riflettere dei raggi incidenti
    }
  }

specifica una superficie rossa scarsamente illuminata dove non viene colpita direttamente dalla luce e che riflette molta luce nei punti illuminati direttamente; quindi con grande differenza tra zone in ombra e zone esposte alla luce diretta.
Viceversa, se si scambiano i valori (ambient 0.8 diffuse 0.2), la superficie sarà molto chiara e la differenza tra zone di luce e zone di ombra non molto marcata.

Per cambiare la qualità delle immagini generate:
povray -q9 NOMEFILE
La cifra dopo la q indica la qualità: 1 è la peggiore (e più veloce), mentre 9 è la migliore.
Per cambiare le dimensioni delle immagini generate:
povray -w800 NOMEFILE
La cifra dopo la w indica la dimensione orizzontale in pixel: un’ immagine standard ha 800x600 pixel. Si può specificare anche la dimensione verticale con -h600. Si possono anche specificare entrambe, anche cambiando le proporzioni.
Si può anche specificare tutto, ad esempio
povray -q7 -w800 -h600 NOMEFILE


Quinto incontro

Nel quinto incontro, il 13 novembre 2012, abbiamo perfezionato le animazioni iniziate nell’incontro precedente.

Abbiamo usato una sky sphere per mettere uno sfondo al disegno:
sky_sphere {
  texture {
    pigment {
      image_map {
        gif "sfondo.gif" // oppure jpeg "sfondo.jpg"
        map_type 1
      }
    }
  }
}

Abbiamo usato le parole chiave union, intersection, difference.

Abbiamo ripassato come si fanno le animazioni: creando tante immagini (variabile clock e file .ini) e poi da queste creando il video con
mencoder mf://files*.png -mf w=800:h=600:fps=25:type=png -vf scale -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o nomevideo.avi


Qualche consiglio utile

Tenere sempre gli oggetti vicini all’origine, per non perderli di vista.

Scrivere sempre codice con molti commenti, per capirlo velocemente anche dopo qualche giorno.

Se non si vede niente, controllare che ci sia una luce e che gli oggetti non siano fuori dal campo visivo (allontanare la camera dall’origine).

Se un programma non compila, leggere le indicazioni date da povray e il numero della riga: l’errore è in quella riga o nelle precedenti.

Se la compilazione non termina, probabilmente è colpa di un ciclo fatto male: controllarlo! Per terminare la compilazione nel terminale usare CTRL+c.

Noi percepiamo le animazioni come movimenti continui se ci sono circa 24 frames al secondo (fps). Scegliere uno standard (25 o 30 può essere una buona scelta) e mantenerlo. Non usare troppi fps, altrimenti il video sarà un file molto grosso.

Per produrre animazioni, prima di lanciare una compilazione con 10000 frames, fare delle prove con meno immagini per verificare la correttezza. Ricordarsi di cancellare o spostare le immagini vecchie prima di generare quelle nuove, altrimenti si trovano files con un numero diverso di cifre e creando il video i files vecchi e nuovi si mescolano.

Se ci si accorge che si è sbagliato qualcosa, si può bloccare la compilazione chiudendo la finestra con l’anteprima delle immagini generate oppure usare Ctrl+c nel terminale.


Prodotti

Breve filmato che mostra equatore, tropici e meridiani.

Alcune immagini.