|
||||||
ROBOTICA
video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori
Il tempo scorre! il nodo TimeSensor |
Finora abbiamo creato dei
mondi molto semplici. Soprattutto, per quanto spiegato sino a questo punto,
ci si potrebbe chiedere cosa di fatto la seconda specifica abbia aggiunto, a
parte qualche piccolo nodo in più visto in precedenza (collision detection,
background). I mondi che abbiamo costruito sono tutti statici. L’utente naviga
tra di essi come in un ambiente senza vita. Beh... restando così le cose non
aspettatevi che il visitatore del vostro sito ritorni a visitarlo una seconda
volta.
Quello che effettivamente
manca è l’azione. Vogliamo avere un mondo che sia ricolmo di oggetti che si
animano, che reagiscano al nostro passaggio e che possano rendere più interessante
e magari anche imprevedibile la nostra navigazione. Basta aggirarsi in un
mondo di morti! Diamo vita ai nostri oggetti.
Siamo ora convinti che
aggiungere animazione è essenziale per soddisfare gli utenti. Il problema
è come farlo. Finchè si rimane sullo statico basta descrivere la forma geometrica
degli oggetti, le caratteristiche del materiale di cui sono fatti, la loro
posizione e il gioco è fatto. Con concetti di animazione non possiamo fermarci
a questo livello.
Nell’apprendere le tecniche
di animazione in vrml dovremo occuparci degli aspetti più profondi di vrml
e capire molto bene come funziona.
Appena pensiamo all’animazione
dovremmo automaticamente identificare un concetto fondamentale : il tempo.
Dov’è il tempo nei mondi creati sino ad ora? Per tenere conto del passare
del tempo Vrml 2.0 rende disponibile il nodo TimeSensor.
Vediamone brevemente
le specifiche:
Questo nodo è fondamentale
per qualsiasi animazione in un ambiente vrml.
Questa volta non potrò
più tralasciare di spiegare quanto contenuto nelle prime due colonne. Nella
prossima sezione vedremo in dettaglio cosa significano e come trarne vantaggio
in fase di creazione delle animazioni.
Al momento possiamo semplicemente
pensare che introducendo un nodo di questo tipo forniamo al nostro mondo un
orologio che segna il trascorrere del tempo.
Consideriamo il seguente
esempio :
Per la maggior parte
delle volte useremo questi campi. Il campo cycleInterval specifica il numero
di secondi di un ciclo di tempo. Indica dunque il numero di secondi per cui
l’orologio è attivo.
Il secondo campo indica
se l’orologio è attivato oppure meno (a questo punto tutti si staranno domandando
che senso ha inserire un orologio non attivo... la risposta è alla prossima
sezione).
Il terzo campo indica
se, una volta che l’orologio ha concluso un ciclo, si deve ripetere la sequenza
o meno. Impostando questo campo a TRUE si ha un orologio che scandisce il
tempo da 0 a 20 secondi e ricomincia da 0 quando ha raggiunto il 20.
L’ultimo campo indica
il punto da cui partire con la scansione del tempo. Non possiamo andare oltre
con la descrizione di questo nodo. C’è ancora molto da dire. Ma per farlo
dobbiamo occuparci prima di qualcos’altro.
TimeSensor {
exposedField SFTime cycleInterval 1
exposedField SFBool enabled TRUE
exposedField SFBool loop FALSE
exposedField SFTime startTime 0
exposedField SFTime stopTime 0
eventOut SFTime cycleTime
eventOut SFFloat fraction_changed
eventOut SFBool isActive
eventOut SFTime time
}
TimeSensor {
cycleInterval 20
enabled TRUE
loop FALSE
startTime 1
}