You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The plumbing every other "mirror" operation needs: detect left/right bone pairs from naming conventions, expose a mirror plane, and provide the actual pose-mirror operation that the Animation epic's Pose Library (#521) and Slice D's weight-mirror need.
Scope
Naming conventions: detect bone pairs by name patterns. Built-in:
_l / _r, _L / _R
.l / .r, .L / .R
Left* / Right* (Mixamo / Unity HumanIK style)
*_left / *_right
Custom convention: user can add additional <pattern> / <replacement> regex pairs in settings, persisted per project.
Mirror plane: configurable per skeleton — world X (default for character rigs), world Y, world Z, or local-to-armature plane.
PoseMirror operations:
Mirror pose: for each bone pair, swap the bone TRS such that left mirrors right and vice versa.
Mirror selection: select bone Hand_l → press mirror-selection → Hand_r is now selected.
Unpaired bones: bones with no detected mirror (e.g. spine, head) are reflected across the mirror plane in-place (rotate about the plane).
Detection diagnostic: an inspector panel showing which bones got paired with which, plus any unpaired bones. Helps users verify their rig follows the convention before relying on mirror ops.
Hooks: this slice provides a BoneNamingMap and PoseMirror::mirror(pose, namingMap, plane) API consumed by:
Parent epic: #554
Goal
The plumbing every other "mirror" operation needs: detect left/right bone pairs from naming conventions, expose a mirror plane, and provide the actual pose-mirror operation that the Animation epic's Pose Library (#521) and Slice D's weight-mirror need.
Scope
_l/_r,_L/_R.l/.r,.L/.RLeft*/Right*(Mixamo / Unity HumanIK style)*_left/*_right<pattern>/<replacement>regex pairs in settings, persisted per project.PoseMirroroperations:Hand_l→ press mirror-selection →Hand_ris now selected.BoneNamingMapandPoseMirror::mirror(pose, namingMap, plane)API consumed by:Acceptance Criteria
_l/_r, generic.l/.r).scene.skel.mirror.*.Effort
~6 days.