Skip to main content

Joint Limits

Identify bones that violate anatomical rotation limits — and clamp them back into bounds.

Tier: Builder Pro Menu: Physics → Joint Limits (Report) (also reachable via Quality Score → Joint Limits ring)


What it does

Real human joints have rotation limits. Knees bend forward, not backward. Elbows bend in one direction. Ankles have a limited dorsiflexion range. Animation that violates these limits — a knee bent backward, an elbow inverted, a wrist twisted past 270° — reads as anatomical impossibility even when the rest of the motion is fine. The eye catches it instantly.

Joint Limits scans your animation and produces a per-bone hyperextension report sorted by frequency:

Joint Limits Report (sorted by frequency)
─────────────────────────────────────────────────
[1] LeftKnee bent backward 47 frames (worst: -23.4°)
[2] RightElbow hyperextended 12 frames (worst: +12.1°)
[3] Spine03 over-twisted 3 frames (worst: 68°)
─────────────────────────────────────────────────

Each entry shows:

  • Bone name — clickable, scrubs the timeline to the worst-violation frame.
  • Violation type — what's wrong (bent backward, hyperextended, over-twisted, etc.)
  • Frame count — how often the violation occurs across the whole clip.
  • Worst-frame angle — the most extreme value, useful for prioritizing fixes.

How limits are defined

Each joint has a range of motion (ROM) specification — minimum and maximum angles per local axis. The defaults are derived from biomechanics literature for adult humans (specifically, the ROM tables published in physical therapy and kinesiology references):

JointForward (flex)Backward (extend)Notes
Knee0° to ~140°-5° to 0°Backward limit very tight
Elbow0° to ~145°-5° to 0°Same constraint as knee
Shoulder-50° to ~180°Wide ROM, abduction differs
Hip-10° to ~120°-25° to 0°Backward constrained
Wrist-75° to ~75°Symmetric
Ankle-50° (plantar) to 20° (dorsi)Tight range

Spine joints have lower per-segment limits but compound across multiple bones. Neck has wider per-axis limits.

For non-human rigs (creatures, robots), the default limits may not apply. The system runs heuristically — bones whose names match the human convention get checked against human limits.


Sample-on-demand

Just like Quality Score and Foot Locking, the report runs sample-on-demand from the live animation:

  1. Open Physics → Joint Limits (Report).
  2. The whole clip samples (typically <150ms for a 60-frame humanoid clip).
  3. Per-frame joint angles compute by decomposing each bone's local quaternion into Euler angles.
  4. Each frame's angles compare against the joint's ROM table.
  5. Violations aggregate into the report.

No setup, no manual configuration, no pre-baking. Open and read.


Reading the report

High frequency, small magnitude

Many frames slightly outside ROM — usually a calibration offset (the rig's rest pose isn't perfectly aligned with the ROM expectation). Often safe to ignore, but can also signal that you should adjust the rest pose.

Low frequency, high magnitude

A few frames significantly outside ROM — usually a single bad keyframe. Click the bone name, the timeline scrubs to the worst frame, fix that pose manually.

High frequency, high magnitude

The animation is systematically violating anatomy. Often a sign of:

  • Retargeting from an incompatible source rig (the source rig had different proportions; the retarget didn't compensate).
  • AI-generated motion with weak anatomical priors.
  • Manual animation with style choices (cartoon hyperextension is intentional sometimes).

For non-cartoon work, this is the highest-priority category to fix.


The Joint Limits Clamp (live constraint)

While the report is read-only diagnostic, there's also a Joint Limits Clamp option that runs as a live constraint, similar to Foot Locking:

  • When enabled, every frame the mixer runs, then Joint Limits Clamp runs after, snapping any out-of-range joint back into its ROM.
  • Result: any inadvertent hyperextension is silently corrected during playback.
  • Useful when batch-processing AI-generated clips where you don't want to manually fix every keyframe.

The clamp is on by default for any clip that comes through Quality Score's Joint Limits ring. Toggle off for cartoon/stylized work.


Workflow — fixing violations

  1. Run Joint Limits Report after import.
  2. Sort by frequency (default).
  3. Top entries are systemic; bottom entries are isolated keyframe problems.
  4. For each top entry:
    • Click the bone name → timeline scrubs to worst frame.
    • Inspect the pose. Is the violation intentional (style) or accidental?
    • If accidental, manually rotate the bone within ROM. The history (Ctrl+Z) saves you.
  5. Re-run the report. Watch the count drop.
  6. For mass-fix without manual work, enable Joint Limits Clamp. The constraint silently fixes everything within ROM.

Edge cases

Cartoon/stylized animation

Cartoon characters routinely violate anatomy intentionally. Disable Joint Limits Clamp; use the Report only for awareness.

Non-human rigs

Quadrupeds, robots, creatures may not match the default human ROM. The report still runs but may have many false positives. Skip Joint Limits for these or contact us about custom ROM profiles.

Tight clothing constraints

Some character meshes have tight clothing that visually "breaks" if joints rotate even slightly past ROM (the mesh tears through itself). Joint Limits clamp helps here even when the underlying motion is technically fine.


  • Quality Score — Joint Limits is one of the four scored metrics; click the ring to drill into this report
  • Foot Locking — pairs with Joint Limits for professional-grade biomechanics validation
  • Center of Mass — works alongside Joint Limits for full-body balance validation