ROBOTICA

video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori

links

 

Papers
meccanica
sistemi
documents

Capitolo 29° Il nodo Inline Capitolo 31°

Il nodo Inline non introduce nuove caratteristiche al mondo che stiamo creando, ma semplicemente consente di spezzare il file vrml in piu' parti da assemblare.

Un mondo vrml sara' dunque composto da un file principale (l'unico negli esempi visti sino ad ora) e da altri files che contengono pezzi che dovranno essere inseriti all'interno del mondo.

Vediamone brevemente la specifica:

Inline {
   exposedField MFString    url         []
   field        SFVec3f     bboxCenter  0 0 0  
   field        SFVec3f     bboxSize    -1 -1 -1
}

Il campo url contiene l'URL del file contenente il pezzo da caricare. Sicuramente (dato che ormai siete esperti ;) ) avrete gia' notato che il campo e' un MFString e che quindi possiamo fornire piu' riferimenti. Questo potrebbe servire al browser per cercare di caricare il file da un'altra parte se non riesce dalla locazione posta per prima.

I due fields che seguono servono per specificare un parallelepipedo che contiene l'oggetto da caricare. In pratica questo consente al browser di delimitare il volume che l'oggetto andra' a ricoprire nel mondo non appena si saranno ultimate le operazioni di download.

Lasciando impostato il valore di default per il campo bboxSize si lascia al browser il compito di determinare le dimensioni del volume necessario.

Ovviamente per specificare il punto in cui posizionare l'oggetto facciamo ricorso al nodo Transform. Per esempio:

Transform {
  translation 10 0 0
  children [
    Inline {
      url "modulo2.wrl"
    }
  ]
}

Da quanto detto sembrerebbero pochi i vantaggi del nodo Inline... se ne potrebbe fare tranquillamente a meno... e forse e' cosi' nella maggioranza dei casi. Mentre la cosa e' vera per mondi per mondi sufficientemente piccoli, lo stesso non si puo' dire per mondi molto complessi.

In tal caso puo' risultare utile modularizzare meglio il mondo; ne risulta facilitato lo sviluppo e ci consente di focalizzare l'attenzione sulle singole parti; un approccio top-down per intenderci.

Ma c'e' anche un altro grosso vantaggio che da solo giustifica l'uso di questo nodo per mondi complessi. Il browser infatti renderizza la scena appena ha finito di caricare il file principale; evidenziera' nel modo indicato precedentemente i volumi che verranno riempiti mano a mano che i relativi files verrano downloadati. E questo vuol dire che l'utente del vostro mondo non dovra' attendere il tempo di download complessivo per iniziare a navigare. Appena il file principale e' in locale, cominciera' ad esplorare il mondo, che via via si arricchira' di dettagli. E dato che i tempi su Internet al momento sono quelli che sono... direi che e' buona norma utilizzare questo espediente per files che cominciano a crescere di dimensioni.

Ho gia' impiegato il nodo Inline nell'esempio a conclusione della prima parte di questo tutorial. Per arredare la stanza ho utilizzato dei modelli di mobili resi disponibili da 3DName. Non ho fatto altro che posizionarli e includerli. Il risultato mi sembra piu' che soddisfacente.

Data la banalita' implementativa di questo nodo vi (mi) risparmio l'esempio di chiusura.