ROBOTICA

video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori

links

 

Papers
meccanica
sistemi
documents

Capitolo 18° Il tempo scorre! il nodo TimeSensor Capitolo 20°

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:

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
}

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 :

TimeSensor {
	cycleInterval 20
	enabled TRUE
	loop FALSE
	startTime 1
}

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.