Realidad Virtual
información adicional
jaume ferrer i rosera

<< índice FAQs

 

1.ROUTE. Uso de sufijos y prefijos _changed y set_, eventIn, eventOut y exposedField

Consulta de Antonio Laiz:
Nos vamos al tema 14, ejemplo 3. Los ROUTE nos los entiendo: el primero se adapta pero no se por qué sale fraction y en donde está explicado; en el segundo value_change, de donde sale el value; en diffuseColor le falta el set_.

Respuesta:
El ejemplo comentado corresponde al capítulo 14, ejemplo 3, del tutorial de VRML del Dr. Narcís Parés, que transcribo a continuación:

DEF motorColor TimeSensor{
loop TRUE
cycleInterval 5
}

DEF Arcoiris ColorInterpolator {
key [ 0, 0.3, 0.6, 1]
keyValue [ 1 0 0, 0 1 0, 0 0 1, 1 0 0]
}

DEF CuboColorCambiante Shape {
geometry Box { size 2 2 2 }
appearance Appearance { material DEF materialColorCambiante Material {} }
}

ROUTE motorColor.fraction_changed TO Arcoiris.set_fraction
ROUTE Arcoiris.value_changed TO materialColorCambiante.diffuseColor

En el primer ROUTE, motorColor es un nodo de tipo TimeSensor. Este nodo dispone de un campo de tipo eventOut denominado fraction_changed. Tal y como se explica en el capítulo 14 del tutorial:

Un TimeSensor da constantemente, como evento de salida (eventOut), la fracción de ciclo que ha transcurrido. Esto lo hace mediante el eventOut SFFloat fraction_changed que es un valor entre 0.0 y 1.0

Arcoiris es un nodo de tipo ColorInterpolator. Este nodo dispone de un campo de tipo eventIn denominado set_fraction. Tal y como se explica en el capítulo 14 del tutorial, enlazando el fraction_changed de un TimeSensor con el set_fraction de un ColorInterpolator se consigue que:

cada "tic-tac" del TimeSensor haga incrementar en una pequeña porción el avance del ColorInterpolator

Finalmente, en el segundo ROUTE, diffuseColor no lleva el set_ aunque es un campo que recibe información porque es de tipo exposedField, y esta modalidad de campos no llevan sufijos ni prefijos porque tanto sirven para recibir como para enviar datos (ver explicación en el capítulo 2 del tutorial).

Recomendación:

Puesto que cuando usamos nodos tan sólo escribimos el código de aquellos campos cuyos valores necesitamos definir, para conocer cuántos campos y de qué tipo existen realmente en un nodo os recomiendo que os conectéis a la siguiente dirección, donde encontraréis las especificaciones detalladas al respecto:

http://www.vrml.org/Specifications/VRML97/part1/nodesRef.html


Así mismo, para comprender los distintos tipos de campos usados en VRML, consultad:

http://www.vrml.org/Specifications/VRML97/part1/fieldsRef.html