Add Mesh equivalent to BM_edge_other_vert().

/* 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);

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46889 954f8c5b-7b00-dc11-b283-0030488c597c
Add skin modifier: DNA, RNA, UI, and MOD_skin.c implementation.

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.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46890 954f8c5b-7b00-dc11-b283-0030488c597c
Add new theme-able color, TH_SKIN_ROOT.

Bumped file version from 263.5 to 263.6 to ensure the default
TH_SKIN_ROOT color gets set.

Skin modifier documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/SkinModifier

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46891 954f8c5b-7b00-dc11-b283-0030488c597c
Draw skin vertex roots in edit mode.

Roots are drawn with a view-oriented dashed red circle around the
vertex location. The circle's radius is the average if the skin
vertex's X and Y radii.

Skin modifier documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/SkinModifier

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46892 954f8c5b-7b00-dc11-b283-0030488c597c
Ensure skin nodes get created when adding modifier.

Skin modifier documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/SkinModifier

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46893 954f8c5b-7b00-dc11-b283-0030488c597c
Add skin vertex operators.

* Add operator to mark selected vertices as skin roots.
* Add operator to mark/clear selected vertices as loose.
* Add operator to equalize skin radii.

Skin modifier documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/SkinModifier

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46894 954f8c5b-7b00-dc11-b283-0030488c597c
Add operator to extract armature and vertex groups from skin.

* 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

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@46895 954f8c5b-7b00-dc11-b283-0030488c597c