User Tools

Site Tools


BML Realizer - SmartBody Commands

This list is NOT 100% complete. More advanced commands and advanced optional parameters are possibly not included.

Official SmartBody wiki - Commands

Command variables are presented between angle brackets, < and >.

Optional arguments are presented between square brackets, [ and ].


Internal BML Processor commands

bp reset

Clears any currently pending BML acts, thus freeing their act ids for reuse. Outside of debugging with .seq files, all BML acts should have unique character and act id key pairs, so this should not be an critical issue. Also, once all the failure cases are checked with timeouts, this command should not be necessary anymore.

bp speech_ready <character id> <request id> SUCCESS

A SmartBody::SpeechInterface callback, informing the BML processor that speech data is ready.

bp speech_ready <character id> <request id> FAILURE <error message or reason>

A SmartBody::SpeechInterface callback, informing the BML processor that speech data failed to be compiled.


Configures the camera in the scene viewer window

camera eye <x> <y> <z>

Sets the camera position in the scene.

camera center <x> <y> <z>

Sets the point that the camera looks at in the scene.

camera scale <scale>

Sets the camera scale.

camera default

Restore the camera to its default configuration.


Commands used to create, control, and remove characters at runtime

char <name> init <skeleton file> <class>

Creates and initializes a character with the <skeleton file> (found on the ME path) and the <class>. The class is evaluated by a renderer, such as BMLR.

char <name> remove

Removes the character from the scene.

char <name> inspect

Prints out debug information about the character.

char <name> prune

Prunes the controller trees of unused/overwritten controllers.

char <name> ctrl

Adds or removes a named test controller.

char <name> viseme <viseme id> <weight> <rampin duration>

Sets the weight of a character's viseme. The <rampin duration> (in seconds) enables the viseme weight to change gradually.

char <name> bone <bone id> <w> <x> <y> <z>

Sets the quaternion rotation of the character's bone named <bone id>.

set char

set char <name> world_offset [x <x>] [y <y>] [z <z>] [h <h>] [p <p>] [r <r>]

Sets the characters position and orientation in the world. XYZ is the position and HPR is the orientation, where h is heading (yaw), p is pitch and r is roll. Any combination of xyzhpr in any order can be specified. See the coordinate systems section.

set char <name> voice <remote> <voiceID>

Sets the characters voice, using a speech synthesizer.

set char <name> voice <audiofile> <voicePath>

Sets the characters voice, using pre-recorded audio files.


Commands to create, initialize and destroy named controllers. These commands are primarily test commands available for controller programmers.


Prints contents of:

srHashMap <SkPosture>		pose_map;
srHashMap <SkMotion>		motion_map;
srHashMap <MeCtPose>		pose_ctrl_map;
srHashMap <MeCtMotion>	motion_ctrl_map;
srHashMap <MeCtSimpleNod>	snod_ctrl_map;
srHashMap <MeCtAnkleLilt>	lilt_ctrl_map;
srHashMap <MeCtScheduler2>	sched_ctrl_map;
srHashMap <MeController>	controller_map; 


Echos text to the SBM console. Usually used for annotations inside sequences

echo <text>

Prints <text> to the console.


Shorthand for joint_logger


The joint logger is used for debugging animations and motion controllers

joint_logger <start/stop>

Starts or stops the joint logger.

set joint_logger joints [< +/- >] <joints>

Adds or removes a joint from being logged. If +/- are not specified, the complete list is defined.

set joint_logger duration <time>

Starts the joint logger for <time> seconds.


gaze <ctrl_name> target point <x y z>
gaze <ctrl_name> target euler <p h r>
gaze <ctrl_name> smooth <basis>
gaze <ctrl_name> speed <deg-per-sec>
gaze <ctrl_name> bias <key> <p h r>


This command is primarily a test command available for controller programmers

lilt <controllerID> <duration> <magnitude>

Creates a named lilt controller.


Loads SmartBody skeletons, motions, poses, etc

load motion[s] <path>

Loads all .skm motion files from <path> into SBM's list of known animations.

load pose[s] <path>

Loads all .skp pose files from <path> into SBM's list of known animations.


Resynchs TCP connection


Helpful in resyncing TCP socket connection to renderer.


To create a pawn:

 pawn PawnName init

To change the location of a pawn:

 set pawn PawnName world_offset x 0 y 160 z 45

As with characters, world_offset can be any combination of x y z h p r


Sets the working paths to SmartBody's data

path <path id> <pathname>

Appends <pathname> to a path list <path id>.

Currently valid <path id>s are:

seq Used to search for .seq files during a seq command.
me Used by MotionEngine to load .me MeContent files and .sk skeleton files.
bp Unused, but reserved by the BML processor for loading configuration data.


Print various internal variables to the console.


Shorthand for quit


Quits the SBM process



Resets initial variables in mcuCBHandle class (mcu).


Communication between different SBM processes

sbm [id <process-id>] <sbm command>

Loopback command that calls the following arguments as another SBM command. It exists as a way for the elvin listener to trigger any command from the message type 'sbm'. Optional process-id supports targeting a specific SBM process. A non-matching process will discard the message.


Test command for controller programmers

sched <schedulerControllerID> add <controllerID> <time> [<ease in> <ease out>]

Adds controller <controller id> to schedule <schedulerControllerID> at time <time> (in seconds). <Ease in> and <ease out> are schdeule duration (in seconds) for interpolating into and out of the controller.


Set various internal variables.


Sends messages to the message broker

send <elvin message>

Transmits <elvin message> using the ttu elvin wrapper.


Execution of scripts that perform a sequence of other commands

seq <seq name> at <time> <sbm command>

Schedules <sbm command> at time <time> (in seconds) in the sequence <seq name>.

seq <seq name> [begin]

Starts running the sequence <seq name>. If the sequence was not generated at runtime by seq <seq name> at … commands, the system will search the seq path for a file named <seq name>.seq.

seq <seq name> abort

Stops running the sequence <seq name>.

seq <seq name> print

Prints the scheduled time and commands of sequence <seq name>.


Test command for controller programmers

snod <controller id> <duration> <magnitude> [<repitiions> [<affirmitive>]]

Creates a named SimpleNod controller named <controller id> with the following parameters:

duration, in seconds

magnitude, in degrees

repitiions, where one repitition includes both up and down (or both left and right) components. Defaults to 1.0.

affirmative as an integer, so non-zero implies an vertical affirmative nod and zero is a horizontal head shake.

This command is primarily a test command available for controller programmers.


test bml [char <charname>] <bml>

Simple interface for building and sending basic BML requests

test fml <fml>

Simple interface for building and sending basic FML requests


Controls the SBM scene viewer window.

viewer open <width> <height> <x> <y>

Opens the viewer with dimensions <width>,<height> and at pixel position <x>,<y>.

viewer show

Opens the SBM scene viewer window with previously set size and position.

viewer hides

Closes the SBM scene viewer window.


Notifies the renderer that SmartBody is ready to accept commands/BML.


Partially implemented replacement to the vrSpeak messages. This message specification should not be considered final, and should not be used in production environments.


Request to SBM for a new BML performance, similar to vrSpeak.

vrAgentBML <character-id> <audience-id> <message-id> request <XML-act>

<character-id>	Character identifier
<audience-id>	Unused recipient or audience identifier
<message-id>	Per-character unique message identifier
<XML-act>	BML inside <act> element, prefixed with XML prolog


Signals SBM has begun performance a BML request.

vrAgentBML <character-id> <audience-id> <message-id> start

<character-id>	Character identifier
<audience-id>	Unused recipient or audience identifier
<message-id>	Per-character unique message identifier


Signals SBM has halted processing of a BML request. This could be because the perfromance completed normally, was interrupted, or caused an error during processing.

vrAgentBML <character-id> <audience-id> <message-id> end <reason-id>

<character-id>	Character identifier
<audience-id>	Unused recipient or audience identifier
<message-id>	Per-character unique message identifier
<reason-id>	One of complete, interrupted, or error


Evaluates BML blocks

vrSpeak <charID> <audienceID> <actID> <BML>

Commands <charID> to perform the act specified in <BML>. <charID> and <actID> should be a unique key pair over the life of the SBM process. <audienceID> is effective ignored.

<BML> is an XML message that should be of the form:

<?xml version="1.0" encoding="UTF-8"?>
 <!-- siblings to <bml> are ignored -->
  <!-- BML behaviors -->

Including the XML prolog (but not necessarily a DTD reference).

vrSpeak <charID> <audienceID> <actID> <BML_filename>

A variant of the normal vrSpeak used in testing where the BML is retrieved from a file instead of inline with the message.


uscriptexec <string>

Sends string over UDP to the renderer.


wsp <command>

World State Protocol for the distributed version of SmartBody.

/var/www/ailab/WWW/wiki/data/pages/public/bmlr/smartbody/commands.txt · Last modified: 2008/09/09 16:34 (external edit)