En un alto nivel de abstracción, VRML es un formato de archivo simple para la descripción de objetos. Teóricamente, los objetos pueden contener cualquier cosa (figuras geométricas en 3 dimensiones, datos MIDI, imágenes JPEG, etc. VRML define un conjunto de objetos útiles para gráficas 3d y la construcción de objetos y/o mundos interactivos. Estos objetos son llamados nodos, y contienen datos los cuales son guardados en campos.
Un nodo tiene las siguientes características:
exposedField foo
es equivalente a la declaración:
eventIn set_foo
field foo
eventOut foo_changed
La sintaxis para la representación de este tipo de información
es:
Tipo de nodo {campos}
Sólo se requiere el tipo de nodo y los paréntesis, los nodos pueden no tener especificados los valores de los campos. Cuando un valor de campo no es especificado se toman los valores por defecto.
Box {
field SFVec3f size 2 2 2
}
Este nodo dibuja una caja rectangular alineada con el eje coordenado.
Por defecto esta caja está ubicada en el centro del eje
coordenado (0,0,0), y con cada dimensión midiendo 2 unidades,
desde -1 a +1.
field SFVec3f size 2 2 2.
Este campo especifica los valores del tamaño de los lados del rectángulo en el orden (X,Y,Z).
Y
Ejemplo:
Box{
size 2.0 0.5 3.0 X
} Z
Cone {
field SFFloat bottomRadius 1
field SFFloat height 2
field SFBool side TRUE
field SFBool bottom TRUE
}
Este nodo especifica un cono.
Por defecto el cono se encontrará en el centro del eje
tridimensional (0,0,0). y tendrá un tamaño que irá
de -1 a +1 en las tres dimensiones del espacio.
field SFFloat bottomRadius 1
Este campo especifica el valor del radio basal del cono.
field SFFloat height 2
Este campo especifica el valor de la altura del cono.
field SFBool side TRUE
Este campo especifica una parte del cono (el manto), si el valor
es TRUE, entonces será visible, si es FALSE, entonces no
lo será.
field SFBool bottom TRUE
Este campo especifica una parte del cono (la base), si el valor
es TRUE, entonces será visible, si es FALSE, entonces no
lo será.
Ejemplo:
Cone{
heigh 3.0
bottonRadious 0.75
}
Cylinder {
field SFBool bottom TRUE
field SFFloat height 2
field SFFloat radius 1
field SFBool side TRUE
field SFBool top TRUE
}
Este nodo especifica un cilindro alrededor del eje X.
Por defecto el cilindro se encuentra en el centro del eje tridimensional,
y un tamaño que va desde -1 a +1.
El cilindro tiene tres partes: manto, tope (Y=+1) y base (Y=-1).
field SFBool bottom TRUE
Este campo especifica una parte del cilindro (la base), si el
valor es TRUE, entonces será visible, si es FALSE, entonces
no lo será.
field SFFloat height 2
Este campo especifica el valor de la altura del cilindro.
field SFFloat radius 1
Este campo especifica el valor del radio del cono.
field SFBool side TRUE
Este campo especifica una parte del cilindro (el manto), si el valor es TRUE, entonces será visible, si es FALSE, entonces no lo será.
field SFBool top TRUE
Este campo especifica una parte del cilindro (el tope), si el
valor es TRUE, entonces será visible, si es FALSE, entonces
no lo será.
Ejemplo:
Cylinder{height 2.0
radius 1.5
}
Sphere {
field SFFloat radius 1
}
Este nodo especifica una esfera.
Por defecto la esfera es centrada en el origen, el valor del radio
es 1.
field SFFloat radius 1
Este campo especifica el valor del radio de la esfera.
Ejemplo:
Sphere{
radius 1.0
}
ElevationGrid {
eventIn MFFloat set_height
exposedField SFNode color NULL
exposedField SFNode normal NULL
exposedField SFNode texCoord NULL
field MFFloat height []
field SFBool ccw TRUE
field SFBool colorPerVertex TRUE
field SFFloat creaseAngle 0
field SFBool normalPerVertex TRUE
field SFBool solid TRUE
field SFInt32 xDimension 0
field SFFloat xSpacing 0.0
field SFInt32 zDimension 0
field SFFloat zSpacing 0.0
}
Este nodo crea una rejilla rectangular uniforme de altura variable
en el plano XZ. La geometría es descrita por medio de un
arreglo de valores de altura que especifican la altura de la superficie
rectangular por encima de cada punto de la rejilla.
Este nodo es ideal para crear efectos tales como cadenas montañosas, superficies marinas o superficies planetarias, por ejemplo.
field SFInt32 xDimension 0
field SFInt32 zDimension 0
Estos campos indican las dimensiones de la altura de la rejilla en las direcciones X y Z.
field MFFloat height []
Este campo es un arreglo de valores escalares X por Y, que representan la altura por encima de la rejilla para cada vértice.
field SFFloat xSpacing 0.0
field SFFloat zSpacing 0.0
Estos campos indican la distancia entre los vértices en
las direcciones X y Z respectivamente.
De esta manera el vértice correspondiente al punto P[i,
j], en la grilla es puesto como:
P[i,j].x = xSpacing * i
P[i,j].y = height[ i + j * zDimension]
P[i,j].z = zSpacing * j
Donde 0<i<xDimencion y 0<j<zDimencion.
field SFBool colorPerVertex TRUE
Este campo determina si los colores (si están especificados en el campo color) pueden ser aplicados a cada vértice o a cada cuadrilátero del ElevationGrid. Si colorPerVertex es FALSE y el campo color no es NULL, entonces el campo color debe contener un nodo Color conteniendo al menos (xDimension-1)*(zDimension-1) colores. Si colorPerVertex es TRUE y el campo color no es NULL, entonces el campo color debe contener un nodo Color conteniendo al menos xDimension*zDimension colores.
field SFBool ccw TRUE
Este campo indica si los vértices son ordenados en el sentido horario cuando la figura es vista desde el exterior (TRUE). Si el orden es antihorario o desconocido, el valor del campo es FALSE.
field SFBool solid TRUE
Este campo indica si la figura circundada es un volumen (TRUE). Si el valor del campo es FALSE implica que la figura en relieve no puede ser presentada y que el polígono tiene dos lados.
field SFFloat creaseAngle 0
Este campo afecta como las normas por defecto son generadas. El creaseAngle es el ángulo entre las superficies normales en polígonos adyacentes.
eventIn MFFloat set_height
Este evento permite que el campo height pueda ser cambiado, permitiendo
ElevationGrids animados.
Ejemplo:
ElevationGrid{
xDimension 3
xSpacing 1.0
zDimension 2
zSpacing 1.0
height [0.0, -0.5, 0.0, 0.2, 4.0, 0.0]
}
Extrusion {
eventIn MFVec2f set_crossSection
eventIn MFRotation set_orientation
eventIn MFVec2f set_scale
eventIn MFVec3f set_spine
field SFBool beginCap TRUE
field SFBool ccw TRUE
field SFBool convex TRUE
field SFFloat creaseAngle 0
field MFVec2f crossSection [ 1 1, 1 -1, -1 -1, -1 1, 1 1 ]
field SFBool endCap TRUE
field MFRotation orientation 0 0 1 0
field MFVec2f scale 1 1
field SFBool solid TRUE
field MFVec3f spine [ 0 0 0, 0 1 0 ]
}
Este nodo es usado para definir figuras basadas en un corte transversal
en dos dimensiones estirado a lo largo de una columna tridimensional.
El corte transversal puede ser escalado y rotado en cada uno de
los puntos de la columna para producir una amplia variedad de
figuras.
Ejemplo:
Extrusion{
crossSection [1.0 0.0 ... ]
spine[10.0 0.0 0.0 ... ]
IndexedFaceSet {
eventIn MFInt32 set_colorIndex
eventIn MFInt32 set_coordIndex
eventIn MFInt32 set_normalIndex
eventIn MFInt32 set_texCoordIndex
exposedField SFNode color NULL
exposedField SFNode coord NULL
exposedField SFNode normal NULL
exposedField SFNode texCoord NULL
field SFBool ccw TRUE
field MFInt32 colorIndex []
field SFBool colorPerVertex TRUE
field SFBool convex TRUE
field MFInt32 coordIndex []
field SFFloat creaseAngle 0
field MFInt32 normalIndex []
field SFBool normalPerVertex TRUE
field SFBool solid TRUE
field MFInt32 texCoordIndex []
}
Este nodo dibuja una figura utilizando caras (polígonos) definidas por un conjunto de puntos.
exposedField SFNode coord NULL
Este campo debe contener un nodo Coordinate.
field MFInt32 coordIndex []
Los índices de este campo sirven para especificar las caras del polígono. Un índice de -1 indica que la cara actual ha sido terminada y la próxima comienza. La última cara puede (pero no tiene que ser así) seguida por un -1. Si el número de índices en el campo ccordIndex es N, entonces el nodo Coordinate debe contener N+1 coordenadas (indexadas como 0-N).
exposedField SFNode color NULL
Si este campo no es NULL, entonces debe contener un nodo Color,
cuyos colores son aplicados a los vértices o caras de IndexedFaceSet
como sigue:
exposedField SFNode normal NULL
Si este campo es NULL, entonces el browser puede automáticamente
generar nodos Normal, usando creaseAngle para determinar si y
como sus vectores serán alisados a través de los
vértices formados.
Si este campo no es NULL, entonces debe contener un nodo Normal, cuyos vectores son aplicados a los vértices o caras del IndexedFaceSet en una manera exactamente equivalente a como se describe abajo para la aplicación de colores a vértices/caras.
exposedField SFNode texCoord NULL
Si el campo texCoord no es NULL, entonces debe contener un nodo
TextureCoordinate, las coordenadas de textura en este nodo son
aplicadas a los vértices del IndexedFaceSet como sigue:
Si el campo texCoord es NULL, un mapeamiento de una coordenada de textura es calculado usando una caja atada a la figura.
field SFBool convex TRUE
Este campo indica si todas las caras en la figura son convexas
(TRUE). Si nada se conoce acerca de las caras, este campo es FALSE.
Ejemplo:
IndexedFaceSet{
coord Coordinate {...}
coordIndex[...]
color Color{
Color[1.0 0.0 0.0 ... ]
}
colorIndex [3,0,1,... ]
colorPerVertex TRUE
}
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 []
}
Este nodo dibuja una figura utilizando líneas definidas por un conjunto de puntos.
exposedField SFNode coord NULL
Este campo lista los vértices para la construcción de líneas.
field MFInt32 coordIndex []
Este campo posee índices que especifican las líneas. Un índice -1 indica que la línea actual ha finalizado y comienza la siguiente. La última línea puede (pero no tiene que ser así) ser seguida por un -1.
exposedField SFNode color NULL
Si este campo no es NULL, debe contener un nodo color, y los colores
son aplicados a la línea o líneas como sigue:
Si el campo colorIndex es vacío, entonces el campo coordIndex
es usado para elegir colores desde el nodo Color. Si el índice
en el campo coordIndex es N, entonces deben haber N+1 colores
en el nodo Color.
Ejemplo:
IndexedLineSet{
coord Coordinate{
point [...]
}
coordIndex [1,0,3,-1, ... ]
}
PointSet {
exposedField SFNode color NULL
exposedField SFNode coord NULL
}
Este nodo especifica una figura usando un conjunto de puntos.
Estos puntos están contenidos en el campo coord.
Este campo debe ser un nodo Coordinate (o una instancia del nodo
Coordinate).
Si este campo no es NULL, deberá contener un nodo Color
que contenga al menos el número de puntos contenido en
el nodo coord. Estos campos (color) son siempre aplicados a cada
punto en orden.
Text {
exposedField MFString string []
exposedField SFNode fontStyle NULL
exposedField MFFloat length []
exposedField SFFloat maxExtent 0.0
}
Este nodo representa una o más cadenas de texto.
Este campo contiene las cadenas de texto.
Este campo contiene un nodo FontStyle que especifica el tamaño
del tipo de letra, su familia y estilo, dirección de la
cadena de texto y alguna especificación de las técnicas
de renderización que deben ser usadas para el texto.
Este campo contiene un valor MFFloat que especifica el largo de
cada cadena de texto en el espacio coordenado local. Si la cadena
es demasiado corta, esta es estirada, si es demasiado larga es
comprimida.
Este campo limita y escala la cadena de texto, si el largo natural
de la cadena es larga, en comparación a la extención
máxima. Si la cadena de texto es corta en comparación
a la extención máxima, no es cambiada.
La extensión máxima es medida horizontalmente para
los textos horizontales (FontStyle: horizontal=TRUE) y verticalmente
para los textos verticales (FontStyle: horizontal=FALSE).
Ejemplo:
Text{
string ["HOY OFERTA", "LLEVE 2 y PAGUE 3"]
}
Anchor {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField MFNode children []
exposedField SFString description ""
exposedField MFString parameter []
exposedField MFString url []
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
}
Este nodo crea un grupo de nodos hijos, los cuales son mostrados en su totalidad, seleccionando algún nodo hijo podemos saltar a un mundo VRML especificado por una determinada URL. En ese caso el mundo es cargado y mostrado en lugar de éste del cual el nodo Anchor es parte. La selección de los nodos hijos es hecha (con el browser VRML corriendo) haciendo click en uno de ellos y de esta manera el resultado será una nueva escena que reemplazará a la anterior.
exposedField SFString description ""
Este campo permite escribir una descripción acerca de la
alternativa que se está eligiendo en ese momento al por
ejemplo pulsar aquel nodo.
Ejemplo:
Anchor {url "ejemplo.wrl"
description "un ejemplo"
children [...]
}
Billboard {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField SFVec3f axisOfRotation 0 1 0
exposedField MFNode children []
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
}
Este nodo crea un grupo con un sistema de coordenadas especiales. Aquí todos los nodos hijos son mostrados. El sistema de coordenadas es girado de tal forma que siempre las caras están a la vista.
exposedField SFVec3f axisOfRotation 0 1 0
Este campo especifica cual eje va a ser usado para procesar la
rotación. Este eje es definido. Este eje es definido en
las coordenadas locales del nodo billboard. El valor por defecto
(0,1,0) es usado para objetos tales como arboles y postes, que
están posicionados sobre un plano recto. Pero si un objeto
está orientado en torno a un ángulo, por ejemplo
una montaña inclinada, entonces este eje puede también
necesitar ser orientado en un ángulo similar. Un caso especial
de esto es cuando tenemos que los objetos rotan y siempre están
alineados con la cámara (el observador) cuando ésta
se eleva, inclina o rota. Este caso especial se denota con el
valor en el campo axisOfRotation (0,0,0).
Ejemplo:
Group{
children[
Billboard{
axisOfRotation 0.0 1.0 0.0
children[...]
}
Transform {...}
]
}
Collision {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField MFNode children []
exposedField SFBool collide TRUE
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
field SFNode proxy NULL
eventOut SFTime collideTime
}
Por defecto todos los objetos de una escena son colisionables,
por lo tanto la detección de colisiones está siempre
presente. El nodo Collision se comporta exactamente igual al nodo
Group, con el agregado que permite especificar objetos alternativos
a usar para la detección de colisiones.
La colisión en este caso es entendida como aquel caso en que en una escena un objeto puede tapar a otro.
exposedField SFBool collide TRUE
Este campo activa la detección de colisiones (prende y apaga). Si su valor es FALSE, entonces los hijos y sus descendientes no detectarán las colisiones, para que si sean detectadas el valor debe estar en TRUE.
field SFNode proxy NULL
Este campo define una colisión proxy, que es un grupo o un nodo hoja que es usado como un sustituto delos nodos hijos de la colisión durante la detección de éstas. Proxy es usado sólo para la detección de colisiones, si existen nodos que no son de geometría son ignorados.
eventOut SFTime collideTime
Genera un evento especificando el tiempo cuando el usuario intersecta
los nodos colisionables o proxy del nodo Collision.
Los browsers serán los encargados de definir que ocurre
cuando el usuario navega en un objeto colisionable. Por ejemplo
cuando el usuario está lo demasiado cerca de un objeto
como para activar una colisión, el browser puede hacer
que el usuario rebote, o se deslice a lo largo de la superficie.
Group {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField MFNode children []
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
}
Este nodo crea un grupo conformado por un número cualquiera
de nodos hijos. Este nodo es equivalente al Transform, sin los
campos de transformación.
Transform {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField SFVec3f center 0 0 0
exposedField MFNode children []
exposedField SFRotation rotation 0 0 1 0
exposedField SFVec3f scale 1 1 1
exposedField SFRotation scaleOrientation 0 0 1 0
exposedField SFVec3f translation 0 0 0
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
}
Este nodo crea un grupo, como el nodo Group, pero además define un sistema de coordenadas para los nodos hijos que es relativo al sistema de coordenadas de los padres.
exposedField SFVec3f translation 0 0 0
Este campo permite una traslación de una figura geométrica tridimensional consistente de una escala no uniforme en torno a un punto arbitrario.
exposedField SFRotation rotation 0 0 1 0
Este campo especifica una rotación del sistema de coordenadas, en torno a un punto y un eje.
exposedField SFVec3f scale 1 1 1
Este campo especifica una escala no uniforme para el sistema coordenado.
exposedField SFVec3f center 0 0 0
Este campo especifica una traslación desde el origen del sistema de coordenadas local (0,0,0).
exposedField SFRotation scaleOrientation 0 0 1 0
Este campo especifica una rotación del sistema de coordenadas
antes de escalarlo (al especificar escalas en orientaciones arbitrarias).
Este campo se aplica sólo en la operación de especificar
una escala.
Ejemplo:
Transform{
translation 4.0 0.0 0.0
rotation 0.0 1.0 0.0 0.785
scale 0.5 0.5 0.5
children [...]
}
Inline {
exposedField MFString url []
field SFVec3f bboxCenter 0 0 0
field SFVec3f bboxSize -1 -1 -1
}
Este nodo es similar a Group, pero crea un grupo especial. Los
nodos hijos son leídos desde otro archivo VRML, seleccionado
por medio de una URL. Todos los nodos hijo en el grupo son mostrados.
Ejemplo:
Inline{
url "mesa.wrl"
}
LOD {
exposedField MFNode level []
field SFVec3f center 0 0 0
field MFFloat range []
}
Este nodo es usado para permitir que los browsers puedan pasar entre varias representaciones de objetos automáticamente. Con este nodo podemos por ejemplo reducir el tiempo de carga de un archivo, al cargar primero los modelos simples; y además podemos mejorar la calidad de la estructura general del archivo, al usar modelos simples para objetos muy alejados.
exposedField MFNode level []
Este campo contiene nodos que representan el mismo objeto u objetos
en varios niveles de detalle, desde el alto al bajo nivel de detalle.
Switch {
exposedField MFNode choice []
exposedField SFInt32 whichChoice -1
}
Este nodo define a un grupo de nodos y sólo dibuja a un miembro de ese grupo, que ha sido previamente seleccionado.
exposedField SFInt32 whichChoice -1
Este campo especifica el índice del nodo hijo a atravesar,
donde el primer nodo hijo tiene índice 0. Si este valor
es menor que cero o mayor que el número de nodos en el
campo choise, entonces ninguno es elegido.
Ejemplo:
LOD{
range [...]
center 0 0 0
level[...]
}
Background {
eventIn SFBool set_bind
exposedField MFFloat groundAngle []
exposedfield MFColor groundColor []
exposedField MFString backUrl []
exposedField MFString bottomUrl []
exposedField MFString frontUrl []
exposedField MFString leftUrl []
exposedField MFString rightUrl []
exposedField MFString topUrl []
exposedField MFFloat skyAngle []
exposedField MFColor skyColor [ 0 0 0 ]
eventOut SFBool isBound
}
Este nodo es usado para especificar un color que simule cielo y tierra o un panorama que es empleado detrás de toda la geometría en la escena y en frente de el cielo y la tierra.
exposedField MFColor skyColor [ 0 0 0 ]
Este campo especifica el color del cielo en los diversos ángulos de la esfera del círculo. El primer valor de este campo especifica el color del cielo en 0.0 grados sexagesimales (desde el punto de vista del observador).
exposedField MFFloat skyAngle []
Este campo especifica los ángulos desde el polo norte,
en los cuales círculos concéntricos de color aparecen.
El polo norte de la esfera es implícitamente definido en los 0.0 grados, el horizonte como pi/2 radianes y el polo sur como pi radianes. skyAngle va en el rango de 0.0 a pi radianes.
exposedfield MFColor groundColor []
Este campo especifica el color del piso en los diversos ángulos de la esfera del piso. El primer valor de este campo especifica el color del piso en 0.0 grados sexagesimales, el polo sur.
exposedField MFFloat groundAngle []
Este campo especifica los ángulos del polo sur, donde los círculos concéntricos de color aparecen. El polo sur de la esfera es implícitamente definido como 0.0 grados y con restricción desde 0.0 a pi. El primer valor de color es para el polo sur, el cual no es especificado en el campo groundAngle. Si el último valor de groundAngle es menor que pi , entonces la región entre el último groundAngle y el polo norte es invisible.
exposedField MFString backUrl []
exposedField MFString bottomUrl []
exposedField MFString frontUrl []
exposedField MFString leftUrl []
exposedField MFString rightUrl []
exposedField MFString topUrl []
Estos campos especifican un grupo de imágenes que definen
un panorama de fondo, en el escenario creado. El panorama consiste
de 6 imágenes.
Frecuentemente las imágenes bottonUrl y topUrl no son especificadas,
las cuales permiten definir un piso y un cielo a mostrar. Las
otras cuatro nos pueden servir para especificar montañas
u otros escenarios distantes. Por defecto no existen imágenes
de panorama. Los Browsers requieren soportar los formatos de archivo
JPEG, PNG y GIF, los cuales serán referenciados por url.
El primer nodo Background encontrado durante la lectura del archivo
wrl es usado como el fondo original cuando el archivo está
cargado (evento set_bind TRUE).
Ejemplo:
Background{
groundColor [0.14 0.28 0, 0.09 0.11 0]
groundAngle[0.785]
skyColor[0.02 0 0.26, 0.2 0 0.65]
skyAngle[0.785]
#Especificación de un ambiente
Fog {
exposedField SFColor color 1 1 1
exposedField SFString fogType "LINEAR"
exposedField SFFloat visibilityRange 1000
eventIn SFBool set_bind
eventOut SFBool isBound
}
Este nodo es un efecto especial que permite la simulación de atmósferas con el color especificado por el campo color, este efecto (de un cierto desteñido) irá dado por las distancias de los objetos, con respecto al observador.
exposedField SFFloat visibilityRange 1000
Este campo especifica la distancia (en el espacio coordenado del nodo Fog), en la cual los objetos son totalmente oscurecidos por la penumbra. Un valor de visibilityRange de 0.0 o menos desabilita el nodo Fog.
exposedField SFString fogType "LINEAR"
Este campo controla cuanto del color de la niebla es combinado
con el objeto como una función de distancia. Si el valor
es "LINEAR" (el valor por defecto), entonces la combinación
es una función lineal de la distancia, resultando un efecto
de profundidad. Si el valor es "EXPONENTIAL", entonces
se toma una función exponencial como incremento, resultando
una apariencia de niebla más natural.
Para mejores resultados visuales, el nodo Background (el cual
no es afectado por el nodo Fog), puede tener el mismo color del
nodo Fog.
NavigationInfo {
eventIn SFBool set_bind
exposedField MFFloat avatarSize [ 0.25, 1.6, 0.75 ]
exposedField SFBool headlight TRUE
exposedField SFFloat speed 1.0
exposedField MFString type "WALK"
exposedField SFFloat visibilityLimit 0.0
eventOut SFBool isBound
}
Este nodo da indicaciones al browser (sugerencias) VRML acerca del mejor camino para navegar en el mundo y el mejor tamaño y velocidad para el observador. El tamaño del observador es importante para la detección de colisiones.
exposedField MFString type "WALK"
Este campo especifica el tipo de navegación a usar en el
mundo. Los tipos que todos los visualizadores VRML pueden soportar
son: "WALK", "EXAMINE", "FLY", y
"NONE".
En WALK el explorador estará sintiéndose como que está caminando en el interior del mundo virtual. EXAMINE es usado generalmente para ver objetos individuales. FLY da la idea de estar volando en el interior del mundo virtual, no están los pies en tierra.
exposedField MFFloat avatarSize [ 0.25, 1.6, 0.75 ]
Este campo especifica parámetros a usar para determinar
las dimensiones del visualizador, con el propósito del
manejo de detección de colisiones.
El primer valor permite establecer la distancia permitida entre la posición del usuario y alguna colisión geométrica (especificada por colisión), antes de que la colisión sea detectada. El segundo valor establece la altura por encima del terreno, en que la cámara puede ser mantenida. El tercer valor establece la altura de objetos sobre los cuales la cámara puede pasar.
exposedField SFFloat visibilityLimit 0.0
Este campo setea la distancia más lejana en la cual el visualizador puede ver. El valor 0.0 (el por defecto), indica un limite de visibilidad infinito.
exposedField SFBool headlight TRUE
Este campo especifica si un browser puede encender un headlight.
Un headligth es una luz direccionada en la que siempre los puntos
que caen en la dirección del usuario son vistos. El valor
TRUE permite al browser tener un headligth, posiblemente usando
su propia interface de control para encendido y apagado. El headligth
puede tener intensidad 1, color 1 1 1, y dirección 0 0
-1.
Ejemplo:
NavigationInfo{
avatarSize [0.25, 1.6, 0.75]
headlight TRUE
speed 1.0
type "WALK"
}
Viewpoint {
eventIn SFBool set_bind
exposedField SFFloat fieldOfView 0.785398
exposedField SFBool jump TRUE
exposedField SFRotation orientation 0 0 1 0
exposedField SFVec3f position 0 0 0
field SFString description ""
eventOut SFTime bindTime_changed
eventOut SFBool isBound
}
Este nodo define una ubicación especifica en un sistema de coordenadas local desde el cual el usuario puede ver la escena. Los browsers VRML pueden presentar una lista de Viewpoints, usando sus strings de descripción.
exposedField SFVec3f position 0 0 0
exposedField SFRotation orientation 0 0 1 0
Estos campos especifican ubicaciones relativas en el sistema de coordenadas; position es relativa al origen del sistema de coordenadas (0,0,0), mientras que orientation especifica una orientación relativa a la orientación por defecto.
exposedField SFBool jump TRUE
Este campo especifica si el browser usa vistas "saltadas" (o animadas) en la posición y orientación del Viewpoint
exposedField SFFloat fieldOfView 0.785398
Este campo especifica un campo preferido de vista desde el punto de vista en el que el nodo Viewpoint está actuando, este valor es dado en radianes. El rango de este valor es mayor que cero y menor que pi; el valor por defecto corresponde a 45 grados sexagesimales.
field SFString description ""
Este campo identifica Viewpoints que son recomendados para ser
públicamente accesables a través de la interfaz
de usuario del browser (ej. Viewpoints menú). El string
de este campo puede ser mostrado, si esta función es implementada.
Esto es recomendado con el objeto que el browser se mueva hacia
aquel Viewpoint, cuando la descripción es seleccionada.
El primer Viewpoint encontrado en el archivo es automáticamente
tomado (recibido un evento set_bind TRUE) y es usado como la posición
inicial del usuario cuando ha penetrado al mundo virtual.
La expresión URL ".../scene.wrl#ViewpointName"
especifica que el usuario inicialmente cuando entre a "scene.wrl",
el primer Viewpoint que verá será aquel definido
como "DEF ViewpointName Viewpoint { ... }".
Ejemplo:
Viewpoint{
position 0 0 10
orientation 0 0 10
description "Valores por defecto"
}
Appearance {
exposedField SFNode material NULL
exposedField SFNode texture NULL
exposedField SFNode textureTransform NULL
}
Este nodo especifica las propiedades visibles de geometría por medio de la definición de los nodos material y texture. El valor para algunos de los campos en estos nodos puede ser NULL. Sin embargo si el valor del campo no es NULL, éste debe contener un tipo específico de nodo.
exposedField SFNode material NULL
Este campo si es especificado, debe contener un nodo Material. Si el campo es NULL o no especificado, la iluminación se apaga. (todas las luces son ignoradas durante la renderización del objeto que referencia Appearance).
exposedField SFNode texture NULL
Este campo, si es especificado, debe contener uno de los varios tipos de nodos de textura (ImageTexture, MovieTexture, PixelTexture). Si este nodo es NULL o no especificado, el objeto que referencia Appearance no es texturizado.
exposedField SFNode textureTransform NULL
Este campo si es especificado, debe contener un nodo TextureTransform.
Si este campo es NULL o no especificado, o si el campo texture
es NULL o no especificado, entonces textureTransform no tiene
efecto
Ejemplo:
Shape {appearance Appearance {
material ...
}
geometry ...
}
FontStyle {
field SFString family "SERIF"
field SFBool horizontal TRUE
field SFString justify "BEGIN"
field SFString language ""
field SFBool leftToRight TRUE
field SFFloat size 1.0
field SFFloat spacing 1.0
field SFString style ""
field SFBool topToBottom TRUE
}
Este nodo define el tamaño, tipo, familia y estilo de un
tipo de texto, también la dirección de la cadena
de texto, y algunas técnicas de renderización que
deben ser usadas para los textos que no están escritos
en inglés.
Este nodo sólo puede aparecer en el campo fontStyle de un nodo Text.
field SFFloat size 1.0
Este campo especifica el tamaño de los caracteres.
field SFString family "SERIF"
Este campo contiene las fuentes para las letras, así por ejemplo "SERIF" (el valor por defecto), es para las Times Roman; "SANS" es para las Helvética; "TYPEWRITER" es para las Courier.
field SFString style ""
Este campo contiene los estilos que pueden ser: un string vacío (el valor por defecto); "BOLD" para negritas; "ITALIC" para tipo itálico; o "BOLD ITALIC" para tipo itálico y negrita.
field SFBool horizontal TRUE
field SFBool leftToRight TRUE
field SFBool topToBottom TRUE
Estos campos indican la dirección del texto:
field SFString justify "BEGIN"
Este campo determina el tipo de justificación para el texto. Los valores pueden ser "BEGIN", "MIDDLE" Y "END". "BEGIN" es para la justificación a la izquierda;"END" es para la justificación a la derecha; "MIDLE" es para la justificación centrada.
field SFFloat spacing 1.0
Este campo determina el espaciamiento entre las palabras.
Ejemplo:
FontStyle{
family "SERIF"
style "BOLD"
size 1.0
spazing 1.0
}
ImageTexture {
exposedField MFString url []
field SFBool repeatS TRUE
field SFBool repeatT TRUE
}
Este nodo define un mapeamiento de textura y parámetros
para éste mapeamiento.
La textura es leida desde una URL especificada por el campo url.
Este nodo soporta los formatos GIF, JPEG y PNG.
exposedField MFString url []
Este campo especificará la textura a leer.
field SFBool repeatS TRUE
field SFBool repeatT TRUE
Estos campos especifican como las texturas van a ser envueltas
en las direcciones S (horizontal) y T (vertical). Si repeatS es
TRUE (el defecto), el mapeamiento de la textura es repetido fuera
del rango de éstas (0 a 1) en la dirección S bajo
la cual la figura va a ser rellenada. Si repeatS es FALSE, las
coordenadas de textura son arrinconadas en la dirección
S. El campo repeatT es análogo.
Ejemplo:
Appearance{
material Material{}
texture ImageTexture{url "mimono.jpg"}
}
Material {
exposedField SFFloat ambientIntensity 0.2
exposedField SFColor diffuseColor 0.8 0.8 0.8
exposedField SFColor emissiveColor 0 0 0
exposedField SFFloat shininess 0.2
exposedField SFColor specularColor 0 0 0
exposedField SFFloat transparency 0
}
Este nodo define las propiedades del material para los nodos de
geometría asociados.
Los campos en el nodo material determinan el modo de reflejo de la luz lejos de un objeto causante de un color.
exposedField SFColor diffuseColor 0.8 0.8 0.8
Este campo todas las fuentes de color VRML, dependiendo del ángulo de la superficie respecto a la fuente de luz. Mientras más se acerquen las caras de la superficie, mayor difusión de luz se reflejará.
exposedField SFFloat ambientIntensity 0.2
Este campo especifica cuanta luz del ambiente, desde las fuentes de luz de la superficie pueden ser reflejadas. La iluminación del ambiente es omnidireccional y depende sólo del número de fuentes de luz, no de sus posiciones respecto a la superficie. El color del ambiente es calculado como ambientIntensity*diffuseColor.
exposedField SFFloat shininess 0.2
exposedField SFColor specularColor 0 0 0
Estos campos determinan la iluminación especular. Bajos valores de shininess producen incandescencias suaves, mientras que valores medianos resultan en iluminaciones agudas.
exposedField SFColor emissiveColor 0 0 0
Este campo permite modelar objetos incandescentes.
exposedField SFFloat transparency 0
Este campo actúa como borrando el objeto. Con el valor
1.0 el objeto es completamente transparente con 0.0 es completamente
opaco.
MovieTexture {
exposedField SFBool loop FALSE
exposedField SFFloat speed 1
exposedField SFTime startTime 0
exposedField SFTime stopTime 0
exposedField MFString url []
field SFBool repeatS TRUE
field SFBool repeatT TRUE
eventOut SFFloat duration_changed
eventOut SFBool isActive
}
Este nodo define un mapeamiento de textura animado (contenido en un archivo de animación) y parámetros para el control de la animación y el mapeamiento de la textura.
exposedField MFString url []
Este campo permite referenciar el archivo de animación a usar, se pueden usar formatos de archivo MPEG1-Systems (audio y video) o MPEG1-Video (sólo video).
eventOut SFFloat duration_changed
Este evento indica la duración del video en segundos. El valor de este evento puede ser leido (via un Script) para determinar la duración de un video. Un valor -1 indica que el video no ha sido cargado, o que no está disponible por alguna razón.
exposedField SFTime startTime 0
Este campo indica el momento en el que los MovieTextures pueden partir. En ese tiempo el video es considerado como iniciado, el evento isActive es activado, y el frame muestra el video.
exposedField SFTime stopTime 0
Este campo indica cuando el video se detendrá, en ese momento el evento isActive FALSE es activado. stopTime es ignorado si loop es FALSE.
exposedField SFFloat speed 1
Este campo indica cuan rápido el video será desplegado. Un valor de 2, indicará que el video está siendo desplegado el doble de su velocidad normal.
exposedField SFBool loop FALSE
Este campo indica si el video será o no repetido una vez
que stopTime sea activado.
Ejemplo:
Appearance{
texture MovieTexture{
url "mimono.jpg"
speed 1
loop FALSE
}
}
PixelTexture {
exposedField SFImage image 0 0 0
field SFBool repeatS TRUE
field SFBool repeatT TRUE
}
Este nodo define una imagen bidimensional, basados en una textura mapeada como un arreglo de valores de pixel y parámetros.
field SFBool repeatS TRUE
field SFBool repeatT TRUE
Estos campos especifican como las texturas van a ser envueltas
en las direcciones S y T. Si repeatS es TRUE (el defecto), el
mapeamiento de la textura es repetido fuera del rango de éstas
(0 a 1) en la dirección S bajo la cual la figura va a ser
rellenada. Si repeatS es FALSE, las coordenadas de textura son
arrinconadas en la dirección S. El campo repeatT es análogo.
Ejemplo:
PixelTexture{
image 2 4 3 0xFF0000 0x000FF00
0 0 0 0xFFFFFF 0xFFFF00
}
TextureTransform {
exposedField SFVec2f center 0 0
exposedField SFFloat rotation 0
exposedField SFVec2f scale 1 1
exposedField SFVec2f translation 0 0
}
Este nodo define una transformación bidimensional que es
aplicada a las coordenadas de la textura. Este nodo sólo
se aplica en el campo textureTransform del nodo Appearance y afecta
al modo en que las texturas son aplicadas a las superficies del
nodo Geometry asociado. La transformación consiste de una
escala no uniforme cerca de un punto central arbitrario, una rotación
cerca del mismo punto y una traslación. Esto permite usar
los cambios de tamaño y posición de las texturas
en las figuras.
Ejemplo:
TextureTransform{
rotation 0.39 #22 grados sexagesimales
scale 1.0 1.4
}
AudioClip {
exposedField SFString description ""
exposedField SFBool loop FALSE
exposedField SFFloat pitch 1.0
exposedField SFTime startTime 0
exposedField SFTime stopTime 0
exposedField MFString url []
eventOut SFTime duration_changed
eventOut SFBool isActive
}
Este nodo representa un sonido que es cargado por el browser, puede empezar en cualquier momento y tiene una duración conocida. Puede ser usado como la fuente de audio para algún nodo Sound (como pensar que es el tocacintas y el nodo Sound el parlante).
exposedField MFString url []
Este campo permite referenciar el archivo de audio a usar, se pueden usar formatos de archivo wav en el formato descomprimido PCM. También se puede usar el formato MIDI.
exposedField SFString description ""
Este campo contiene una descripción del sonido empleado, ésta puede ser mostrada en el momento en que éste es activado.
exposedField SFBool loop FALSE
Este campo especifica si el sonido es constantemente repetido o no, por defecto su valor es FALSE, lo que indica que no es repetido (sólo se toca una vez).
exposedField SFTime startTime 0
Este campo especifica el momento en el que el sonido comienza a ser emitido.
exposedField SFTime stopTime 0
Este campo especifica el momento en que el sonido es apagado, luego de un cierto tiempo de estar encendido.
exposedField SFFloat pitch 1.0
Este campo especifica un múltiplo para la proporción en la cual el sonido es emitido, va en el rango de 0 a más infinito. El cambio de este campo afecta el tono del sonido. Si pitch toma el valor 2.0 el sonido puede sonar una octava más alto que lo normal.
eventOut SFBool isActive
Este campo puede ser usado por otros nodos para determinar si
el clip es actualmente ocupado por un nodo Sound.
Ejemplo:
AudioClip{
url["the_wall.wav"]
loop FALSE
startTime 0
}
DirectionalLight {
exposedField SFFloat ambientIntensity 0
exposedField SFColor color 1 1 1
exposedField SFVec3f direction 0 0 -1
exposedField SFFloat intensity 1
exposedField SFBool on TRUE
}
Este nodo ilumina apuntando a una dirección específica.
Ejemplo:
DirectionalLight{
#luz estándar
direction 1.0 0.0 0.0
}
PointLight {
exposedField SFFloat ambientIntensity 0
exposedField SFVec3f attenuation 1 0 0
exposedField SFColor color 1 1 1
exposedField SFFloat intensity 1
exposedField SFVec3f location 0 0 0
exposedField SFBool on TRUE
exposedField SFFloat radius 100
}
Este nodo define un punto luminoso en una ubicación tridimensional
fija. Este punto ilumina igualmente en todas direcciones, por
lo que se lo llama omnidireccional.
Ejemplo:
PointLight{
#estándares
location 0.0 0.0 0.0
radius 1.0
attenuation 1.0 0.0 0.0
}
Script {
exposedField MFString url []
field SFBool directOutput FALSE
field SFBool mustEvaluate FALSE
# y algún número de:
eventIn eventTypeName eventName
field fieldTypeName fieldName initialValue
eventOut eventTypeName eventName
}
Este nodo es usado para programar el comportamiento en una escena.
Estos nodos típicamente reciben eventos que significan
un cambio o acciones para el usuario, contienen un módulo
de programa que presenta algún algoritmo, y cambios de
efecto, donde algunos de éstos además van enviando
eventos de salida en la escena.
Cada nodo Script tiene asociado un programa, referenciado por
el campo url.
Shape {
exposedField SFNode appearance NULL
exposedField SFNode geometry NULL
}
Este nodo construye una figura. Este nodo describe la geometría (forma o estructura) y la apariencia (color y textura).
exposedField SFNode appearance NULL
Este campo contiene un nodo Appearance el que tiene campos material, texture y textureTransforms.
exposedField SFNode geometry NULL
Este campo contiene un nodo de geometría.
Sound {
exposedField SFVec3f direction 0 0 1
exposedField SFFloat intensity 1
exposedField SFVec3f location 0 0 0
exposedField SFFloat maxBack 10
exposedField SFFloat maxFront 10
exposedField SFFloat minBack 1
exposedField SFFloat minFront 1
exposedField SFFloat priority 0
exposedField SFNode source NULL
field SFBool spatialize TRUE
}
Este nodo especifica un lugar en donde el sonido especificado en el nodo AudioClip sonará. Por lo tanto este nodo especifica ubicación, dirección, región de atenuación, intensidad ("espacial" o no).
exposedField SFNode source NULL
Este campo especifica la fuente de sonido para el nodo Sound, si ésta no es especificada el nodo no entregará audio. La fuente de sonido debe apuntar ya sea a un nodo AudioClip o a un MovieTexture. Algunas veces el nodo MovieTexture debe referenciar un formato de video que soporte sonido (Como MPEG1-Systems).
exposedField SFFloat intensity 1
Este campo ajusta el volumen de cada fuente de sonido, en el rango de 0.0 a 1.0; 0.0 es silencio y 1.0 es volumen máximo.
exposedField SFFloat intensity 1
Este campo da al autor algún control acerca de como los sonidos aparecerán durante la ejecución, sobre todo cuando existen diversos de éstos al haber diversos canales disponibles. Las prioridades varían entre 0.0 y 1.0, con 1.0 la más alta prioridad. Para algunas aplicaciones la prioridad 0.0 es usada como sonido normal y 1.0 como sonido para algún evento especial o sonidos que indican algo (usualmente de poca duración), que el autor desea que sean así.
exposedField SFVec3f location 0 0 0
Este campo determina la ubicación de la fuente de sonido
exposedField SFFloat minBack 1
exposedField SFFloat minFront 1
Estos campos determinan el alcance de regiones de intensidad plena de sonido, tanto de frente como por detrás de éste.
exposedField SFFloat maxBack 10
exposedField SFFloat maxFront 10
Estos campos determinan los límites de audibilidad en las
regiones tanto de frente como por detrás del sonido.
Si minFront es igual a minBack y maxFront es igual a maxBack, entonces el sonido es omni-direccional, el vector dirección es ignorado.
field SFBool spatialize TRUE
Este campo setea el tipo de sonido conocido como "espacial".
Ejemplo:
Sound{
source AudioClip {...}
intensity 1
location 0 0 0
direction 0 0 1
spacialize TRUE
}
SpotLight {
exposedField SFFloat ambientIntensity 0
exposedField SFVec3f attenuation 1 0 0
exposedField SFFloat beamWidth 1.570796
exposedField SFColor color 1 1 1
exposedField SFFloat cutOffAngle 0.785398
exposedField SFVec3f direction 0 0 -1
exposedField SFFloat intensity 1
exposedField SFVec3f location 0 0 0
exposedField SFBool on TRUE
exposedField SFFloat radius 100
}
Este nodo define una fuente de iluminación que es puesta
en una ubicación fija en el espacio tridimensional en un
cono a lo largo de una dirección particular.
Ejemplo:
Spotlight{
location 0.0 0.0 0.0
direction 1.0 0.0 0.0
beamWidth 1.57
cutOfAngle 0.785
radius 1.0
attenuation 1.0 0.0 0.0
}
WorldInfo {
field MFString info []
field SFString title ""
}
Este nodo contiene información acerca del mundo construido. Este nodo no presenta ningún efecto en la apariencia del mundo, sólo es para propósitos de documentación.
field SFString title ""
Este campo registra el nombre o título del mundo, los browsers pueden presentar al usuario esta información como una instancia o a través de una ventana.
field MFString info []
Este campo permite guardar información adicional acerca
del mundo virtual hecho, como por ejemplo el autor, derechos de
autor o información de dominio público.
Ejemplo:
WorldInfo{
title "Este mundo loco"
info["Un mundo hecho por José Muñoz", "1996" ]
}
CylinderSensor {
exposedField SFFloat diskAngle 0.262
exposedField SFBool enabled TRUE
exposedField SFFloat maxAngle -1
exposedField SFFloat minAngle 0
exposedField SFRotation offset 0 1 0 0
exposedField SFBool autoOffset TRUE
eventOut SFBool isActive
eventOut SFRotation rotation_changed
eventOut SFVec3f trackPoint_changed
}
Este nodo genera eventos que interpretan un click del usuario en un cilindro virtual.
exposedField SFBool enabled TRUE
Este campo habilita y desabilita el CylinderSensor. Si es TRUE el sensor reacciona frente a los eventos del usuario de una forma adecuada, por el contrario si es falso no lo hace.
PlaneSensor {
exposedField SFBool enabled TRUE
exposedField SFVec2f maxPosition -1 -1
exposedField SFVec2f minPosition 0 0
exposedField SFVec3f offset 0 0 0
exposedField SFBool autoOffset TRUE
eventOut SFBool isActive
eventOut SFVec3f trackPoint_changed
eventOut SFVec3f translation_changed
}
Este nodo genera eventos cuando el usuario hace una traslación por ejemplo con el mouse, en dos dimenciones.
ProximitySensor {
exposedField SFVec3f center 0 0 0
exposedField SFVec3f size 0 0 0
exposedField SFBool enabled TRUE
eventOut SFBool isActive
eventOut SFVec3f position_changed
eventOut SFRotation orientation_changed
eventOut SFTime enterTime
eventOut SFTime exitTime
}
Este nodo genera eventos cuando el usuario entra, sale y se mueve
en una región del espacio (definida por una caja).
SphereSensor {
exposedField SFBool enabled TRUE
exposedField SFRotation offset 0 1 0 0
exposedField SFBool autoOffset TRUE
eventOut SFBool isActive
eventOut SFRotation rotation_changed
eventOut SFVec3f trackPoint_changed
}
Este nodo mapea un movimiento de rotación alrededor del
centro de aquel espacio local.
TimeSensor {
exposedField SFTime cycleInterval 1
exposedField SFBool enabled TRUE
exposedField SFBool loop FALSE
exposedField SFTime startTime 0
exposedField SFTime stopTime 0
eventOut SFTime cycleTime
eventOut SFFloat fraction_changed
eventOut SFBool isActive
eventOut SFTime time
}
Este nodo genera eventos que en un tiempo dado o en intervalos
dados de tiempo.
Este nodo es usado para conducir simulaciones contínuas
y animaciones, o también actividades periódicas
y/o eventos simples tales como la alarma de un reloj.
Para esto TimeSensor controla el tiempo de inicio, final y el largo del ciclo; además si este ciclo es periódico o no.
TouchSensor {
exposedField SFBool enabled TRUE
eventOut SFVec3f hitNormal_changed
eventOut SFVec3f hitPoint_changed
eventOut SFVec2f hitTexCoord_changed
eventOut SFBool isActive
eventOut SFBool isOver
eventOut SFTime touchTime
}
Este nodo rastrea la ubicación y el estado de los puntos creados y detecta cuando el usuario apunta a una geometría contenida por el grupo padre del TouchSensor. Este sensor puede ser activado o desactivado enviando un evento de habilitación con un valor TRUE o FALSE. Si el TouchSensor es desabilitado no rastreará las entradas del usuario o el envío de eventos de salida.
VisibilitySensor {
exposedField SFVec3f center 0 0 0
exposedField SFBool enabled TRUE
exposedField SFVec3f size 0 0 0
eventOut SFTime enterTime
eventOut SFTime exitTime
eventOut SFBool isActive
}
Este nodo permite visualizar una región. Es típicamente
usado para detectar cuando el usuario puede ver la especificación
de un objeto o región en la escena y la activación
o desactivación de algunas acciones o animaciones.
ColorInterpolator {
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFColor keyValue []
eventOut SFColor value_changed
}
Este nodo interpola entre medio de un conjunto de valores clave
MFColor, producidos por un SFColor (RGB) en un evento value_changed.
El número de colores en el campo keyValue debe ser igual
al número de keyframes en el campo key. El campo keyValue
y el valor del evento value_changed son definidos en el espacio
de colores RGB.
CoordinateInterpolator {
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFVec3f keyValue []
eventOut MFVec3f value_changed
}
Este nodo interpola posiciones entre medio de un conjunto de valores
MFVec3f. Esto puede ser apropiado para interpolar posiciones de
coordenadas para morfismos geométricos.
El número de coordenadas en el campo keyValue debe ser un múltiplo entero del número de keyframes en el campo key, estos múltiplos enteros definen cuantas coordenadas pueden ser contenidas en los eventos value_changed.
NormalInterpolator {
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFVec3f keyValue []
eventOut MFVec3f value_changed
}
Este nodo interpola entre medio de un conjunto de valores Vec3f,
convenientes para transformar vectores normales. Todos los vectores
de salida pueden estar normalizados por el interpolador.
El número de normales en el campo keyValue debe ser un
múltiplo entero del número de keyframes en el campo
key, estos múltiplos enteros definen cuantos normales pueden
ser contenidas en los eventos value_changed.
OrientationInterpolator {
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFRotation keyValue []
eventOut SFRotation value_changed
}
Este nodo interpola entre medio de un conjunto de valores SFRotation. Las rotaciones son absolutas en el espacio del objeto y son en consecuencia no acumulativos. El campo keyValue debe contener exactamente tantas rotaciones como keyframes en el campo key, o sino se puede generar un error y los resultados ser indefinidos.
PositionInterpolator {
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFVec3f keyValue []
eventOut SFVec3f value_changed
}
Este nodo interpola entre medio de un conjunto de valores SFVec3f.
Esto es apropiado para interpolación de traslaciones. Este
nodo interpola entre medio de un grupo de valores SFVec3f. Los
vectores son interpretados como posiciones absolutas en el espacio
del objeto. El campo keyValue debe contener exactamente tantos
valores como el campo field.
ScalarInterpolator {
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFFloat keyValue []
eventOut SFFloat value_changed
}
Este nodo interpola entre medio de un conjunto de valores SFFloat.
Este interpolador es apropiado para muchos parámetros definidos
usando un valor simple de punto flotante, tales como width, radius,
intensity, etc. El campo keyValue debe contener exactamente tantos
números como keyframes en el campo field.
Color {
exposedField MFColor color []
}
Este nodo es usado como el valor del campo color en los nodos
IndexedFaseSet, IndexedLineSet, PointSet y ElevationGrid. Este
nodo tendrá una lista de valores RGB, que serán
equivalentes a sus colores.
Coordinate {
exposedField MFVec3f point []
}
Este nodo define el grupo de coordenadas tridimensionales a usarse
en los campos coord de los nodos de geometría (tales como
IndexedFaceSet, IndexedLineSet y PointSet).
Normal {
exposedField MFVec3f vector []
}
Este nodo define un conjunto de vectores normales a ser usados
en el campo vector de algún nodo de geometría (por
ejemplo: IndexedFaceSet, ElevationGrid). Este nodo contiene múltiples
valores para el vector.
TextureCoordinate {
exposedField MFVec2f point []
}
Este nodo define un conjunto de coordenadas bidimensionales a
usar por los nodos de geometría (ej: IndexedFaceSet y ElevationGrid).
El rango de las coordenadas de textura va de 0 a 1 a través
de la imagen texturizada. La coordenada horizontal S es especificada
como la primera, seguida de la coordenada vertical T.