Input Handling inside Ventuz


General

From Ventuz 3 onward, a dedicated Input Subsystem has been introduced to Ventuz. Its responsibility is to handle receiving, translating and sending of input information coming from standard windows input hardware devices:

All input information coming from those types of devices is internally handled in the same fashion:

  1. The information from the hardware device is polled/queried/received and translated to internal input event atoms.
  2. During rendering of a frame, the collected input atoms are polled by the input subsystem and transmitted to internal virtual device instances, one for keyboard, one for touch, one for each joystick, and so on.
  3. The virtual devices push their information to the relevant nodes (i.e. the I/O Keyboard Node) or in the case of touch information the interaction nodes (i.e. Touch Transformation Node).

By introducing this serialization into atoms and dispatching of the collected information, Ventuz is capable of distributing input information from one machine to a whole cluster without any additional logic in the scene. Where in previous versions it was the responsibility of the author to translate input information to OSC messages to get them from one machine to another, it now is as easy as setting the right option in the Machine Configuration.

Cluster Configuration

Open the Machine Configuration under Menu/Tools/Machine Configuration and then go to Interaction/ClusterNetworking.


If Single Machine Setup is selected, the event atoms will directly be handed over from the hardware devices to the virtual devices and no network traffic is involved. When a Ventuz scene is running on a cluster of machines, all input devices that are used in the scene should be connected to one machine, the Master. Selecting master in the configuration will cause this machine to serialize the atoms to network packages instead of passing them to the virtual devices by memory. All Client machines on the other hand will ignore all hardware input devices connected to them in the sense that their input will not be received by the respective Ventuz nodes. Instead, they open a network port and list to information coming from the Master machine.

The input information will be broadcasted to the network on a dedicated ip and port. Make sure routing and firewall settings do not prevent those packages to reach the clients.


All machines in the cluster, including the Master, will only send input information to the scene nodes that has been received over the network connection. In case network latencies prevent the information to be received in the same frame, the option to add a Processing Delay has been implemented. If an input event has been broadcasted in frame N and the processing delay is 3, the input event will be cached until frame N+3 is being rendered.

To synchronize input processing in cluster mode, processing is done based on the internal Cluster Clock. Make sure Ventuz is running in Cluster-Mode.

]

Non-Standard Hardware Devices

The above mechanism only works for the standard windows input devices. For information on how to connect Ventuz to other devices, see the pages on Open Sound Control, TUIO or External Communication/Remoting.