IBipMaster9 Class Reference

Search for all occurrences

Detailed Description

Interface into the biped master controller for Max 9.

This contains functions supporting new biped features in Max 9, in particularly new functionality for setting large number of keys onto a biped at once, e.g. by loadin an XAF file.

#include <Biped9Api.h>

Inheritance diagram for IBipMaster9:
Inheritance graph
[legend]

List of all members.

Public Member Functions

Setting Blocks of Biped keys.

The following functions are used for setting a collection of biped keys all at once.

Due to how biped works internally, the best way to set the keys on the biped is a pose per each frame, instead of setting keys over each body part individually. Since it's easier for many systems to set a key over each part, one at a time, we've added these functions that basically cache the values and then set them per pose per frame. This also allows us to perform some optimizations to speed up these operations which can be slow due to the number of change notifications. The workflow is thus, call StartSettingBipedKeys, set the world and/or local values for the limbs using SetBipedTM or SetBipedLocalRotation, and then call StopSettingBipedKeys, which will then go through and set the keys pose per frame. Note that these functions are used when loading an XAF file onto a biped.

virtual void  StartSettingBipedKeys ()=0
  Function for specifying that we will be setting a group of biped keys.
virtual void  StopSettingBipedKeys ()=0
  Function for specifying that we will are done setting a group of biped keys.
virtual void  SetBipedTM (TimeValue t, Matrix3 &mat, int id, int link)=0
  Function for setting world transforms on a biped.
virtual void  SetBipedLocalRotation (TimeValue t, Quat &q, int id, int link)=0
  Function for setting local biped rotation values.

Member Function Documentation

virtual void StartSettingBipedKeys ( ) [pure virtual]

Function for specifying that we will be setting a group of biped keys.

Calling this function means that biped will soon get a large number of keys set on different biped body parts, usually via a SetNodeTM function call. Internally, this will allow biped to correctly set the keys based upon biped peculiarities, for example we need to set the biped up all at once per each frame that has a key (per pose), and we need to handle shared keys caused by unseperated tracks.

virtual void StopSettingBipedKeys ( ) [pure virtual]

Function for specifying that we will are done setting a group of biped keys.

Calling this function means that the biped is done setting keys on it, and we can now go ahead and key the biped based upon all of the values that were set after the previous StartSettingBipedKeys call. Note that if no StartSettingBipedKeys function was called, then nothing happens.

virtual void SetBipedTM ( TimeValue  t,
Matrix3 mat,
int  id,
int  link 
) [pure virtual]

Function for setting world transforms on a biped.

This function will set the world transform on a biped, similarly to INode::GetNodeTM. This function however will cache values based upon biped body part, when called within StartSettingBipedSetKeys/StopSettingBipedKeys(). This allows us to correctly and optimally set up a bipeds animation pose per pose.

Parameters:
[in] t The time at which to set the pose.
[in] id The internal 'id' of the biped node. You get this by calling IBipMaster::GetIdLink.
[in] id The internal 'link' of the biped node. You get this by calling IBipMaster::GetIdLink.
virtual void SetBipedLocalRotation ( TimeValue  t,
Quat q,
int  id,
int  link 
) [pure virtual]

Function for setting local biped rotation values.

This function will set the a local rotation on the biped, in max's local coordinate space (not biped's own internal local coordinate space.) Also this function works within StartSettingBipedKeys and StopSettingBipedKeys for correctly setting the biped rotations locally, pose per pose.

Parameters:
[in] t The time to set the rotation.
[in] q The local rotation.
[in] id The internal 'id' of the biped node. You get this by calling IBipMaster::GetIdLink.
[in] link The internal 'link' of the biped node. You get this by calling IBipMaster::GetIdLink.

IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9
IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9 IBipMaster9