Skip to content

Authoring across camera buckets

For view-dependent measurements (spine lean, knee valgus, shoulder abduction), the same range doesn’t apply from every camera angle. The Studio lets you author DIFFERENT bands per bucket; the runtime picks the right one based on where the user actually stands.

Read the bucket concepts page first if you haven’t.

The picker grid

Open the Camera angles panel:

90°L 45°L Front 45°R 90°R
Head [ ] [ ] [ ] [ ] [ ]
Hip [ ] [ ] [▣ ✓ ] [ ] [ ]
Feet [ ] [ ] [ ] [ ] [ ]
Behind [ ]

Each cell is one bucket. State indicators:

  • Filled fill: the authoring target (the bucket your conditions apply to). One at a time.
  • ✓ icon: bucket has at least one authored band (already authored against this angle).
  • Warning-coloured outer ring + glow: the live-detected bucket (where the user is physically standing right now). Updates each frame via the temporal smoother.
  • Plain outline: no authoring, not detected.

The two highlights are independent. You can author one bucket while the user is physically standing in another.

Authoring a single-bucket movement

Most movements are view-invariant, they use joint flexion angles, distances, and ratios that read the same from any angle. For these, the default front_hip authoring target is enough. The runtime ignores the bucket detector for view-invariant channels.

You can ignore the Camera angles panel entirely for these moves.

Authoring a multi-bucket movement

When your movement uses camera-frame angles (spine_lean, left_knee_valgus, hip_tilt):

  1. Tap front_hip (the default). Drop your measurements + conditions as usual.
  2. Stand front-on, verify the conditions are tuned correctly.
  3. Tap 90left_hip in the grid (or whichever side variant matters). The conditions panel re-renders showing bands for the new bucket.
  4. Re-tune the bands for the new angle, same conditions, same channels, different ranges.
  5. Repeat for any other angles you want to support.
  6. Save. The .pose file now has multiple AngleBand entries per channel, one per authored bucket.

At runtime, the detector tracks where the user is and picks the matching band. If the user stands at a bucket you didn’t explicitly author, the runtime interpolates between the two nearest authored neighbours.

Authoring tips

  • Author front_hip first: that’s the default for most users.
  • Add side variants only when needed: only camera-frame angles need them. Joint flexion + distances + ratios don’t.
  • Author symmetric pairs together: if 90left_hip has a different spine_lean band, 90right_hip probably does too.
  • The picker doesn’t have to match your physical position: you can author a side band while standing front-on. Type the numbers in directly.

The behind bucket

behind_hip is the 16th bucket, for movements that legitimately need the back view (rare). Sits below the main 3×5 grid as a separate row. Authored the same way.

What’s written to the .pose file

Authored bands land in Movement.angleBands:

"angleBands": {
"front_hip": [
{ "phaseId": "down", "channelId": "spine_lean", "min": -8, "max": 8 }
],
"90left_hip": [
{ "phaseId": "down", "channelId": "spine_lean", "min": -5, "max": 15 }
],
"90right_hip": [
{ "phaseId": "down", "channelId": "spine_lean", "min": -5, "max": 15 }
]
}

One entry per (channel, phase, bucket) triple. The runtime’s MovementTracker._resolveBucketOverrides reads this map every frame, picks the band for the current bucket, and overrides the form rule’s value with that band’s range.

Detector confidence

The runtime trusts the bucket detector when its confidence is ≥ 0.5. When confidence drops below (low light, occlusion, the user mid-rotation), the form service falls back to the primary bucket, the first authored entry, almost always front_hip.

This is the safe choice: when uncertain, use the most common band. View-invariant channels are unaffected, they evaluate the same regardless of bucket.