Complete Locomotion System
CLS is a procedural, rule based, animation/movement system.
You can check the demo scene to see what can be done using CLS.
Video Tutorials:
I'll add video tutorials for the different part of cls little by little
Setup tutorial:
CLS Quick Start:
1. Add CLS.cslist to your person atom
2. Open CLS with the "Open Custom UI" button
3. Press the "Movement/Rotation" button:
- Set the target atom
- (Optional) Set the rotation target atom, it will be used for the rotation calculations instead of the position target atom. You can change the rotation behaviour using the rotation type popup.
- Set the Ground atom (the ground atom and all atom parented to it will be used for ground detection)
4. Press the "Control" button:
- Press the "Set Default Controllers" button
5. Use the different options in the Body Pose category to change the base body pose
- You can use the Foot Pitch (In the Legs options) and the Ground Offset (In Full Body options) to adapt the feet to different shoes.
6. Use the different options in the Body Movement category to create a walk cycle you like
- You can use the Dance Mode to see the sliders effect even if the character is not moving or you can link the target to an animation pattern so the character moves around.
7. CLS has a ton of options to create any type of movement you like. I recommend using the presets pack above as a base for your movement styles!
CLS Parameters:
Movement/Rotation:
Pos Target Atom popup:
- The atom the character will move toward. Used for the rotation calculation as well.
Rot Target Atom popup:
- (Optional) You can set a secondary atom that will be used for the rotation calculation instead of the Pos Target Atom.
Ground Atom popup:
- CLS will check the ground atom, and all it's children atoms, for colliders and use them when checking for the ground to adapt the foot position.
Can Move Toggle:
- Use this to lock the character in place.
Max Speed slider:
- The max speed in uUnit per second the character can reach when moving toward its target.
Acceleration slider:
- The Acceleration in uUnit per second.
Stop Distance slider:
- The character will stop when the distance to the target is below this value.
ResetPosWhenDisabled toggle:
- When active, if you disable/enable CLS, the character will not teleport back to the last active position, but reset to the current location.
Rotation Type popup:
- No Rot: The character will never rotate.
- Face Target: The character will face the target atom.
- Face Rot Target Idle: The character will face the movement direction when moving, and face toward the rot target when idle. (require a pos and a rot target)
- Copy Target: The character will copy the target rotation.
- Copy Target Idle: The character will face the movement direction when moving, and copy the target atom when idle.
Rotation Speed slider:
- The rotation speed of the character in degree per second.
Rotation Offset Idle slider:
- A yaw rotation offset applied when the character is idle.
Timing:
Steps Duration slider:
- The duration in seconds of one step.
Steps Delay slider:
- The delay in seconds between two steps.
OnAllFourStepDelay slider:
- The delay in seconds between the hands and feet steps when the UseHandsToMove toggle is on.
Steps Duration Random Min/Max sliders:
- The effective duration of a step is randomized between the base duration minus the min slider, and the base duration plus the max slider. Use this to add some randomness to the step timing.
Control:
Set Default Controllers button:
- Disable all the controllers not used by CLS, and enables the one CLS uses.
Update Root Control toggle:
- Set if the character root control should follow the character. If you enable this, you need to toggle the "Detach Person Root Control" On in the "Control & Physics 1" Panel of the character!!
Stop Control When Idle toggle:
- When toggled on, CLS will stop updating the controllers when the character is idle.
Update "body part" toggles:
- Set if CLS should control this body part.
Input Control:
Use Inputs To Move:
- Use to toggle the inputs.
Input Source:
- Set the movement keybinds. When using Custom, you can call the Move_"Directrion" actions from any triggers to move the character from buttons/custom keybinds.
Movement Reference:
- The atom used to compute the movement inputs, by default you should set this to the active view point ([player] if not using a custom camera)
Presets:
General Load Time slider:
- The base duration in seconds it will take to transition to the loaded preset.
Load "category" duration sliders:
- Duration multiplier for each category. With a General load time of 2, and a category load time of 3, it will take 6 seconds to for this category to transition.
Load "category" delay sliders:
- The delay in seconds before the category start transitioning to the loaded preset.
Triggers:
Select Trigger popup:
- Use this popup to select the trigger you want to modify.
- OnIdleStart: Fire as soon as the character reach its destination
- OnDestinationReached: Fire after a delay when the character reach its destination.
- OnStepIdleStart: Fire when the character body stops moving (when the feet/hands reach their target position)
- OnMovementStart: Fire when the character starts moving.
Destination reached delay slider:
- The delay in seconds before the OnDestinationReached trigger fires.
Actions:
- CLS Contains different actions that you can use from any VaM Triggers:
- Reset Steps: Reset all the step timing, call that on multiple actor at the same time to sync their timing.
- Increment Step Duration: Add the value of "Step Duration Change" to the current step duration.
- Decrement Step Duration: Substract the value of "Step Duration Change" to the current step duration.
- Increment Dance Amplitude: Add the value of "Dance Amplitude Change" to the current dance amplitude.
- Decrement Dance Amplitude: Substract the value of "Dance Amplitude Change" to the current dance amplitude.
- Increment Rotation Offset: Add the value of "Rotation Offset Change" to the current rotation offset.
- Decrement Rotation Offset: Substract the value of "Rotation Offset Change" to the current rotation offset.
- Sync Beat: Used to set the step duration. Assign a key to this action using any keybinding addon , then press the key on your musics tempo to adapt the movement speed.
Gaze System:
Gaze Active toggle:
- Set the gaze system on/off.
Gaze Atom popup:
- Select the atom to look at.
Gaze Controller popup:
- Set the atom controller to look at.
Gaze Max Distance slider:
- Set from what distance the character will start looking at the gaze target.
Gaze Speed slider:
- The head/body rotation speed in degree per second to look at the target.
Gaze Horizontal Angle Max slider:
- The min/max Angle the head rotate to the side.
Gaze Vertical Angle Min slider:
- The maximum angle the character can look down.
Gaze Vertical Angle Max slider:
- The maximum angle the character can look up.
Gaze Chest Follow Threshold:
- The angle from wich the chest will start to follow the head rotation. (if the head is rotated 100 degrees to the side, and this is set to 80, the chest will rotate 20 degrees)
Gaze Hips Follow Threshold:
- Same as above, but for the hips.
Grab System:
Grab Hand To Move toggle:
- When On, you can use the character hands to move the Pos Atom Target, effectively moving/rotating the character.
Grab Shoulder Adapts Body Height toggle:
- When On, grabbing the shoulders and moving them up and down will change the character body height parameter.
Grab Head Crawling Adapts Chest toggle:
- Only effective when UseHandsToMove toggle is on. When On, Grabbing the head will change the torso position.
Rotate Head Adapts Yaw toggle:
- When On, grabbing and rotating the head around the up axis will change the body yaw.
Grab Head Adapts Body Pitch toggle:
- When On, grabbing and moving the head forward/back will change the body pitch.
Grab Head Adapts Body Roll toggle:
- When On, grabbing and moving the head to the side will change the body roll.
Grab "body part" Adapts Position toggles:
- When On, grabbing the body part and moving it will change this body part position parameters.
Grab "body part" Adapts Rotation toggles:
- When On, grabbing the body part and rotating it will change this body part rotation parameters.
Dance Mode:
Dance Mode toggle:
- In Dance Mode, the movement parameters will play even if idle. You can use it to check the sliders effect, or to create any rhythm based animations.
Dance Amplitude slider:
- In Dance Mode, all movement parameters are multiplied by the dance amplitude to control the overall movement strength.
Dance Randomness parameters:
- Use the random Amplitude paramters to add some randomness to the movement amplitude. I recommend using low values to create small changes.
- You can use the different dance rotation parameters to add some randomized movement with different timing on top of the base movement. The rotation speed is a multiplier of the base Step Duration (with a speed of 2, the movement will change every 2 steps).
Body Pose parameters:
Use the Side/UpDown(Height)/Forward parameters to change the controllers position. Use the Yaw/Pitch/Roll parameters to change the controllers rotation (Not available for the shoulders/elbows/knees).
Steps Ground Offset slider:
- Set the default distance between the feet controllers and the ground (Use this when using high heels).
Steps Feet Spacing Moving slider:
- The feet spacing when the character is moving.
Steps Feet Spacing Idle slider:
- The feet spacing when the character is Idle.
Steps Feet Distance Random Min/Max:
- Used to add some randomness to the feet spacing (Computed each steps).
Use Hands To Move toggle:
- When On, CLS will use the arms as secondary movement limbs. When using the hands, the shoulders and head are affected by the chest parameters. In this mode, you can use the Grab Head Crawling Adapts Chest toggle to adapt the character position dynamically by grabbing the hand.
Hands Transition Duration:
- Set the time it will take to transition from/to being on all four.
Use Knees To Move toggle:
- When On, CLS will use the knees instead of the feet as lower limbs.
Legs Transition Duration:
- Set the time it will take to transition from/to being on the knees.
Steps Hand Spacing Idle slider:
- Only Effective when UseHandsToMove in On. Set the Hands spacing when the character is idle.
Steps Hand Spacing Moving slider:
- Only Effective when UseHandsToMove in On. Set the Hands spacing when the character is Moving.
Steps Hand Forward Idle slider:
- Only Effective when UseHandsToMove in On. Set the Hands/feet spacing when the character is Idle.
Steps Hand Forward Moving slider:
- Only Effective when UseHandsToMove in On. Set the Hands/feet spacing when the character is Moving.
Body Movement parameters:
Use the position and rotation parameters to set how the bodypart will move each step. The MidPoint parameters will set the timing of the movement.
- With a midpoint of 0, the controller will instantly move to the movement apex, and take the full step to go back to the starting position/rotation.
- With a midpoint of 1, the controller will take the full step duration to move to the movement apex, and instantly go back to the starting position at the end.
- With 0.5, the apex will be reached mid step.
Zero All step parameters main button:
- Set all the movement parameters to 0.
Move Feet Both Steps slider:
- Set the influence of the left step on the right feet movement. At 1, both feet will move each step.
Move Knees Both Steps slider:
- Set the influence of the left step on the right feet movement. At 1, both knees will move each step.
Right/Left Arm Follow Body sliders:
- Set the influence of the Full body rotations on the arms rotation. At 0 the arms will ignore the full body rotation.
CLS_StepTarget.cs:
- CLS_StepTarget.cs is a simple script you can add to any atom, and, depending on the parameters, the character will place it's feet/hands on it when moving around.
RightStep toggle:
- Set if the right of left steps should use this target.
Max Distance slider:
- The max distance this target will be used by the CLS actors.
Direction Check Flexibility:
- CLS will check if the direction of the target lines up with the direction the CLS actor is facing. If the actor is facing the opposite direction, CLS will use the target for the other side. For example, if you set a target as RightStep, when the character and the target line up, the right foot will use the target. If the character is facing the opposite direction, the left foot will use the target instead. This way you can create path that work both ways.
CLS_CameraController.cs:
- Description coming soon. Use this to create third person type camera controls.