-
Notifications
You must be signed in to change notification settings - Fork 1
MMUs
Modular Motion Units enable the avatar to perform certain actions. Actions are usually goal-directed, e.g. walking to a position, reaching toward an object, etc. Which action to perform is send as an MInstruction to the co-simulator. Based on the motion type and name, the co-simulator selects the respective MMU. Based upon the properties and constraints, the MMU is synthesizing motion in every frame.
Thrift Interface of MInstruction:
struct MInstruction
{
1: required string ID; // ID of this instruction
2: required string Name; // human-readable name of this instruction
3: required string MotionType; // motion type to be simulated, e.g. Pose/Idle
4: required string AvatarID; // ID of the MAvatar, which should be simulated
5: optional map<string,string> Properties; // properties to configure the MMU
6: optional list<constraints.MConstraint> Constraints; // constraints to configure the MMU
7: optional string StartCondition; // start condition, to control the sequencing of MMUs
8: optional string EndCondition; // end condition, to control the sequencing of MMUs
9: optional string Action;
10: optional list<MInstruction> Instructions;
}The ID of each instruction should be unique. However, in case of a direct-control of the Avatar (e.g. providing the walk direction and velocity in every frame), it is possible to send "UpdateInstructions" by keeping the ID consistent for multiple frames.
Properties and Constraints are used to control the MMU. Properties is a simple key-value map of strings, which is parsed by the MMU and thus depends on the MMU or the MotionType. Constraints are defined as MConstraints and provide the possibility to send information in a well-typed manner. In most of the cases, the Constraints are referred by Properties. For example in the UnityLocomotionMMU (see below), the property "Trajectory" should contain the ID of the MPathConstraint provided in the Constraints list.
Idle (Pose/Idle)
The Idle MMU replays a simpel idle animation without any further constraints or parameters.
UnityLocomotionMMU (Locomotion/Walk)
The Unity Locomotion MMU enables the Avatar to walk to a specific position or goal
| Property Name | Property Semantics | Optional |
|---|---|---|
| TargetName | Name of the MOSIM MSceneObject (e.g. the object "WalkTarget1") | either TargetName or TargetID |
| TargetID | Walk Target as a constraint (ID) | either TargetName or TargetID |
| Velocity | Velocity in m/s (float with decimal point) | yes |
| Trajectory | Trajectory as a MPathConstraint (ID) | yes |
| Constraints | Reference |
|---|---|
| MGeometryConstraint defining the goal position | referred with TargetID |
| MPathConstraint definining the trajectory | referred with Trajectory |
MOSIM Documentation
About MOSIM:
Tutorials
Development