Notes about notation
- Excluded from Multi-Object Editing - Everything in (parentheses)
- Priority items (i.e. for Spring migration) - Everything in bold
Notes about approach (25/5)
Talking with the animators here in the studio, it seems that most of the time, animators don't actually want most tools to work with "full" multi-object posing behaviour. So, what we might do here instead is that by default, pose operators still work in the old (single active object) way, with just a few specific exceptions added on a case-by-case basis (as/when desired by animators). Examples here include mouse select tools and basic loc/rot/scale transform tools. Many other tools may be best left as single-object for now.
pose_edit.c
POSE_OT_paths_clearrB478446e3a45c5eff7aed238b92e5d3d7cf671c7aPOSE_OT_paths_calculaterB478446e3a45c5eff7aed238b92e5d3d7cf671c7aPOSE_OT_paths_updaterB478446e3a45c5eff7aed238b92e5d3d7cf671c7aPOSE_OT_flip_namesPOSE_OT_autoside_namesrBc7bbcfe95444e730eacf655fd982f5091d5e2ff6POSE_OT_rotation_mode_setrB3b9b6a80ba6311281bb90e2a2e63a8c34a0b575dARMATURE_OT_armature_layersrB3a8b56ce24c9228a885d3c44f4c22d90be04ae4cPOSE_OT_bone_layersrBbb7f4f5714430beda44403f0bd75c368e8f86a39POSE_OT_hiderBc9d1082a2c17162ea6d23415e3560dabfc6e22e1POSE_OT_revealrBc9d1082a2c17162ea6d23415e3560dabfc6e22e1POSE_OT_quaternions_fliprB7560aabf71dd4c7687ff0110e722287d66358bbd
pose_group.c
Note: With these ones, we made the decision to only allow supporting the "active object" as displayed in the UI (where these operators appear). As a result, multi-object editing doesn't actually function with these operators. But also, no further changes are required
- (
POSE_OT_group_add) - (
POSE_OT_group_remove) POSE_OT_group_unassignPOSE_OT_group_assign- (
POSE_OT_group_move) - (
POSE_OT_group_sort) POSE_OT_group_selectPOSE_OT_group_deselect
pose_lib.c
- Most operators here are fine, as they don't use the context iterators to loop over bones, and it doesn't make sense to apply Pose Libraries (defined for a single armature) across multiple selected armatures.
- The one exception here is the ~~POSELIB_OT_pose_add~~ operator, as it needs to use the Whole Character (selected) KeyingSet to determine what bones get added to the library. The one problem with this though is that this keyingset uses the context.selected_pose_bones iterator, which includes bones from multiple active armatures. We'll need a solution here to allow restricting keyingsets without also losing all filtering capabilities in the iterator (i.e. we'd lose the name-filtering used to determine what bones should/shouldn't get included). (done rBc462c43c1a05).
POSELIB_OT_action_sanitizePOSELIB_OT_apply_posePOSELIB_OT_browse_interactivePOSELIB_OT_newPOSELIB_OT_pose_movePOSELIB_OT_pose_removePOSELIB_OT_pose_renamePOSELIB_OT_unlink
pose_select.c
VIEW3D_OT_select_borderVIEW3D_OT_select_circlePOSE_OT_select_allPOSE_OT_select_mirrorPOSE_OT_select_constraint_targetrB374a8b9da50bdc3c40cef9394065d5394bb91f33POSE_OT_select_linkedPOSE_OT_select_hierarchyrBd95bb08f395ace3fdfed71058658b7acef458dedPOSE_OT_select_groupedrBcaad2d7528bc38934a90bb30b417068b71076bcd
pose_transform.c
POSE_OT_visual_transform_applyrB4376bb64054cb8de0b71f85d4faa832d4ec736cdPOSE_OT_armature_applyPOSE_OT_copy- [To be ported by @Joshua Leung (aligorith)] (*1)POSE_OT_paste- [To be ported by @Joshua Leung (aligorith)] (*1)POSE_OT_transforms_clearrBe0478ae92fbefbc648bfb5a5f8370a53af1c6679POSE_OT_loc_clearPOSE_OT_rot_clearPOSE_OT_scale_clear
POSE_OT_user_transforms_clearrB4529192157135bfdc5f5fb48c798f7b205f25570
(*1) Copy/Paste - These currently don't have any problems working with multi-objects (i..e you don't get wrong bones getting copied/pasted). The only problem is that you can only from and paste to whatever armature is active at the time the operator is invoked. (So, you can copy a pose from one armature and paste it into another without leaving pose mode, as long as both objects are in posemode). So, currently marking these as working.
pose_slide.c
NLA_OT_bakerBf10bc11061cf rB39ad5c3ef1ea (though undo doesn't seem to be working well).POSE_OT_breakdownrB3c61efcf206dcce904570baef1d5e209415d0ea9POSE_OT_relaxrB3c61efcf206dcce904570baef1d5e209415d0ea9POSE_OT_pushrB3c61efcf206dcce904570baef1d5e209415d0ea9POSE_OT_propagaterB3c61efcf206dcce904570baef1d5e209415d0ea9
Others
POSE_OT_ik_clearrBf3153f1c7f57c054ecc7d0f986c6afc1d70ffb7dPOSE_OT_ik_addrB7baa8d2e8f07328fbb187e82f477e56950c25c46POSE_OT_constraints_clearrB647218af07dab9d3abd9c3a058701ea36c87930dPOSE_OT_constraints_copyrB418c16bd3b799a95f9dc4d458213c60fba42626cPOSE_OT_constraint_add_with_targetsrB7baa8d2e8f07328fbb187e82f477e56950c25c46POSE_OT_select_parentrBdcf1210c44cb1e46bf387f326c5ee9daa2a53004