Concetti di base del linguaggio VRML, controllo della navigazione


Virtual Reality Modeling Language


Nasce nel 1994 come linguaggio per descrivere contenuti 3D per il Web; nel 1997 diventa uno standard ISO con il nome VRML97. Permette di combinare grafica 3D, grafica 2D, testo, video e audio; integra funzionalità di scripting e accesso a risorse in rete. Include le principali funzionalità dei sistemi basati su grafica 3D interattiva, come primitive per la rappresentazione di solidi tridimensionali, trasformazioni, sorgenti di luce, proprietà dei materiali, animazioni, ...

Un documento VRML
Un documento VRML descrive un mondo 3D tramite un grafo della scena (un grafo diretto aciclico) formato da nodi che specificano solidi geometrici, sorgenti di luce, animazioni, interattività, ...
Le proprietà di ogni nodo vengono specificate assegnando un valore opportuno ai suoi campi. I nodi possono scambiarsi informazioni tramite un meccanismo per il passaggio di eventi.

Struttura di un file VRML


Un file VRML contiene
Esempio

#VRML V2.0 utf8

#-- Un cilindro --

Shape
{
  appearance Appearance
  {
	material Material { }
  }
  geometry Cylinder
  {
	height 2.0
	radius 1.5
  }
}


Uso dei nodi


Ogni nodo è costituito da
I nomi dei nodi sono case sensitive. VRML definisce 54 tipi di nodi.

Uso dei campi


Ogni campo è costituito da
I nomi dei campi sono case sensitive e l'ordine in cui i campi vengono specificati non ha importanza. Se un campo non viene specificato, assume un valore di default.

Come si consulta la sintassi VRML


IndexedLineSet
{
   eventIn      MFInt32 set_colorIndex
   eventIn      MFInt32 set_coordIndex
   exposedField SFNode  color NULL
   exposedField SFNode  coord NULL
   field        MFInt32 colorIndex     []
   field        SFBool  colorPerVertex TRUE
   field        MFInt32 coordIndex     []
}

  1. La prima colonna differenzia tra campi (field ed exposedField) e porte per la ricezione e l'invio di eventi (eventIn, eventOut, exposedField)
  2. La seconda colonna indica il tipo di dato del valore del campo
  3. La terza colonna indica il nome del campo
  4. La quarta colonna indica il valore di default

Visualizzazione di un documento VRML


La scena visualizzata dal browser VRML è uno spazio tridimensionale (teoricamente) infinito, chiamato mondo
L'utente è personificato nel mondo dal suo avatar e vede la scena attraverso una telecamera (o punto di vista) posizionata sulla testa dell'avatar
Il browser, in base ai nodi specificati nel grafo della scena, calcola l'immagine che visualizza il mondo dal punto di vista dell'utente.

Navigazione in un mondo VRML


Le modalità di navigazione possibili sono

WALK
camminare, affetto da gravità (adatto, ad es. alla visita di una casa)
FLY
volare, non affetto da gravità (adatto, ad es. alla navigazione nello spazio)
EXAMINE
esaminare oggetti individuali

Ognuna delle tre modalità di navigazione può avere diverse sottomodalità per il controllo della posizione e orientazione del punto di vista.

I nodi NavigationInfo e Viewpoint permettono di controllare la navigazione

NavigationInfo
{
  exposedField MFString type  ["WALK", "ANY"]
  exposedField SFFloat  speed 1.0
  ...
}


type
lista di modalità di navigazione permesse (la prima è quella selezionata inizialmente); ANY indica tutte
speed
velocità di navigazione in metri/secondo (non funziona con EXAMINE).

Viewpoint
{
   exposedField SFVec3f    position    0 0 10
   exposedField SFRotation orientation 0 0 1 0
   field        SFString   description ""
   ...
}


Viewpoint permette di impostare un punto di vista nella scena

position
coordinate x, y e z della posizione del punto di vista, il tipo di dato SFVec3f indica una terna di valori reali;
orientation
orientazione del punto di vista, il tipo di dato SFRotation specifica 4 valori reali: un asse di rotazione e angolo di rotazione in radianti
description
descrizione testuale da associare al punto di vista, il tipo di dato SFString indica una stringa;

N.B.

Un esempio completo


#VRML V2.0 utf8

NavigationInfo
{
   speed 1.0
   type  ["WALK", "ANY"]
}

Viewpoint
{
   position    0 5 10
   orientation 1 0 0 -0.5
   description "aaa"
}

Shape
{
   appearance Appearance { material Material {} }
   geometry   Cylinder   { }
}
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki