4.10.6.2        Variabili Dipendenti da Clock ed Animazioni a più Fasi



Cosa facciamo se vogliamo che la nostra palla rotoli da sinistra a destra per la prima metà dell'animazione, poi cambi direzione di 135 gradi e rotoli da destra a sinistra e indietro per la seconda metà dell'animazione ? Avremmo bisogno di utilizzare delle istruzioni condizionali che esaminino il valore di clock per determinare se è giunto a metà animazione ed in caso positivo comincino a renderizzare una nuova sequenza di animazione, sempre dipendente da clock. Ma il nostro scopo, come sopra, è di lavorare con una variabile il cui valore vada da 0 ad 1 (normalizzata) poiché questo rende matematicamente molto più semplice gestire l'animazione di eventi multipli.
Quindi, mantenendo le stesse impostazioni per macchina fotografica, luci e piano, facciamo variare
clock da 0 a 2.
Ora, sostituiamo la sfera dell'esempio precedente con...

#if ( clock <= 1 )
sphere { <0, 0, 0> , 1
pigment {
gradient x
color_map {
[0.0 Blue ]
[0.5 Blue ]
[0.5 White ]
[1.0 White ]
}
scale .25
}
rotate <0, 0, -clock*360>
translate <-pi, 1, 0>
translate <2*pi*clock, 0, 0>
}
#else
// (se clock è > 1, siamo nella seconda fase)
// ma vogliamo che vari ancora tra 0 ed 1

#declare ElseClock = clock - 1

sphere { <0, 0, 0> , 1
pigment {
gradient x
color_map {
[0.0 Blue ]
[0.5 Blue ]
[0.5 White ]
[1.0 White ]
}
scale .25
}
rotate <0, 0, ElseClock*360>
translate <-2*pi*ElseClock, 0, 0>
rotate <0, 45, 0>
translate <pi, 1, 0>
}
#else
#end

Fig. 194-Palla schizofrenica

Se hai notato che in questo modo la palla farà un'irreale curva ad angolo, quando cambia direzione, complimenti ! Sei indubbiamente un animatore nato. Comunque, per semplificare l'esempio ignoreremo questo aspetto. Sarà abbastanza semplice aggiustarlo una volta esaminato il funzionamento delle istruzioni precedenti.

Tutto ciò che abbiamo fatto è stato assumere che
clock era compreso tra 0 e 2, mentre vogliamo lavorare con un valore normalizzato. Quindi, quando clock supera 1, POV-Ray assume che è iniziata la seconda parte dell'animazione e noi dichiariamo un nuova variabile, detta Elseclock, che rendiamo dipendente da clock, in modo che mentre clock varia tra 1 e 2, Elseclock varia tra 0 ed 1. Quindi, anche se c'è un solo clock, possiamo avere quante variabili vogliamo (e possiamo permetterci in termini di memoria), così anche in scene molto complesse, la sola variabile clock può essere il direttore d'orchestra di tutti gli altri movimenti.