Il nodo Billboard è un "grouping node" (come lo sono anche i nodi transfrom e Collision). Questo significa che all'interno del suo campo children possono essere dichiarati diversi nodi. Lo scopo del nodo Billboard consiste nel fare in modo che uno o più oggetti siano in grado di ruotare attorno ad un asse in base alla posizione dell'osservatore.
Una applicazione molto frequente del nodo Billboard riguarda la simulazione di alberi. Infatti, simulare un albero definendone le parti tramite nodi Shapes richiede sicuramente un lavoro lungo e complesso, anche utilizzando strumenti di modellazione 3D; inoltre il risultato finale porta inevitabilmente ad un considerevole aumento delle dimensioni del file. Con Billboard è possibile definire un quadrilatero sul quale viene "mappata" la texure trasparente rappresentante l'albero in questione. Dopodiché, non si deve far altro che specificare un'asse di rotazione pari all'asse y. In questo modo, quando l'utente si muoverà attorno al quadrilatero, questo ruoterà in maniera conseguente, in modo da offrire alla sua vista sempre la texture rappresentante l'albero.
Ecco i campi del nodo:
axisOfRotation
children
bboxCenter
bboxsize
addChildren
removeChildren
Il significato del campo axisOfRotation è estremamente chiaro e non necessita di spiegazioni, mentre il campo children non dovrebbe costituire una novità per chi ha seguito i precedenti capitoli.
I campi bboxCenter e bboxsize servono per definire la "bounding box" (in italiano: il parallelepipedo che congloba gli oggetti considerati). Il campo bboxsize prevede la possibilità di inserire un valore di default (-1 -1 -1) indicante al browser di procedere a calcolare in modo automatico la dimensione della bounding box.
Gli ultimi due campi: addChildren e removeChildren, sono degli eventIn e possono essere impiegati per modificare in tempo reale le caratteristiche del campo children aggiungendo o togliendo nodi all'interno del campo stesso. Di seguito riportiamo un semplice esempio di impiego del nodo Billboard che non utilizza gli ultimi due campi citati:
#VRML V2.0 utf8
#esempio di utilizzo del nodo Billboard
DirectionalLight {
direction 0 -1 -1
}
Viewpoint {
position 0 2 40
orientation 0 0 0 0
description "Vista iniziale"
}
# creazione del background
Background {
skyAngle [1 1.57 3.14]
skyColor [0 0 1, 0 0 1, .6 .6 1, 0 0 1]
groundAngle [ 0 1.57]
groundColor [0 1 0, 0 .8 0, 0 .6 0]
}
# un semplice piano come prato
Shape {
appearance Appearance {
material Material { diffuseColor 0 .88 0 }
}
geometry Box { size 60 .01 60 }
}
# il box dell'albero
transform {
translation 0 9.75 0
children [
Billboard {
axisOfRotation 0 1 0
children [
Shape {
appearance Appearance {
material Material { diffuseColor .7 .7 1 }
texture ImageTexture {
url "tree.gif"
}
}
geometry Box { size 14.4 19.5 .01 }
}
]
}
]
}
Open Graph Protocol, Facebook e il Web SemanticoCome sfruttare il Web Semantico "made in Facebook" |
Introduzione a RDFa - 2Arricchire un documento HTML con metadati semantici presi dal... |
Introduzione a RDFaCos'è e a cosa serve il linguaggio che potrebbe aprire il campo alle... |
Usare SVG per creare sfondi flessibili, scalabili e divertentiScopriamo cos'è il formato SVG e come possiamo usarlo in modo... |
Visualizzare i metadati RDF Dublin core con le trasformazioni XSLMettere insieme XSL, XPATH e le definizioni Dublin core per... |
Guida PodcastingUn percorso in 16 lezioni, per entrare nella filosofia del podcast... |
Guida Smil 2.0Un percorso pratico alla scoperta di SMIL: il linguaggio (XML) per... |
Guida Web serviceCosa sono, a cosa servono e come si creano servizi Web, i sistemi... |
Ogni mese, direttamente nella tua e-mail: articoli, guide, FAQ e approfondimenti sui linguaggi della famiglia XML.
Iscriviti alla newsletter