Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Elementi base di navigazione

I nodi ViewPoint, NavigationInfo, Collision, Anchor e Inline.
I nodi ViewPoint, NavigationInfo, Collision, Anchor e Inline.
Link copiato negli appunti

Viewpoint

Finora non si è mai presa in considerazione la
posizione dell’utente. In effetti il visitatore di un mondo
VRML può muoversi (tra l'altro con differenti
modalità) in qualunque direzione, eccezion fatta per
vincoli imposti dal nodo Collision.

È altrettanto vero che in mondi 3D anche limitatamente
complessi, la navigazione deve comunque partire da un punto ben
precisato. Ipotizzando la realizzazione di una città VRML,
occorre stabilire una posizione di partenza per la visione e la
navigazione della stessa in maniera ottimale. Nel caso in cui non
venga specificato diversamente il browser si preoccupa di dare
una vista iniziale di default (in genere l’origine del
sistema di riferimento). È quindi compito del
programmatore fornire all'utente un punto di partenza iniziale,
una cosiddetta vista d'entrata. Si possono poi specificare anche
punti di vista aggiuntivi oltre a quello iniziale, in maniera
tale da offrire all’utente una collezione di posizioni che
si ritengono più interessanti e funzionali agli scopi del
mondo progettato. La selezione delle varie Viewpoints viene
realizzata dall'utente tramite menù. Inoltre è
possibile programmare una sequenza animata che percorre il mondo
lungo un percorso tra più punti, consentendo la
possibilità quindi di creare tour guidati.

Il seguente listato descrive due punti di vista piuttosto
semplici:

#VRML V2.0 utf8
# esempio di utilizzo del nodo Viewpoint

Viewpoint{
position 0 -1.25 7.5
orientation 0 0 0 0
description "Distante dal cubo"
}

Viewpoint{
position 0 2.5 2.5
orientation -1 .5 0 .75
description "Vicino al cubo"
}

Shape {
appearance Appearance {
material Material { diffuseColor .88 .15 .01
specularColor .19 .03 .03
ambientIntensity .0833
shininess .08
}
}
geometry Box { size 1 1 1 }
}

punti di vista.wrl

Per realizzare i 2 punti di vista si sono inseriti 2 nodi
Viewpoint. Solitamente i nodi Viewpoint sono posti
all’inizio del file. Il primo nodo Viewpoint corrisponde di
default al punto di vista iniziale. Per definire le rispettive
visuali è stato sufficiente dichiarare gli attributi dei
campi position e orientation: il primo di essi definisce la
posizione dell’osservatore, il secondo l’orientamento
del suo sguardo. Infine si è specificata una descrizione
per ognuna delle viste, queste descrizioni costituiscono le voci
del menù di selezione presente sul player.

Il nodo NavigationInfo ha il compito di informare il browser
circa alcune caratteristiche dell'utente (o meglio, dell'avatar
che lo rappresenta), ad esempio la sua altezza, la massima
distanza a cui può vedere e così via. Con il
termine avatar si intende la rappresentazione fisica
dell’utente nel mondo che sta esplorando. La maggior parte
di queste caratteristiche acuistano rilievo all'interno di mondi
multi-utente, poichè contribuiscono alla rappresentazione
del nostro alter ego così come la vedranno gli altri
utenti presenti.

Il nodo NavigationInfo viene solitamente posto
all’inizio del file VRML.

Si veda il semplice esempio:

#VRML V2.0 utf8
# esempio di utilizzo del nodo NavigationInfo

NavigationInfo {
avatarsize [ 3.8, 3, 0.5 ]
headlight trUE
speed 1
type "WALK"
visibilityLimit 10
}

Shape {
appearance Appearance {
material Material { emissiveColor .25 .5 1 }
}
geometry Box { size 3 3 3 }

}

Il campo avatarsize specifica le caratteristiche principali
dell’avatar dell’utente. Questo campo contiene
più valori. Il primo di questi specifica il raggio di
collisione dell'utente cioé quanto può avvicinarsi
ad oggetti solidi prima di urtare contro di essi. Il secondo
campo specifica l’altezza a cui devono restare gli occhi
dell’osservatore in relazione al terreno su cui cammina. Il
valore del terzo parametro indica il massimo salto che può
essere effettuato per scavalcare un ostacolo (i gradini di una
scala ad esempio).

Il secondo field indica l’attivazione o meno
dell’headlight. Ponendo headlight a trUE si attiva una luce
direzionale che punta sempre nella direzione in cui
l’osservatore sta guardando. Si consiglia di porre il
parametro a FALSE in quanto il valore trUE praticamente annulla
qualsiasi settaggio impostato dal programmatore nella creazione
delle luci. Il campo speed indica la velocità, espressa in
metri al secondo, con la quale l’utente può
procedere nella scena.

Type indica invece la modalità di navigazione. Ogni
browser dovrebbe rendere disponibile un certo numero di
possibilità. Queste sono: ANY, WALK, EXAMINE, FLY, NONE.
La differenza tra WALK e FLY è che quando si è in
WALK la navigazione procede tenendo conto della gravità.
Con EXAMINE si procede ad esaminare l’oggetto ruotandolo o
avvicinandolo. NONE indica invece di disattivare i controlli del
browser e lasciare attivi solo i controlli forniti dal
programmatore del mondo; lasciando in pratica attivi soltanto i
“tour programmati”, viceversa ANY indica la
possibilità di usare tutti i metodi di navigazione.

Infine, il campo visibilityLimit specifica la massima distanza
a cui si può vedere. Con il valore 0.0 si indica una
visibilità infinita.

Nodo Collision

Il nodo Collision è stato introdotto per risolvere un
problema che era presente in VRML 1.0. Infatti, a parte apposite
soluzioni proprietarie dei browsers, l’utente poteva
tranquillamente passare attraverso gli oggetti. Ora invece,
è sufficiente 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
# esempio di collision detection

Collision {
children [

transform {
rotation 1 1 1 1.1
children [
Shape {
appearance Appearance {
material Material { emissiveColor .25 .25 1 }
}
geometry Box { size 3 3 3 }
}
]
}
]
}

collision.wrl

Questo esempio crea un mondo contenente un cubo. Se in fase di
navigazione l’utente si imbatte nell’oggetto non
può attraversarlo.

La sintassi del nodo Collision a questo punto della guida non
dovrebbe richiedere altre spiegazioni. I nodi contenuti nel campo
children presentano caratteristiche di solidità.

Nodo Anchor

tra le caratteristiche più interessanti, e sicuramente
tra le più note, del WWW vi è quella che consente
di connettere tra loro una mole impressionante di dati. Come
noto, ogni pagina HTML può contenere links ad altre pagine
rendendo di fatto il Web un unico immenso ipertesto. Come
già accennato nel primo capitolo della presente guida,
anche il VRML prevede l’impiego di link a URL remoti di
qualsiasi tipo e naturalmente a qualunque altro file di tipo
.wrl

Per esempio si potrebbe ipotizzare una semplice caccia al
tesoro, creando una città in VRML completa di strade e
palazzine. Quando si cerca di entrare in una casa, si clicca su
una porta e automaticamente si carica il mondo VRML relativo
all'interno della casa prescelta. Si potrebbero prevedere link a
file HTML che forniscano dati e informazioni utili alla
ricerca. Infine, una volta trovato il tesoro, sarà
sufficiente cliccare sulla sua raffigurazione 3D per ottenere
l'immediato download di un file compresso in formato .zip
ad esempio

Il nodo impiegato è il nodo Anchor e la sintassi
relativa è molto semplice:

#VRML V2.0 utf8

# esempio di utilizzo del nodo Anchor

Anchor {
url "anchor2.wrl"
description "Collegamento ad un altro mondo VRML con sfera blu"
children [
Shape {
appearance Appearance {
material Material { emissiveColor 0 1 0 }
}
geometry Box { size 3 3 3 }
}
]
}

àncora.wrl

Il procedimento è forse ancora più semplice di
quello necessario alla creazione di un collegamento tra file
HTML: l’oggetto che funge da áncora è fornito
dal nodo Shape contenuto nel campo children (non ci sono limiti
all'impiego di più nodi Shape). L’indirizzo del file
è contenuto nel campo url. Il campo description, infine,
definisce il testo che apparirà sulla barra di stato del
browser quando l’utente porterà l’icona del
mouse sopra l'oggetto-link.

Il nodo Inline

Il nodo Inline non introduce nuove caratteristiche al mondo
che si sta creando, ma semplicemente consente di strutturare un
mondo vrml in piu' files che verranno assemblati online in fase
di navigazione.

Un mondo vrml può dunque essere composto da un file
principale e da altri files che contengono le diverse parti della
scena.

Il nodo Inline contiene i seguenti campi:

  • url
  • bboxCenter
  • bboxsize

Il campo url contiene il riferimento alla locazione del file
contenente la porzione da caricare. Il campo può contenere
piu' riferimenti. Questo serve a fornire al browser un numero di
locazioni alternative alla prima.

I due fields successivi specificano un parallelepipedo
predisposto a contenere l'oggetto da caricare. In pratica questo
consente al browser di delimitare il volume che l'oggetto andra'
ad occupare nel mondo al termine delle operazioni di
download.

Lasciando impostati il valore di default per questi due campi,
si lascia al browser il compito di determinare le caratteristiche
del volume necessario.

Per specificare il punto in cui posizionare l'oggetto occorre,
come sempre, utilizzare il nodo transform.

transform {
translation 10 0 0
children [
Inline {
url "abitazione2.wrl"
}
]
}

È evidente che l’impiego del nodo Inline
acquisisce senso in special modo quando si progettano mondi
piuttosto complessi. In tal caso infatti, ne risulta facilitato
lo sviluppo e la possibilità di focalizzare l'attenzione
sulle singole parti. Inoltre, poiché il browser renderizza
la scena appena finito di caricare il file principale,
evidenzierà nel modo indicato precedentemente i volumi che
verranno riempiti mano a mano che i relativi files inline verrano
caricati. Da parte sua, l'utente potrà cominciare ad
esplorare il mondo immediatamente, mentre il modo si arricchira'
dei dettagli in modo progressivo.

Pur non costituendo uno strumento di navigazione in senso
stretto, il nodo Inline contribuisce sicuramente a facilitare
all’utente la navigazione del mondo.

Ti consigliamo anche