Manipulators
 
 
 

A manipulator is used to interact (using the keyboard and the mouse) with the MotionBuilder scene. Examples of built-in manipulators include the transformation, scaling and parenting manipulators.

It is possible to add a new type of manipulator for custom interaction with the 3D viewer (selection, viewing, and so on).

The manipulator and its layout are created at the startup of MotionBuilder, and whenever the custom manipulator is selected, the input from MotionBuilder (in the 3D viewer) is passed through the input evaluation of this class.

The layout is created once, but on each selection of the manipulator, the class is queried for its layout which is returned by the GetLayout() function. Note that manipulator input functions must be built up from scratch, as they do not inherit any functionality from any existing manipulator. This means that a new manipulator is not able to pick or select objects unless you program that functionality.

Like constraints and devices, manipulators also have layouts associated with them (FBManipulatorLayout). Unlike constraints, the persistence of a manipulator layout is guaranteed, because it is created when the manipulator is registered, and therefore exists for the duration of the program (if desired).

The manipulator layout contains a pointer (handle) to the manipulator that owns the layout (stored in the Manipulator variable), making manipulator-layout interaction possible.