RUTAS:

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.