Parent epic: #554
Depends on: Slice A (#555)
Goal
Beyond create/remove, riggers need to reshape the bone graph: reparent a chain to a different parent, detach a chain to root, attach a chain to another entity's skeleton (the user explicitly asked about this), split a long bone in two, connect/disconnect bones from their parent's tail.
Scope
- Reparent: drag a bone to a new parent in the outliner, or right-click → "Set parent…". Children of the reparented bone follow.
- Transform mode: pick "keep world position" (default, recomputes local TRS) or "keep local position" (TRS unchanged, parent change only).
- Detach: lift a bone (and its children) to be a child of the skeleton root.
- Attach to entity's skeleton:
- Source: selected bones in entity A.
- Target: entity B (must have a skeleton; one is created if absent).
- Copies the bones into B's skeleton, preserving names (with collision-resolution rules: rename source
Tail → Tail.001 if B already has Tail).
- Copies the corresponding
VertexBoneAssignments only if the user also selects the geometry to transfer. By default, attach is rig-only — the source bones move to entity B but the source mesh stays bound to entity A. Useful for adding a "weapon socket" bone to a character.
- Split bone: insert a new bone halfway down an existing one (or at a custom position along the bone's axis). Original bone becomes the parent, new bone is the child. Weight redistribution: linearly interpolated based on the split position.
- Connect / disconnect: toggle whether a bone's head coincides with its parent's tail (Blender convention).
- Mirror chain: duplicate a selected chain across an axis with
_l/_r naming convention (depends on Slice E's naming-detection plumbing — coordinate; if Slice E hasn't landed, ship "duplicate without rename").
- Undo: new commands
ReparentBoneCommand, AttachBoneToEntityCommand, SplitBoneCommand, ConnectBoneCommand. Each preserves the previous skeleton state for full revert.
- MeshImporterExporter round-trip: hierarchy changes survive glTF / FBX export.
Acceptance Criteria
Effort
~10 days. Attach-to-entity is the trickiest; cross-entity skeleton manipulation has edge cases on every existing entity referencing the source skeleton.
Parent epic: #554
Depends on: Slice A (#555)
Goal
Beyond create/remove, riggers need to reshape the bone graph: reparent a chain to a different parent, detach a chain to root, attach a chain to another entity's skeleton (the user explicitly asked about this), split a long bone in two, connect/disconnect bones from their parent's tail.
Scope
Tail→Tail.001if B already hasTail).VertexBoneAssignments only if the user also selects the geometry to transfer. By default, attach is rig-only — the source bones move to entity B but the source mesh stays bound to entity A. Useful for adding a "weapon socket" bone to a character._l/_rnaming convention (depends on Slice E's naming-detection plumbing — coordinate; if Slice E hasn't landed, ship "duplicate without rename").ReparentBoneCommand,AttachBoneToEntityCommand,SplitBoneCommand,ConnectBoneCommand. Each preserves the previous skeleton state for full revert.Acceptance Criteria
scene.skel.hier.*per op.Effort
~10 days. Attach-to-entity is the trickiest; cross-entity skeleton manipulation has edge cases on every existing entity referencing the source skeleton.