Developing a New Module

This page is work in progress and will be updated over time.

The ICT Virtual Human toolkit is based on the broader architecture as defined here. Every abstract module defines a function and API which can be implemented. The Toolkit modules are examples of these implementations, but all can be substituted by alternatives as long as the API's are implemented.

Most modules communicate by sending and receiving messages (the exceptions are the integration between SmartBody and the renderer, and AcquireSpeech and a speech server). The Toolkit uses ActiveMQ for these messages and contains a VHMSG library that facilities development of new modules in C++, C#, Java, Lisp and TCL. New modules should use this library to receive and send messages to other modules within the system.

Each component should list the messages it is sending and receiving. This can be used as a guideline for developing new modules. For example, the AcquireSpeech sends vrSpeech messages to the NPCEditor, who sends vrExpress messages to the NonVerbal Behavior Generator. The NonVerbal Behavior Generator in turn sends vrSpeak messages to SmartBody, who sends a request to the /wiki/spaces/VH/pages/30081796 engine, and then directly manipulates the skeleton in the renderer.

See the Virtual Human Messaging page for a description of all messages. Use the Logger when running the Toolkit scenario to see more concrete examples of the interaction between modules.