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
User-facing changelog: "QtMeshEditor now edits rigs: create/remove/rename bones, paint skin weights, author IK chains and constraints, customise bone display."
Acceptance Criteria
Every CLI subcommand listed works and supports --json where applicable.
Every MCP tool works via stdio + HTTP.
CLI ↔ GUI ↔ MCP parity for every scriptable rig operation.
Breadcrumbs emitted for every user-visible rig action.
All listed test files exist and pass on Linux / macOS / Windows CI.
CLAUDE.md Skeletal Rigging section rewritten and accurate.
Parent epic: #554
Depends on: Slices A–I (functionally needs A, B, C, D, F minimum)
Goal
Bring skeletal rigging to project conventions: CLI, MCP, breadcrumbs, tests, docs.
Scope
qtmesh rigsubcommand:qtmesh rig model.fbx --add-bone <name> --parent <parent> --pos x,y,z -o out.fbxqtmesh rig model.fbx --remove-bone <name> [--transfer-weights] -o out.fbxqtmesh rig model.fbx --rename-bone <old> <new> -o out.fbxqtmesh rig model.fbx --reparent <bone> <new-parent> [--keep-world|--keep-local] -o out.fbxqtmesh rig model.fbx --attach-bone <bone> --to <target.fbx> -o target-out.fbxqtmesh rig model.fbx --capture-rest-pose --animation <anim> --time <t> -o out.fbxqtmesh rig model.fbx --paint-weight <bone> --json-strokes <strokes.json> -o out.fbx(offline weight paint via stroke description; ambitious — verify before committing)qtmesh rig model.fbx --mirror-weights --axis x [--naming <regex-pair>] -o out.fbxqtmesh rig model.fbx --normalize-weights -o out.fbxqtmesh rig model.fbx --limit-weights <N> -o out.fbxqtmesh rig model.fbx --ik-create --chain <bone1>,<bone2>,<bone3> --target <target-node> -o out.fbxqtmesh rig model.fbx --ik-bake -o out.fbxqtmesh rig model.fbx --constraint-add <bone> --type look-at --target <node> -o out.fbxqtmesh rig model.fbx --list-bones [--json]— already exists in some form viainfo; verify and consolidate.add_bone,remove_bone,rename_bone,reparent_bone,attach_bone_to_entity,duplicate_bonecapture_rest_pose,reset_rest_pose,snap_bones_to_posepaint_skin_weight,mirror_skin_weight,normalize_weights,smooth_weights,limit_weightscreate_ik_chain,bake_ik_to_fk,set_bone_constraintset_bone_display,add_bone_group,set_bone_layerQSocketNotifier. NoBlockingQueuedConnection.scene.skel.bone.*,scene.skel.hier.*,scene.skel.rest_pose.*,scene.skel.weight.*,scene.skel.mirror.*,scene.skel.ik.*,scene.skel.display.*,scene.skel.constraint.*,scene.skel.envelope.*.ui.actionfor menu/toolbar clicks.SkeletonEditor_test.cpp— CRUD on fixture skeletons.SkinWeightController_test.cpp— normalize, mirror, smooth, limit.IKChainController_test.cpp— 2-bone solver math + bake.PoseMirror_test.cpp— all four naming conventions + mirror op.BoneConstraintEngine_test.cpp— each constraint type (coordinated with Anim: Slice H — Constraints (look-at, IK targets, parent-of, copy-rotation) #525).CLAUDE.mdunder Architecture covering: bone CRUD, hierarchy, rest pose, weight paint, mirror conventions, IK, constraints, display, envelopes.qtmesh rigexamples to the CLI block.Acceptance Criteria
--jsonwhere applicable.CLAUDE.mdSkeletal Rigging section rewritten and accurate.Effort
~6 days.