Vixen
02b45cc4
csharp
public sealed class DefaultConstraintArbiter

The shipped arbiter: one weighted pass, stated with its limits.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

What it does. Goals are grouped by the chain they move. Within a group, per kind, the absolute goals are averaged by weight and the additive ones are summed and applied on top — averaging two recoils would make them weaker than one, which is the opposite of what additive means. Kinds are satisfied position → orientation → aim, each within the freedom the previous left. Every goal reports a residual.

How priority works. A multiplier and a tie-break, not a hard ordering: the highest priority present takes its share of the chain first, and the rest is what is left over. A full-weight high-priority goal therefore wins outright, and a half-weight one leaves half the chain to everybody else — which is continuous, so a priority that fades in does not cause a jump.

⚠ What it is not, stated plainly because an author will hit all three. It does not guarantee that a high-priority goal is satisfied exactly when a low-priority one conflicts; it does not distribute error up the hierarchy towards the root; and it does not resolve cyclic goals — two hands each targeting the other — other than by the damping that falls out of solving them in a fixed order. Those need a staged solve, which is a much larger piece of work with a much larger authoring surface, and which is what IConstraintArbiter is for.

⚠ There are no joint limits to clamp against yet. The plan's rule says to clamp, and the only limit the engine currently has is TwoBoneIk's refusal to stretch a bone. A skeleton that carried per-joint ranges would be clamped here; none does, and pretending otherwise in a doc comment would be worse than saying so.

Stateless, and therefore safe to share across the animators the system evaluates in parallel. Everything it accumulates is a local.

Fields and properties (1)

Methods (1)

Used by (3)

  • ConstraintStackVixen.Animation
  • ConstraintTestsVixen.Animation.Tests
  • RigidBodySolverVixen.Animation