Making the mirror tool axis selection interactive instead of using a popmenu.
Mirror is now just a constant -1 scaling transform, which enables you to choose the mirror axis through hotkeys (x,y,z) and with MMB. It also means it's easier to select the correct axis if you're not sure which is which and gives access to all the orientation supported in transform (including custom user orientations).
Mesh and Object header menus still have the individual axis as options but have an added "Interactive Mirror" which just enters transform and lets user pick the axis there. Ctrl-M enters "Interactive Mirror" too.
In a nutshell, this changes adds more possible mirroring axis and unifies the mirror axis selection process with transform constraint axis selection.
Problem: artist wants character to walk in grass, but still have all rendered
in seperate render-layers, for postpro effects and vblur. How to efficiently
create a mask image you can put *over* the character for the grass?
Solution has two parts; this commits allows any layer inside of the renderlayers
to become a Z-mask (Z values for solid gets filled in, but not rendered).
Second part of commit is render option "Only render stuff that's in front of
a zbuffer value that was filled in (saves render time)
of strands changing between frames, vector blur couldn't work. Now
speed vectors are interpolated from the surface. This also means
child particles don't have to be computed in the previous and next
frames, so saves time too.
Each Ipo block (actions, objects, etc) stores the last view
of the ipo window. Nice for selecting objects/bones and then getting
the previous view back.
When you use option "Lock time to other windows", this option is very
annoying; the action window then shifts all channels around, almost as
if this is a bug.
Up/Down buttons which are disabled are now always drawn, but those that are disabled (cannot be done) now have their 'button backgrounds' not drawn. Also, they won't do anything when clicked.
This commit introduces the ability to give groups of bones different colour-sets, which enables them to be more easily identified in the 3d-view. Currently, custom bone colours have been implemented as a way to visualise bone-group membership (after all, colours and groups are both just ways of managing bones).
Usage Notes:
* Each theme currently has 20 Color-Sets available for Bones.
These can be accessed from the "Bone Color Sets" option under the Theme buttons. (Note: currently, I haven't defined any default colour-sets. Donations welcome on this ;-) ) As such, colour sets are not saved per file! You will need to save the theme to preserve the color set for the next session.
* Each Bone-Group can use any one of these 20 sets, or just use the default colour-set.
Use the "GroupCol" button to set this. When a set has been chosen, three little rectangles are drawn beside the button to preview the colours the set provides.
* A bone must belong to a Bone-Group to get that group's colours.
* "Colors" toggle on "Armature" panel must be enabled for these custom-colours to be shown for all bones that can have them.
This toggle is off by default, but is there to allow rigs to be debugged (by colours) for example.
* The "Use 'Constraint' Colouring" option (per Colour Set), determines whether the colours denoting presences of constraints, ik, or keyframes are drawn in conjunction with the custom colours. It is off by default, as in many combinations, they look quite ugly when used in conjunction with custom colours.
* Custom colours are only shown in PoseMode
Assorted Notes:
* I've tested this thoroughly, and there shouldn't be any problems caused by this.
* In the process, I found a bug with envelope bone drawmode. In wire-frame mode, all bones got scaled up by several types.
* I've cleaned up the armature drawing code a bit (mostly fixing messy white-space usage), but also creating a centralised method of setting colours for bones (currently only used for bones in PoseMode).
The 'Determinator' input didn't work at all - there was some quite weird code in there. I think the patch review process could have been quite a bit better on this one.
New Stuff:
* When in PoseMode, the Ctrl-G hotkey now presents a menu with options for manipulating Bone Groups. There are options to add/remove all selected bones from a certain group.
TODO - add appropriate entries to menus
Bugfixes:
* Renaming Bone-Groups in the buttons panel could cause segfaults or memory corruption. Wrong maximum-length for button used here (it's far too easy to miss).
* In the Action Editor, (re)grouping channels didn't take into account whether a group was expanded or not. This meant that selected channels from inside a collapsed group got added to the new group too.
Also, duplis are now taking into account, the proper way to exclude
them is to set the material to be not traceable.
Removed an unnecessary pointer from the VlakRen struct to save some
memory, not really that significant, but still, saves 70 mb for 10
million faces.