La conección entre un nodo generador de eventos y el nodo
que los recibe se llama una ruta. Un nodo que produce eventos
de un tipo dado puede ser ruteado a nodos que reciben eventos
del mismo tipo usando la siguiente sintaxis:
ROUTE NodeName.eventOutName_changed TO NodeName.set_eventInName.
El prefijo set_ y el sufijo _changed son convenciones recomendadas,
no reglas estrictas. Así entonces cuando creamos prototipos
o scripts, los nombres de los eventIns y los eventOuts pueden
tener diversos nombres identificatorios legales. Debemos notar
sin embargo, que los exposedField implícitamente definen
set_xxx como un eventIn, xxx_changed como un eventOut, y xxx como
un campo para un exposedField dado nombrado como xxx. A los diseñadores
se les recomienda fuertemente esto cuando crean nuevos tipos.
Pero existen tres excepciones en la especificación VRML
a esta recomendación: eventos Bool, eventos Time y eventos
children. Todos los SF/MFBool eventIns y eventOuts son nombrados
isFoo (ejemplo: isActive). Todos los SF/MFTime eventIns y eventOuts
son nombrados fooTime (ejemplo: enterTime). Los eventIns en grupos
para sumar y quitar hijos son nombrados: addChildren y removeChildren.
Las rutas no son nodos; ROUTE es simplemente una construcción
sintáctica para el establecimiento de un camino para los
eventos entre los nodos. Las declaraciones ROUTE pueden aparecer
en cualquier lugar de un archivo .wrl o implementación
de prototipo, o también pueden aparecer dentro de un nodo
en donde sea que los campos puedan aparecer.
Los tipos de los eventIn y eventOut deben ser exactamente iguales,
por ejemplo es ilegal una ruta desde un SFFloat a un SFInt32 o
desde un SFFloat a un MFFloat.
Las rutas deben ser establecidas solo desde eventOuts a eventIns.