ROBOTICA

video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori

links

 

Papers
meccanica
sistemi
documents

Capitolo 19° Field types e Eventi Capitolo 21°

Riconsideriamo la specifica del nodo TimeSensor che abbiamo visto nel precedente paragrafo.

Come già accennato qualche volta in passato la seconda colonna definisce il tipo del campo. Vediamo ora brevemente quali sono i tipi ammessi in vrml.

Data la definizione di un nodo, siamo ora in grado di capire il tipo dei singoli campi componenti.

Non c’è molto altro da dire sui tipi assumibili dai campi. Per eventuali approfondimenti ci si rivolga direttamente alle specifiche. Per quanto dobbiamo fare, questo basta e avanza.

Occupiamoci ora della prima colonna, senz’altro la più interessante per i nostri scopi.

Come si può vedere rileggendo la definizione del nodo TimeSensor (o di altri pochi nodi forniti in precedenza) nella prima colonna possiamo trovare le seguenti quattro caratterizzazioni :

Questo ulteriore tipo, detto tipo di interfaccia, fornito ai campi è strettamente correlato alla nozione di evento. In vrml 2.0 alcuni oggetti sono in grado di emettere eventi, altri di riceverli. Possiamo pensare ad un evento come ad un segnale che un nodo manda verso l’esterno e che può essere catturato da un altro nodo. Sfruttando questa nozione possiamo spiegare meglio come funziona il nodo TimeSensor. La sua unica funzione è quella di emettere eventi che sono correlati con il trascorrere del tempo. Altri nodi potranno ricevere questi eventi e in base ad essi cambiare il loro stato. Se riflettiamo un po’ su questo ci accorgiamo di quale sia il meccanismo sfruttato per realizzare animazioni. In pratica si fa cambiare lo stato di un nodo (che per esempio rappresenta un certo oggetto) in relazione con il tempo. E questo altro non è che una animazione.

Per capire ancora più a fondo il funzionamento del nodo TimeSensor (ma in sostanza di tutti i nodi) dobbiamo però capire il significato dei quattro tipi di interfaccia esposti in precedenza.

Il tipo di interfaccia specifica quale accesso abbiano gli altri nodi sul campo del nodo. Per un campo di tipo field i nodi esterni non hanno alcun accesso. Nel caso eventIn è concesso l’accesso in scrittura ; pertanto nodi esterni possono settare il valore di questo campo. Per campi di tipo eventOut si ha accesso il lettura. In pratica il campo esporta il proprio valore verso altri nodi che possono leggerlo. Infine, un tipo exposedField indica che un nodo esterno può accedere sia in lettura che in scrittura.

A questo punto abbiamo davvero tutti gli elementi per capire le animazioni in vrml. Una volta attivato un nodo TimeSensor, il valore assunto dal campo time, che è un eventOut, viene letto dal nodo da animare. Se per esempio vogliamo semplicemente traslare un oggetto possiamo fare in modo che il campo translation del nodo Transform che lo contiene varii in conseguenza del trascorrere del tempo.

L’animazione in vrml sta tutta qui; a livello di concetto per lo meno... in quanto ci manca ancora qualcosa per vedere girare la nostra prima animazione. Ci sono infatti ancora due aspetti che abbiamo lasciato in sospeso. In primo luogo non è chiaro come legare un campo che esporta un valore ad un campo che invece lo legge (e che quindi modifica il suo valore in funzione dell’altro). In secondo luogo va specificato come variare il campo (come per esempio la posizione) in funzione del valore letto dall’altro campo (solitamente il campo time di un nodo di tipo TimeSensor). Questi due argomenti saranno alla radice delle prossime due sezioni. Dopo averli introdotti potremo cimentarci nella nostra prima animazione.