Action Channels and Constraint Channels can be 'protected' (aka locked). That means that the keyframes for that channel cannot be moved (by any transforms or operations which modify the times the keyframes occur at), be duplicated or destroyed, or have their handle type changed.
This is useful for protecting parts of animation that has already been finalised, while other parts are worked on.
There is a lock icon on the right-hand side of the channel names. This icon serves two purposes - as an indicator or whether the channel is locked, and also as the way to turning locking on/off for the channel in question.
Channel locks also have effect when the action's keys are displayed in the NLA editor. However, they don't currently have any connection with the ipo editor and ipo curves, so it is still possible to insert keyframes and modify keyframes from the ipo editor directly.
When animating, it is often useful to be able to visually see where the 'pauses' are between keyframes. Long keyframes do this - linking two keyframes in the same channel together.
Long keyframes are only drawn when the two keyframes have the exact same values. This has to happen for every ipo-curve represented by the keyframes shown for a long keyframe to be drawn.
There are two new theme colours for the action editor. They are for the selected and deselected colours of the long keyframes (currently defaulted to be the same as the NLA strip selection colours).
Shape Key Sliders
Due to a few internal cleanups of code, it is now possible to save the visibility status of Shape Key sliders. Also, there are no more problems with having multiple Action Editors open, and all displaying Shape-Key actions.
So far, snapping tools have been restricted to 'Snap to Nearest Frame' and only for action channels. Obviously, this is too limited. Now, you can also snap keyframes to the current frame.
- Snap To Nearest Frame
- Snap To Current Frame
- Snap To Nearest Marker
Hotkey for Mirror tools is ⇧ ShiftS
It is also worth mentioning, that these now work correctly with actions scaled in the NLA editor. Previously, there could be unpredicatable results as there was no correction applied.
Auto-Snapping During Transforms
Many people have requested such an option, as it reduces strain on fingers. There's a new selection-box on the header of the action editor, which sets the mode of auto-snapping for transforms. By default auto-snapping is off.
There are 3 modes of auto-snap:
- Off - transforms per normal
- Frame Step - grid-step transform (may have errors with scaled actions)
- Nearest Frame - true snap-to-frame (takes into account nla-scaling)
These translate to the following hotkeys when transforming:
- Off - no keys press/held (as it's always been)
- Frame Step - Ctrl (as it's always been)
- Nearest Frame - Shift (replaces old shift-key behaviour which was not useful)
Like in the Ipo Editor, it is now possible to 'mirror' keyframes over a line. This makes it easier to reverse an action. Only two of the options from IPO editor have been ported over though.
- Mirror Over Vertical Axis:
Mirrors selected keyframes using frame == 0 as the mirror-line
- Mirror Over Current Frame:
Mirror selected keyframes using current frame as the mirror-line
- Mirror Over Horizontal Axis:
Mirrors selected keyframes using value == 0 as the mirror-line
- Mirror Over Selected Marker:
Mirrors selected keyframes using the frame of the first (chronologically) selected marker as the mirror-line
Hotkey for Mirror tools is ⇧ ShiftM
Selection tools in the Action Editor have always been limited to only a few basic ones. This release, several new options have been added.
Selects the keyframes that were not selected, and deselects the keyframes that were selected.
Column Select - On Selected Keys
Selects all the keyframes that occur on the same frame as selected keyframes. Use the hotkey K.
Column Select - On Selected Markers
Selects all the keyframes that occur on the same frame as selected markers. Use the hotkey ⇧ ShiftK
Column Select - Between Selected Markers
Selects all the keyframes that occur between and on the first and last selected markers. Use the hotkey CtrlK
The Plumiferos team requested being able to select the parent bone of selected bones in both EditMode and PoseMode. This is useful when using a fullscreen 3d-View, so an Outliner view is not required to be able to select the parent bone(s).
Use the hotkey P in EditMode and PoseMode to access this functionality. You can also find it in the menus (Select in header and toolbox). It does however, rule out the possibility of running the game engine while in either mode, but that is a minor issue.
Interactively Setting Bone Roll
Setting the roll value of bones manually has always been a chore. Sometimes, especially on more complex rigs, it may be necessary to manually assign the roll values. However, adjusting the roll value could only be done for one bone at a time, and it was difficult to gauge what the right amount to adjust it was.
Now there is a new transform mode/tool in EditMode. You can select multiple bones and set their roll values interactively. It acts like rotating the bones around the local y-axes in PoseMode. For better feedback, it is recommended that you turn on Draw Axes for the Armature in question.
You can access this tool by pressing CtrlR
Copy Pose Attributes Menu
There were some missing entries which made rigging a bit more tedious. Now it is possible to copy Transform Locks, DOF settings for IK chain members, and even the Custom Shape setting.
It is also now possible to copy the transforms caused by constraints/IK on a bone to another bone. For this, use the 'Visual' options instead of the 'Local' options.
Custom Bone Shapes
Now there is a toggle in the armature panel to enable/disable the drawing of custom bone shapes for all bones of an armature.
Snap Bone To Location in PoseMode
Now the Snap To Location (⇧ ShiftS) tools for bones in pose-mode work correctly. Previously, only one of these tools was implemented, but it only worked in some cases (when bone had no parent and was not rotated, and the armature was not transformed in any way).
Snap Bone To Location in EditMode
Now, when both ends of a bone are selected, only the head of that bone gets snapped to the snapping point. The tail will get offset by the same amount that the head gets offset by, thus preventing zero-length bones.
After all these years, it is now possible to (re)center armatures like you can do with meshes and curves.
At the moment, you can only access this functionality from the menus (Spacebar->Transform) as the armature button panels are pretty crowded.
Constraints and other pose-level bone settings are no longer lost when joining armatures.
Insert-Key Menu for Textures
Two minor naming tweaks:
- Cloud -> Clouds
- DistNoise -> DistortedNoise
Curves in Editmode
HKEY and Shift HKEY are used to change the handle type of curve control points in the IPO and Action Editors, and also for curves in the 3d view until recently.
This commit reverses the hotkey changes in:
For curves, I've changed the show/hide points hotkeys to:
- Ctrl Alt HKEY == Hide Point(s)
- Alt HKEY == Show All Points
These aren't optimal, but at least there are usable hotkeys for this for now. Before, there had been a long-standing hotkey conflict. Better hotkeys can be designed as part of 2.5 work.
Ctrl-Click to add a keyframe in the active ipo-curve only made sense when showkeys was off. Otherwise the drawmode would change from keys to curves then back to keys when some other tool was used.
This commit adds a few open/closed 'eye' icons to the NLA editor to toggle IPO-block muting on Object (IPO) channels, and Action Strip muting on Action Strips, like in the Action Editor.
Outliner - Patch #4364
Now the Outliner can be scrolled horizontally too. This was the first patch I ever submitted, but it's gone through many revisions due to ugly Blender bugs that needed to be fixed.
- I discovered an ancient bug which would cause Blender to hang when loading a file saved with horizontal scrollbars turned on for the Outliner/OOPS.
- Therefore, I've added special B_SCROLLO and HOR_SCROLLO defines for use by the Outliner only. These are used in place of B_SCROLL and HOR_SCROLL so that older Blender's won't choke on this stuff. Thanks for this suggestion Ton.
- The hanging occurred in draw_scroll in draw_ipo.c
IPO Cleaning - Refactor
I've finally come to the conclusion that the old code used to clean up IPO-curves was utterly unsafe/unstable. It used to have a lot of memory-related bugs early on, which I had resolved, but still I found a file where this broke quite badly (thanks Cessen).
Now the code should be saner, as it does away with that evil memory copying that seems to be at fault. It would be advisable to have this properly tested for a few days before considering it for inclusion in 2.45 (stable) branch.
When in EditMode for IPO-curves, keyframes are now pasted from the IPO-editor's copy/paste buffer instead of the entire curves being pasted. This makes it possible to 'move' keyframes from one IPO-curve to another.
- Only keyframes in the copy/paste buffer that are selected, are pasted
- All keyframes that are pasted, are pasted relative to the current frame, with the current frame being the location of the first pasted keyframe.
- Pasted keyframes replace exisitng keyframes if they occur at the same location.
Renamed Root/Tip X/Y/Z buttons in Armature Editmode Transform Panel (NKEY) to Head/Tail for consistency with the rest of Blender.
Added some features to the NLA Editor that had previously only been added for the Action Editor.
- It is now possible to choose whether timing is displayed in Frames or Seconds like in many of the other Animation Editors. Use Ctrl-T or the View menu to change this.
- Autosnap behaviour from Action Editor is now also available for the NLA Editor. It was partially done in the previous commit (for transform). Use the new combo-box on the NLA Editor header (like the one on the Action Editor header) to set this.
IPO Editor Transform
- It is now possible to rotate the Bezier controls for the IPO Editor (RKEY)
- IPO Record has now been remapped to Ctrl R.
Added an option to only display keyframes of the selected action-channels and/or the active material. This is should offer some speedups on really heavy datasets. Use the (View)->(Only Selected Data Keys) option to turn this on.
In future, more filtering options could be added here too...
hold for NLA
Patch #7779: Make the 'Hold' option work with NLA action modifiers Patch by: Matt Ebb (broken)
Currently in Blender, NLA action modifiers can work in very wacky and mysterious ways.
If an action is being modified with a path deform, when it reaches the end of that strip, it will snap back to the original un-modified location, regardless of whether the strip 'Hold' option is on. It's very frustrating to work with, and causes all sorts of problems - if you use a path to make a character walk from point A to point B, you generally want him to stay at point B, and not jump somewhere completely different, just because the strip ended.
This patch fixes this behaviour, and makes it much more sensible and predictable. There is a chance that this will break old files that were reliant on the old broken behaviour though, but I think it's definitely worthwhile to fix this problem.
Check the demo file in Blender 2.45 vs one with this patch applied - you can see the difference in behaviour.
Demo File Link (attachment in original tracker post): https://projects.blender.org/tracker/download.php/9/127/7779/4856/wheelsetup2.zip
NLA - Scale Setting for Strips
NLA-Strips now have a new setting: Scale.
It determines how much the action-range is scaled for each repeat, instead of the scaling being implicitly determined based on repeats + strip-length.
One of the instant benefits of this, is that when increasing the number of repeats, the strip length increases by the right amount. Thus, increasing the number of repeats retains a constant speed.
Hopefully we can prevent weirdly scaled actions this way. (i.e. 0.00001 frames long action * 10000 or so)
Todo: - Transform code needs to be able to set the scale setting (it doesn't yet) - Add a new option to "apply scaling", to fix up problems with old files that have really bad scaling. Situations when this is needed could get indicated in the interface too... (red background for "Scale" field?)
- Added a new tool to Alt-S menu: "Apply Scale"
This tool causes all the keyframes in the active strip to be moved to their NLA-scaled times, the scale to be set to 1.0, and the frame ranges recalculated accordingly (to remove any nasty weird errors)
- Scale field now draws red when the action-range is < 1, and the tooltip in this case instructs the user how to fix this (by using "Apply Scale").
Changed the default hotkeys for playing animations to be more useful IMO (ported from AnimSys branch):
- Alt-A now only plays the animation in the active space, if that space is a 3D-view. Otherwise, it plays the animation in all spaces. The old behaviour simply didn't make sense for animation editors, where you'd simply see the current-frame marker moving...
- Alt-Shift-A now plays the animation in all spaces regardless of whether they are active (including 3d-views)
Patch #8177: Timeline Performance Patch Patch by: Adriano Macchietto (macchiea)
This patch optimises the way keyframes are drawn in the Timeline, so that it is more responsive when working with heaps of keyframes (i.e. motion-capture data).
Detailed Description of Patch (from author):
- No longer uses a list to store the keys before drawing. Uses
- Culls the drawing of keyframes outside of the visible window.
Good for dealing with long mocap tracks.
- Performs a check to avoid redrawing a line over a line which
has already been drawn to the same pixels. This speeds up the scenario when you have many keyframes and are zoomed out.
- Batches the draws into one glBegin/glEnd block.
This is all done on a per IpoCurve basis.
Ctrl-PageUp/Down in 3D-view now behaves the same as for the Timeline for consistency. The old behaviour for this (jumping between ob-ipo keyframes (Draw/Show Keys)) was not used that often, and has now been remapped to Shift-PageUp/Down
When adding a new Action Strip to an Object which didn't have any Action Strips previously, NLA-override mode is turned on by default for that object (the Action/NLA-icon beside the expand/collapse triangle).