This commit restores the group colours support for F-Curves and F-Curve Groups
in the DopeSheet and Graph Editors. Currently the relevant settings for groups
are only exposed via RNA, but a followup commit will add support for
automatically setting these colours. By default, DopeSheet and Graph Editors are
set to display these colours if/when they are available.
This functionality used to be in 2.48, and is a useful mechanism for visually
distinguishing between channels for different controls when animating (if group
colours are used on the rigs too).
* if the image is not loaded (bindcode == 0) load the image
This needs to be called often. If the image is 'cleaned' by Blender, it will not help to load it after.
[ gl_load returns the errors: GL_STACK_OVERFLOW(1283) or GL_STACK_UNDERFLOW (1284) ]
Thanks Campbell for the suggestion on how to handle this (BKE_image_tag_time)
Restored single triangle for special menus, which still isn't perfect but
probably makes more sense.
Added drawflag bit flags to button, which is currently used to declare, that
button need to have up/down arrows. This is needed because it's tricky to
distinguish if button should have such arrows. For example, ID search buttons
is a simple block button which doesn't directly mean it'll have pop-up menu
and not all buttons which cases pop-up menu to display need to have such
arrows.
So currently only ID selector button is forcing up/down arrows to be displayed,
all the rest buttons now behaves in the same way as it used to be before.
The code was looking to see if the priority was strictly greater than the current priority, but it seems that an equal priority should also override (at least the report seems to suggest that this is the behavior from 2.49).
* Made the new custom theme options a bit better and more compact.
* Added a few separators to better distinguish these settings from the actual node buttons.
Modified the switch statement to use the ModifierType enum and changed
the default case to use specific missing values. Compiler can then
issue warnings when new modifier types are added (at least gcc 4.6.3
does)
The up/down triangle icon for menus was not drawing when a menu had
an icon; even though space was reserved there. Note: this can only
work now with removing the ugly "down triangle" icon from buttons like
next to the Material list box (button pops up menu with tools).
Looks nicer this way anyway.
* The operator creates bones for each input edge (does not subdivide
them like the skin operator does), adds a fake root bone for skin
roots with multiple children.
* The operator adds vertex weight groups to the original mesh.
* Make copy_object_transform() public, used to match the armature
object to the mesh object.
Skin modifier documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/SkinModifier
Skin modifier documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/SkinModifier
Implementation based in part off the paper "B-Mesh: A Fast Modeling
System for Base Meshes of 3D Articulated Shapes" (Zhongping Ji,
Ligang Liu, Yigang Wang)
Note that to avoid confusion with Blender's BMesh data structure,
this tool is renamed as the Skin modifier.
The B-Mesh paper is current available here:
http://www.math.zju.edu.cn/ligangliu/CAGD/Projects/BMesh/
The main missing features in this code compared to the paper are:
* No mesh evolution. The paper suggests iteratively subsurfing the
skin output and adapting the output to better conform with the
spheres of influence surrounding each vertex.
* No mesh fairing. The paper suggests re-aligning output edges to
follow principal mesh curvatures.
* No auxiliary balls. These would serve to influence mesh
evolution, which as noted above is not implemented.
The code also adds some features not present in the paper:
* Loops in the input edge graph.
* Concave surfaces around branch nodes. The paper does not discuss
how to handle non-convex regions; this code adds a number of
cleanup operations to handle many (though not all) of these
cases.
/* Return the index of the edge vert that is not equal to 'v'. If
* neither edge vertex is equal to 'v', returns -1. */
int BKE_mesh_edge_other_vert(const struct MEdge *e, int v);
worth noticing is that the example in bpy.types.Mesh is wrong too (Mesh type does not have an uv element)
but I would prefer someone more familiar with bmesh to take a look at those