VHToolkit : Bonebus

Bonebus is a TCP/UDP protocol and library to communicate between SmartBody and a renderer.

It allows SmartBody to run in a separate process than the renderer, or even a separate machine.

Bonebus transmits the following data:

  • commands to create & remove a character from the scene (TCP)
  • individual bone position & rotation data at real-time rates (with a crude caching mechanism in place) (UDP)
  • character world_offset position & rotation data at real-time rates (UDP)
  • discreet facial viseme/FAC commands, telling the renderer to set a viseme to the given weight, with the appropriate blend time (TCP)
  • various system-level commands for renderers without VHMsg support.

In the initial implementation, the renderer acts as the server, and SmartBody acts as the client.

Bonebus-compatible renderers have been implemented using Gamebryo, Ogre, Panda3D, Unreal Tournament 2004, and Worldviz.

---------

<this is not accurate, but included here to be re-integrated into the above>

A small library that functions as an interface between SmartBody and a renderer when the non-facebone path is used. The toolkit uses SmartBody in facebone mode (meaning it has full control over the body and face using all-bone animations), so the bonebus library is not necessarily needed. It is included for compile reasons and to offer a separate implementation possibility, where SmartBody has no direct control over the face, but requests animation to be played by the renderer. This solution has the advantage of being able to use blend shapes and shaders, but has the disadvantage that SmartBody cannot blend these. A future release of SmartBody with full control over arbitrary data, including bone animations, blend shapes and shaders, is being considered.