Nodo Billboard
El nodo Billboard permite crear un grupo con un sistema de
coordenadas especiales, ya que a través del campo axisOfRotation (eje de
rotación) indicamos el eje sobre el que a de girar el objeto, de forma que,
siempre esté de cara al espectador.
Todos los hijos agrupados mediante este nodo serán visualizados.
Sintaxis:
Billboard{
axisOfRotation Eje_X Eje_Y
Eje_Z
children[...]
}
Al igual que para el
campo rotate del nodo transform, únicamente uno de los ejes puede
tomar como valor la unidad, permaneciendo el resto a cero:
Poniendo nombres propios a los nodos:
Hay una solución prevista para simplificar
las repeticiones de objetos dentro de un escenario virtual. Esta solución
consiste en asignar un nombre arbitrario al nodo que se piensa repetir en el
código.
Supongamos, por ejemplo, que se van a
utilizar repetidamente en un escenario unos cilindros exactamente iguales
(que podrían ser las columnas de una casa).Dichos cilindros tendrán el
siguiente código:
Shape {
appearance Appearance {
material
Material { }
}
geometry Cylinder {
height 2.0
radius 0.5
}
}
(Este es el código de un cilindro con la apariencia por defecto, de 2
unidades de alto y una base de radio 0.5)
Se puede definir, para el ámbito de un
documento VRML, que este tipo de cilindro tenga un nombre arbitrario, por
ejemplo ColumnaRepetida (o como se desee, con tal de que comience por
mayúscula), de la siguiente manera:
DEF ColumnaRepetida Shape {
appearance Appearance {
material
Material { }
}
geometry Cylinder {
height 2.0
radius 0.5
}
}
Entonces, cada vez que se quiera usar este nodo en otra parte del
documento, basta con poner lo siguiente:
USE ColumnaRepetida
En el ejemplo anterior de la caja y el cono,
aparece el nodo Appearance repetido. Vamos a definirlo, en la primera
ocasión que se utiliza con el nombre, "PorDefecto" y la segunda vez
que se usa lo invocaremos mediante el comando USE:
#VRML V2.0 utf8
#Ejemplo de agrupación de una caja y un cono,
#haciendo uso de los comandos DEF y USE.
Group {
children [
Shape {
appearance DEF
PorDefecto Appearance {
material Material { }
}
geometry Box {
size 2.0 0.5 3.0
}
},
Shape {
appearance USE
PorDefecto
geometry Cone {
height 3.0
bottomRadius 0.75
}
}
]
}
En este caso concreto, la simplificación no ha sido muy grande (sólo
un par de líneas menos de código), pero ha servido para ilustrar el
concepto.
|
sábado, 18 de mayo de 2013
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario