bhSkinTools


These are the tools that I probably use the most right now. Since I got a lot of the rigging automated, the thing that takes most time is weight-painting and refining. This toolset offers great controll over the weights on a per vertex basis. It also allows me to ex-/import and mirror the currently selected vertex-weights.

The top part hold functions for managing the dictionaries. For all operations I use the vertex indices of the mesh. In production it can happen that from one version of a character mesh to the next not much changes in the shape, but the numbering of the vertices is completely different. This would make the saved skin-weights worthless. But if you have the original mesh (from which the weights were exported) and the new one, you could compare them and build a lookup-table, a dictionary. By going through the world-space positions of all the vertices of one model and comparing them with the positions of the second one, I pair them up with the closest match. This way, before applying the skin weights, I translate the vertex-index through the dictionary and know to which new vertex to apply the weights.
Similarly the mirror dictionary only takes one model as input, but matches the vertices of one side up with the other. If there is a skin applied to the mesh, the influences will also be paired up. Occasionally it can happen that multiple influences occupy the same position in space. Since there is no way to calculate which influances to pair up, you get a prompt dialog to choose which of the matches to pair an influence with. This extra step relies on clear naming conventions of the influences so the user can keep them apart and make a correct decision.
Right-clicking those buttons reveals some more functions. You can select the vertices which haven`t been paired up, or for the mirror dict you can also choose just to match the influences or print out the influence matches that are currently stored.
In production, I had it happen that there were slight deviations in the models that I received, or in parts that were supposed to be symmetrical. Sometimes you cannot delete half the model and redo the symmetry. For that reason, to optimise the symmetry for example, you could build a dictionary with a high tolerance and use the result to nudge the vertices to match up exactly with the other side.

Quick buttons: "conform" makes sure the selected vertices move together. Use of the smooth brush when weight painting can make horns, for example, stretch and shear. To fix this is quite easy, just make sure all the vertices have exactly the same weights. Painting this can be a pain. This function averages all the weights of the selection and then applies the result to all the vertices.
"Smooth", does just as the name suggests, it adjusts the weights of the selections to better match the weights of the neighbouring vertices. This is especially handy for removing clear spikes in skinning. It works similar to .Maya`s hammer-function.
"Mirror vertices" uses the calculated dictionaries to translate the weights of the selected vertices to the other side. This offers major benefits over Maya`s built in mirroring. It is more accurate because it is on a per vertex basis, only matched vertices are mirrored. You can mirror just a selection of the weight, and are not forced to do the whole mesh. Once the dictionary is calculated, you can mirror the weights in any pose, so you can evaluate the result immediately.
"Paint weights" is a quick button to enter the weight painting tool of maya on the active object. One other nifty feature of this button is that when you right-click it, you can choose to start painting on the active influence list, listed below. This means it enters the tool, pins the active influences and locks all the hidden influences.

A major portion of the interface is occupied by the fine-tuning section. Select vertices you want to adjust and hit the "load verts" button. It checks which influences are acting on the selection and lists these. They are color-coded to indicate how much influence they have (on average) on the selection. Blue means little influence, red means a lot. Following the influences are buttons to slightly increase, decrease, zero out or solo them. Right-clicking the influences allows you to select the influenced vertices or add or substract from selection.

The final section of the interface is for exporting and importing the skin weights, storing them based on vertex index. The indices are translated through the `vert dict` if one is calculated.