ROBOTICA

video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori

links

 

Papers
meccanica
sistemi
documents

Capitolo 5° Progettazione di mondi Vrml Capitolo 7°

Inizialmente conviene domandarsi che cosa effettivamente serve per creare mondi vrml. Esistono dei tools di sviluppo che aiutano nella creazione del mondo ; tuttavia lo strumento ancora più utilizzato risulta essere un banale text editor come edit del DOS, WordPad o Word di Windows (purchè si salvi in formato ASCII) o, ancora, come vi per Unix. Questo vale soprattutto nella creazione di mondi vrml 2.0 in quanto non esistono al momento dei tools che consentano di inserire animazioni e comportamenti (la situazione sarà destinata a modificarsi in futuro). In ogni caso, anche per semplice modellazione, per avere mondi efficienti e con particolari caratteristiche ci si trova spesso a dover editare manualmente il modello generato dal tool. Ne consegue che serve assolutamente una comprensione di come funzioni la sintassi vrml.

Esiste anche la possibilità di realizzare il modello in un altro programma di rendering e poi salvarlo in formato vrml ; se questa possibilità non fosse offerta direttamente dal pacchetto grafico, esistono anche molti programmi di conversione che possono essere utili. Ovviamente la parte di comportamenti e animazioni sarebbe comunque da aggiungere a mano. Anche per la parte di modellazione, si noti che i vari pacchetti grafici non sono in grado di approfittare di alcune caratteristiche di vrml (come per esempio la possibilità di definire una sfera con pochissimi comandi), trasformando il file in una sequenza di poligoni e aumentando dunque di molto la dimensione del file vrml. E questo è molto pesante sul Web!

Una volta creato il file ASCII con estensione .wrl che contiene il mondo, l'unica cosa che rimane da fare è di porlo su un server per il Web in modo che possa essere raggiunto dagli altri utenti (oppure potete semplicemente provarlo in locale). Per visualizzare la scena 3D vi servirà ovviamente un browser vrml, così come specificato nel precedente paragrafo.

N.B. Si badi bene che per rendere esportabile un file vrml dal server, occorre che il server sia configurato in maniera opportuna. Se quando cercate di visualizzare il mondo non ottenete altro che il sorgente, significa che il server non supporta files vrml. Non dovrete far altro che stressare ripetutamente gli amministratori di sistema sino a quando non mettano la corretta impostazione (in pratica si deve aggiungere un nuovo MIME type del tipo :
x-world/x-vrml .wrl
Fornendo questa linea, gli amministratori di sistema dovrebbero essere in grado di procedere alla configurazione). In ogni caso, con il passare del tempo e con la crescente diffusione di vrml questi problemi dovrebbero diminuire.

Prima di addentrarci negli aspetti programmativi, cominciamo a pensare come organizzare i nostri mondi. Un primo approccio potrebbe essere quello di pensare ad una certa scena 3D come ad un insieme di oggetti, ognuno indipendente dagli altri. Supponiamo però ora di voler costruire un oggetto di forma umana. Potremmo definire quindi un parallelepipedo centrale che rappresenta il busto, una sfera per la testa e altri parallelepipedi che cosituiscono braccia e gambe (una forma un po' rozza di modellizzare un oggetto di forma antropomorfa, ma così restiamo sul banale). Potremmo dunque definire ognuno di questi oggetti indipendentemente dagli altri. Ma cosa succede quando muoviamo il busto, a rappresentare che il nostro soggetto umano si sposta ? Succede che, essendo il busto slegato dagli altri oggetti, si ha l'avanzamento di solo questo, con gambe, braccia e testa che rimangono nella precedente posizione. Decisamente questo non è un comportamento molto realistico ! Potremmo pensare di spostare tutti gli oggetti della stessa quantità e quindi ottenere un risultato decente... Ma il lavoro da fare risulta eccessivo ; si pensi a un modello più articolato dove aggiungiamo mani e dita. Cosa facciamo ? spostiamo un dito alla volta ?

Risulta dunque necessario un diverso approccio. Ovviamente si procede a costruire una gerarchia di oggetti. Si imporrà dunque che gambe, braccia e testa siano collegati al busto. Un modo semplice di vedere questa organizzazione è tramite un albero. Avremo dunque che le braccia sono figlie del busto ; una eventuale mano sarà figlia del relativo braccio e così via per quanto riguarda le dita. Si avrà allora che quando si sposta il busto dell'oggetto di una certa quantità, tutte le parti ancorate ad esso si sposteranno di conseguenza. E si badi bene che non occorre specificare lo spostamento delle parti collegate : il tutto avviene automaticamente.

Un altro esempio banale potrebbe essere quello di un tavolo con sopra un vaso. Se sposto il tavolo è lecito supporre che il vaso si sposterà con esso. Per cui servirà un legame fra le due parti.

Una tale organizzazione poteva non essere necessaria in mondi vrml 1.0 ; infatti non erano previsti spostamenti di oggetti e di conseguenza il problema non si poneva. Per vrml 2.0 invece una tale strutturazione risulta fondamentale quando si dovrà pensare ad animazioni e comportamenti non banali.

Basta teoria ora. Vediamo di passare a qualcosa di pratico e creare il nostro primo mondo vrml 2.0. Per il momento resteremo sul molto semplice, per cui la strutturazione del mondo fatta come indicato in questo paragrafo sarà spesso non necessaria. Più in là dovremo invece pensare prima di scrivere.