Description
SmartBody contains a constraint system that allow a character to maintain an end effector (hand, foot, head) at a particular position. This is useful is you want a character to maintain contact with a particular point in the world (such as on the wall, a table, or another character). Such constraints can be used when trying to maintain contact with an object while gazing and engaging enough of the body to break the point of contact.
The left image shows the character gazing at the pawn (red sphere). Since character's upper body is engaged in the gaze, his hands also shift from their original position (imaging his hands resting on a table). With two constraints enabled (one for each hand), the right image shows the character gazing at the pawn again, but the hands maintain their original positions.
Requirements
A chain of joints from the root to the end effector of any name.
Usage
<sbm:constraint effector="r_wrist" sbm:effector-root="r_sternoclavicular" sbm:fade-in="1" sbm:handle="myconstraint" target="elder:l_wrist"/>
Note that any number of end effectors can simultaneously use a different constraint. Note that using constraints is somewhat performance-intensive, and may reduce the frame rate of the simulation. Also note that the constraint system in SmartBody is intended to keep the character in particular positions or orientations, but not for bringing the character into those positions. Thus, constraints are most effective when their effect is subtle or small.
Parameters
Parameter | Description | Example |
---|---|---|
target | target pawn/joint whose the positional or rotational values will be used as constraints | <sbm:constraint |
sbm:handle | Handle of this constraint instance, can be reused during later constraint commands. | as above |
sbm:root | the root joint for the current character. by default it is the base joint. | <sbm:constraint effector="r_wrist" |
effector | the end effector where the constraint will be enforced through optimization | as above |
sbm:effector-root | the influence root of this end effector. anything higher than this root will not be affected by optimization | as above |
sbm:fade-in | the time for the constraint to blend in. this option is ignored if set to negative | as above |
sbm:fade-out | the time for the constraint to blend out. this option is ignored if set to negative | <sbm:constraint |
sbm:constraint-type | the constraint type to be enforced. it can be positional or rotational constraint | <sbm:constraint effector="r_wrist" |
pos-x | the x positional offset added on top of positional constraint | <sbm:constraint effector="r_wrist" |
pos-y | the y positional offset added on top of positional constraint | as above |
pos-z | the z positional offset added on top of positional constraint | as above |
rot-x | the x rotational offset added on top of positional constraint | <sbm:constraint effector="r_wrist" |
rot-y | the y rotational offset added on top of positional constraint | as above |
rot-z | the z rotational offset added on top of positional constraint | as above |
start | when to start the constraint | <sbm:constraint effector="r_wrist" |
ready | when the constraint is fully engaged | as above |
Attachments:




