Class WalkGaitParameters.GroundGroup
- Namespace
- CodeSmile.AnyMotion.AnimateYourself.Gait /
- Assembly
- ApiSource.dll
L05 (foot planting on uneven ground): the authored half of vertical ground conformance. The
raycast, height/normal correction and pelvis lowering are runtime behaviour in
IkTargetSpaceDriver, not authored data, so they are not here — see
roadmap.md §9 and locomotion-catalog.md §3.
[Serializable]
public sealed class WalkGaitParameters.GroundGroup
Expand Details ...
- Inheritance
-
objectWalkGaitParameters.GroundGroup
Remarks
FootTiltPitchWeight and FootTiltRollWeight are reserved schema with no consumer. No code reads either field, so no value of either changes what a character does. They exist so that separating the foot's ground tilt into a fore/aft share and a sideways share can be added later without changing the preset format.
What the separation would express. A foot follows the measured surface in both directions today, at full strength. A real ankle behaves differently in the two directions: it pitches the foot to match ground that rises or falls along the direction of travel, and resists rolling sideways on ground that banks across it. One measured surface normal produces both, so expressing that difference needs a weight per direction.
Why the shipped values cannot change anything, even once the separation exists. The tilt is one rotation about a horizontal axis. Writing that rotation as two components along any two perpendicular horizontal axes and scaling each component by 1 recomposes the same rotation, so 1 and 1 reproduce today's tilt whichever two axes the separation is resolved along. Every other pair of values does depend on which two axes those are, and which two axes a separation would use is not decided yet.
Version is deliberately not raised for these two fields. A preset written before they existed deserializes with these initialisers intact, which is the behaviour that preset already described, so a load-time upgrade pass would have nothing to do.
Fields
Anchoring
[Tooltip("How the feet follow ground that is not flat. Vertical raises and lowers each foot onto whatever is underneath it and tilts it to match the surface. None turns the ground probe off completely, for a character that never stands on anything, such as one that floats or swims. World is not implemented yet.")]
public WalkGaitParameters.GroundGroup.ContactAnchoring Anchoring
Field Value
FootTiltPitchWeight
[Tooltip("Reserved: how much of a slope's fore/aft tilt the foot follows, from 0 (the foot stays level front to back whatever the ground does) to 1 (it matches the surface exactly). Has no effect yet; the foot follows the surface fully in both directions today.")]
[Range(0, 1)]
public float FootTiltPitchWeight
Field Value
- float
FootTiltRollWeight
[Tooltip("Reserved: how much of a slope's sideways tilt the foot follows, from 0 (the ankle stays level side to side, which is what a real ankle mostly does on a banked surface) to 1 (it matches the surface exactly). Has no effect yet.")]
[Range(0, 1)]
public float FootTiltRollWeight
Field Value
- float
MaxUnsupportedFootDrop
[Tooltip("How far a foot may drop below flat-ground height when the probe finds nothing underneath it, as a fraction of leg length. This is the look of a foot hanging over an edge, so it is worth tuning rather than leaving at a safe value.")]
[Range(0, 1)]
public float MaxUnsupportedFootDrop
Field Value
- float
SmoothingTime
[Tooltip("How long a foot and the hips take to catch up with a newly measured ground height, in seconds, instead of jumping there in a single frame. Higher reads as heavier or softer footing; lower reacts faster but shows more of a visible jump when crossing an edge or turning near one. 0 turns smoothing off.")]
[Range(0, 1)]
public float SmoothingTime
Field Value
- float
SoleGrounding
[Tooltip("Puts the visible sole of each standing foot on the surface instead of near it. The foot IK target aims the ankle bone, and how far the sole then sits below the ankle changes as the knee bends, so the sole ends up inside the ground or above it even when the ankle is exactly where it was asked to be. This measures the drawn foot every frame and corrects it. It costs performance and it bends the standing knee further, so it is off unless you turn it on.")]
public bool SoleGrounding
Field Value
- bool
SolePelvisShare
[Tooltip("How much of each foot's correction the hips take, from 0 (the knee absorbs all of it) to 1 (the hips absorb all of it). Only used while Sole Grounding is on. Keep this low. Raising the hips lifts both of them, which stretches the other leg until its own foot leaves the ground, so a high value places the feet less accurately than the default does.")]
[Range(0, 1)]
public float SolePelvisShare
Field Value
- float
SoleSolverIterations
[Tooltip("How many poses the sole correction may try per foot each pass before it settles for the closest one it found. This is the performance control. The default never cuts the search short, so lowering it is what buys frame time: the feet start missing the ground on the characters that need the most work, and cost falls. Raising it above the default changes nothing. Only used while Sole Grounding is on.")]
[Range(4, 64)]
public int SoleSolverIterations
Field Value
- int