Skip to content
This repository has been archived by the owner on Dec 1, 2021. It is now read-only.

UnityLocomotionMMU

Janis Sprenger edited this page Feb 18, 2021 · 1 revision

Unity Locomotion MMU

Scope

The UnityLocomotionMMU is a basic MMU modelling walking behavior. The MMU uses global path planning in conjunction with local steering to generate collision-free walk motions. The MMU is based on an animation tree using motion capture data.

image

Overall Data

Property Values
Name UnityLocomotionMMU
ID daimler.com:UnityLocomotionMMU/1.0
VendorDomain daimler.com
Vendor Daimler Buses
Author Felix Gaisbauer
Short description MMU models walking behavior based on an animation tree inside Unity.
Long description MMU models walking behavior based on an animation tree inside Unity using the Mecanim animation system.
Programming Language Unity,C#
Development Tools Unity, Visual Studio 2017
Service dependencies PathPlanningService
MMU dependencies (Motion types) -
File dependencies UnityLocomotionMMU (Asset bundle)
Application dependencies requires Unity 2018.4 Adapter or newer
Additional Libraries -
MotionType Locomotion/Walk
Events End, Abort
Basic MMU yes
License MIT

Functionalities

In the following an overview of the functionalities and parameters of the UnityLocomotionMMU are provided.

Parameters

Runtime Parameters

Name Type Required Description
TargetID MGeometryConstraint(ID) yes ID of the walk target.
UseTargetOrientation bool no Defines whether the target orientation given by the TargetID object is used.
ReplanningTime float no The time after which the MMU replans the current path.
Trajectory MPathConstraint(ID) no Specifies an optional trajectory that is traversed by the LocomotionMMU.
Velocity float no Specifies the max velocity of the avatar.
ForcePath bool no Specifies if a straight line path should be used if no path can be found.

The most important parameter required by the MMU is the TargetID. This parameter defines the target location that should be reached. The parameter is an ID pointing to a respective MGeometryConstraint embedded in the instruction. Moreover, it can be specified whether the rotation given by the target object is used or not. By default, the rotation is ignored.

The MMU provides further parameters such as replanning time. The replanning time defines the time after which the MMU computes a new path. This parameters is especially suitable for dynamic environments. Additionaly, the MMU supports the definition of trajectores using the MPathConstraint class. It uses the 2D path specified within the constraint. Finally the MMU has further parameters for defining the walking velocity, as well as for enabling/disabling the optional transition modeling.

Scene Parameters

The MMU has no specific scene parameters.

Examples

MSceneObject target1 = new MSceneObject(....);


//Walk instruction to walk to a specific target
MInstruction walkInstruction = new MInstruction(System.Guid.NewGuid().ToString(), "Walking to target location","walk")
{
   Properties = new Dictionary<string,string>()
   {
      {"TargetID", target1.ID}
   }
};

MConstraint constraint = new MConstraint(System.Guid.NewGuid().ToString());
MGeometryConstraint targetConstraint = ....;
constraint.GeometryConstraint = targetConstraint;

//Walk instruction to walk to a specific target using an MGeometryConstraint
MInstruction walkInstruction = new MInstruction(System.Guid.NewGuid().ToString(), "Walking to target location","walk")
{
   Properties = new Dictionary<string,string>()
   {
      {"TargetID", constraint .ID}
   },
   Constraints = new List<MConstraint>()
   {
       constraint
   } 
};

Using trajectories

MConstraint constraint = new MConstraint(System.Guid.NewGuid().ToString());
MPathConstraint trajectory = new MPathConstraint(...);
constraint.PathConstraint = trajectory;

//Walk instruction to walk to a specific target
MInstruction walkInstruction = new MInstruction(System.Guid.NewGuid().ToString(), "Walking to target location","walk")
{
   Properties = new Dictionary<string,string>()
   {
      {"Trajectory", constraint.ID}
   },
   Constraints = new List<MConstraint>()
   {
       constraint
   } 
};

Known Issues

Technical Information

The UnityLocomotionMMU is realized within the Unity3D engine. In principle, the MMU uses the Unity Animator component and a humanoid avatar rig. The Animator contains multiple animations for walking motions. Moreover, an animation-tree is utilized to blend between the different motions. For steering the avatar through the scene, a global path planning is used in conjunction with local motion planning. In particular, the PathPlanningService is required to execute the MMU.

Licensing

Provided as basic MMU with MIT license.

MOSIM Documentation

Introduction

Documentation

Known Issues

Clone this wiki locally