Support applying a flipped pose, useful when animating symmetrical rigs.
This is similar to "Apply Visual Transform to Pose" with additional
features useful when flipping a pose.
- Optionally use the 3D cursor as an origin:
to flip root poses that aren't located near the objects origin
which would otherwise flip them along the objects local X axis.
- Optionally flip custom properties.
- Skip constraints so unmodified values are copied,
needed for some rigs to work properly.
This can be accessed from the Apply menu, as well as the RNA function:
`object.pose.apply_pose_visual_flip()`
----
### Motivation
This patch adds functionality to flip an entire pose on the X axis using a symmetrical rig.
**Alternative Solutions**Currently the only way to do this is to copy the pose, then use paste-flipped, while this can work, it doesn't give much control and isn't as convenient to integrate into other tools.
An alternative approach could be to flip values in the action, there are pros and cons for this.
It's more involved to flip transform channels, with multiple problems such as missing F-Curves,
which would then need to be flipped by their value directlyThis was written so the asset manager can load flipped poses.
It would require keying these channels as well.**Alternative Solutions**
In contrastAn alternative approach could be to flip input values directly,
It's more involved to flip transform channels (it could behave like copy/paste flipped), while this can work, applying visual transform is similar to using regular transform which the user is then responsible for keyingal-keying was simper to implement.
**Limitations**
When testing, I found flipping with constraints made the main rig from `sprint.blend` fail.
There is an option to disable constraints to workaround this. It's an example where only flipping input values could be better.
**Open Topics**
- Custom property handling could be reconsidered.
Currently this flips all custom properties, which could cause problems if some of these are used for purposes other than controlling bone animation.
We could:
- Only flip keyed/driver properties (or properties that are part of a keying set).
- Only flip numeric properties (float/bool/int).
- Support alternate pivot points/spaces (low priority)