6.2.4.3        Azioni di Ritorno dei Comandi di Shell


Pre_Scene_Return=s Imposta i comandi che POV-Ray esegue in caso di errore durante la fase antecedente alla scena
Pre_Frame_Return=s Imposta i comandi che POV-Ray esegue in caso di errore durante la fase antecedente ad un fotogramma
Post_Scene_Return=s Imposta i comandi che POV-Ray esegue in caso di errore durante la fase seguente alla scena
Post_Frame_Return=s Imposta i comandi che POV-Ray esegue in caso di errore durante la fase seguente ad un fotogramma
User_Abort_Return=s Imposta i comandi che POV-Ray esegue in caso di interruzione della scena da parte di colui che utilizza il programma
Fatal_Error_Return=s Imposta i comandi che POV-Ray esegue in caso di errore fatale


Per questi comandi non esistono i corrispondenti parametri. Non possono quindi essere usati nella linea di comando, ma solamente impostati nei file .ini.
Molti sistemi operativi specificano in caso di errore un codice che meglio definisca il tipo di errore in cui si è incorsi. Quando POV-Ray esegue un comando di una shell può far uso di questi codici e regolarsi di conseguenza a seconda che il codice sia zero o no. Anche POV-Ray utilizza questi codici e considera un codice di errore di zero come operazione eseguita con successo, 1 per un errore fatale e 2 per l'interruzione causata dall'utente.
Queste azioni sono impostate scrivendo una sola lettera nell'opzione relativa (una di quelle elencate qui sopra). Le azioni possibili sono :

I ignorare il codice
S evitare un passo
A evitare tutti i passi
Q chiudere POV-Ray immediatamente
U l'utente ha interrotto il programma
F si è creato un errore fatale in POV-Ray


Per esempio se l'impostazione Pre_Frame_Command richiama un programma esterno che genera gli height-field e questa utility fallisce, allora si avrà un codice diverso da zero. E' possibile che a questo punto si desideri comunque interrompere il processo. L'opzione Pre_Frame_Return=F permetterà a POV-Ray di interrompere l'esecuzione dell'operazione nel caso in cui l'esecuzione di Pre_Frame_Command dia luogo ad un codice diverso da zero.
Qualche volta si può gioire per un codice diverso da zero. Supponendo ad esempio che si voglia vedere se un determinato fotogramma sia già stato renderizzato, allora si può usare la lettera
S per evitare questo fotogramma nel caso sia già stato renderizzato. Molti programmi di utilità riportano errori se non si è riusciti a trovare un determinato file. Per esempio il comando

pkzip -V myscene mysce012.tga

richiama pkzip per vedere l'archivio myscene.zip per il file mysce012.tga. Se il file non è nell'archivio pkzip darà un codice diverso da zero.
Altre volte è possibile voler interrompere il ciclo se il file è stato trovato. Quindi sarà necessario invertire l'azione in modo che eviti di continuare se il codice è zero e continui se non è zero. Per compiere questa inversione è necessario premettere alla lettera il segno "-" (anche "!" determina la stessa azione dal momento che in molti programmi è proprio questo il segno di negazione).

Pre_Frame_Return=S POV-Ray si fermerà se il codice segnala un errore (non-zero) e procederà normalmente se non ci sono errori (zero).
Pre_Frame_Return=-S POV-Ray si fermerà se il codice non segnala errori (zero) e procederà normalmente se ci sono errori (non-zero).


La lettera assegnata di default a tutte le opzioni è I, che significa che qualunque errore si sia verificato durante l'utilizzo di un programma di utilità questo verrà ignorato. POV-Ray continuerà semplicemente a fare ciò che stava facendo prima dell'utilizzo di quel programma, le altre azioni dipenderanno dal contesto. E' anche possibile che si desideri riferirsi al loop dell'animazione nella sezione precedente. L'azione per ogni shell è la seguente.

Al ritorno di
User_Abort_Command se c'è un'azione che è stata specificata...

F        trasforma l'interruzione dell'utente in un errore fatale.
Esegue il comando
Fatal_Error_Command, se c'è.
Esce da POV-Ray con codice 1.

S, A, Q, o U        procede con l'interruzione. Esce da POV-Ray con codice 2.

Di ritorno dal
Fatal_Error_Command procede comunque con l'errore fatale. Esce da POV-Ray con codice 1.

Di ritorno dal
Pre_Scene_Command, Pre_Frame_Command, Post_Frame_Command o Post_Scene_Commands se c'è un'azione che è stata specificata...

F        genera un errore fatale.
Esegue il comando
Fatal_Error_Command, se c'è.
Esce da POV-Ray con codice 1.

U        crea un'interruzione dell'utente.
Esegue il comando
User_Abort_Command, se c'è.
Esce da POV-Ray con un codice 2.

Q        chiude POV-Ray immediatamente.
Si comporta come se POV-Ray non fosse mai stato eseguito.
Non esegue i successivi comandi di shell (nemmeno
Post_Scene_Command) ed esce da POV-Ray con errore di codice 0.

Di ritorno dal comando
Pre_Scene_Command se è stata specificata un'azione allora...

S        evita di renderizzare tutti i fotogrammi.
Si comporta come se tutti i fotogrammi fossero renderizzati normalmente.
Non esegue
Pre_Frame_Command o Post_Frame_Commands.
Eseguirà il comando
Post_Scene_Command, se c'è.
Esce da POV-Ray con codice 0.
Nelle precedenti tabelle significava tralasciare il passo #4.

A        tralascia tutta la scena. E' identico a Q (quit).
Nelle precedenti tabelle significava evitare tutti i passi fino al #6.

Di ritorno dal comando
Pre_Frame_Command se è stata specificata un'azione allora...

S        tralascia solo questo fotogramma.
Facendo così questo fotogramma non verrà creato.
Non esegue il comando
Post_Frame_Command.
Procede con il fotogramma successivo.
Nelle precedenti tabelle significa saltare il passo #4b e #4c ma tornare indietro come necessario per l'animazione al passo #4d.

A        non renderizza questo fotogramma e tutti gli altri.
In questo modo la scena viene completata normalmente.
Non viene eseguito nessun comando impostato con
Post_Frame_Commands.
Viene eseguito il
Post_Scene_Command, se c'è.
Si esce da POV-Ray con un codice di errore 0.
Nelle precedenti tabelle questo significa evitare il resto del passo #4 e procedere al passo #5.

Di ritorno dal comando
Post_Frame_Command se è stata specificata un'azione allora...

S        tralascia tutti i fotogrammi seguenti. Facendo così l'animazione verrà creata normalmente.
Esegue il comando
Post_Scene_Command.
Esce da POV-Ray con codice 0.
Nella tabella precedente questo significa tralasciare dal passo #4 e procedere al passo 5.

A        lo stesso che S.

Di ritorno dal comando
Post_Scene_Command se c'è un'azione impostata allora..

S o A        lo stesso di I.