|  | 
 |  | ||||
|  | 
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
}