ROBOTICA

video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori

links

 

Papers
meccanica
sistemi
documents

Capitolo 12° Collision Detection: basta camminare attraverso i muri! Capitolo 14°

A questo punto siamo in grado di costruire mondi abbastanza interessanti. In questo paragrafo e nei prossimi analizziamo alcuni nodi che ancora ci mancano e che possono essere utili in fase di modellazione della scena. Ultimata la spiegazione di questi potremo passare agli aspetti veramente interessanti della versione 2.0 di Vrml, vale a dire la parte di animazione. Fino a quel punto, di fatto, si sarà introdotto ben poco in più rispetto a quanto già vrml 1.0 introduceva.

Vediamo ora di risolvere un problema che era presente in vrml 1.0 e che era piuttosto pesante. Infatti, a parte aggiunte dei browsers (come Live3d 1.0), l’utente poteva tranquillamente passare attraverso gli oggetti. In un mondo Vrml 1.0 porre una porta all’ingresso di una casa risultava un puro fatto estetico ; in ogni caso il visitatore poteva entrare da dove voleva semplicemente passando attraverso i muri. Dato che solitamente non ci aspettiamo visitatori con strani poteri e che vogliamo avvicinarci il più possibile ad un mondo reale questo problema va sistemato. E Vrml 2.0 offre appunto questa possibilità. Basta aggiungere un nodo Collision che raggruppi gli oggetti che si vogliono rendere solidi. Vediamo la sintassi di questo nodo con un banale esempio :


#VRML V2.0 utf8
# semplice esempio di collision detection
Collision {
  children [
    Shape {
      appearance Appearance {
        material Material { emissiveColor 1 0 0 }
      }
      geometry Box { size 1 1 1 }
    }
  ]
}

Questo esempio crea un mondo contenente un cubo. Questa volta però se in fase di navigazione l’utente si imbatte nell’oggetto non potrà più attraversarlo.

In Live3d 2.0 si può attivare collision detection anche da menù. In tal caso si applica collision detection a tutte le primitive, senza che questo sia specificato nel file vrml. La versione attuale di Cosmo Player (beta 3) non supporta invece Collision Detection.

La sintassi del nodo Collision a questo punto del tutorial non dovrebbe richiedere altre spiegazioni. Tutti i nodi contenuti nel campo children avranno caratteristiche di solidità.