Another maya version, another plugin update. When I updated the archive I noticed that it contains a version from 2005 that works in maya 5. I wonder if anybody in the world is still using maya 5. From what I can tell, people still use the poseDeformer though. For 10 years I've been able to recompile against each new maya version with minimal to zero changes to the source code. I'm not sure how much longer that will be true. With 2016 comes viewport 2 and parallel evaluation as new defaults. The poseReader cone does not display in viewport 2, and performance of the deformer may actually be worse in parallel evaluation mode than it was before (I may be jumping the gun on that last conclusion since I'm still in the early stages of testing, so let me know if your results prove otherwise).

You can grab the update from my downloads page. Its windows only so far. If anybody wants to send me builds for other os's I'll add them to the archive. Alternatively if anybody wants me to link to versions they are hosting, then I'll do that too.

Matthieu Fiorilli from http://www.cgaddict.com has just released v2.0 of fStretch for Maya as "Donation Based" under a GNU General Public License.

"The idea behind the plug-in is to be able to drive blendShapes that are turned on
and off based on the tension and angle change that happens on a geometry.
These blendShapes are sculpted to adjust the deformations."

The plugin is nicely integrated into maya, comes with well written documentation and is multi-threaded.

Not only that, Matthieu has put together a series of videos showing usage examples, code explanations and "how-to" tutorials for compiling windows, osx and linux versions, making it an amazing resource for anybody interested in learning how to write C++ deformers for maya.

In barycentric coordinates - part 1 I showed a way to compute the barycentric coordinates for an interior point in a triangle, and described how the result could be used in a simple constraint example.

In part 2 I am going to show a python OpenMaya code example that could be used as the basis for some kind of data interpolation between meshes with differing topology.(more...)

Barycentric coordinates are useful when you want to transfer data between meshes that have different topology because they provide the basis for some simple interpolation. Take smooth skin binding for example. It is a commmon workflow, when painting weights, to start with a low resolution version of your mesh. When you are happy with the weighting you can use maya's copySkinWeights command to transfer those weights from the low resolution mesh to the detailed high resolution mesh, which may even be made up of several pieces. copySkinWeights interpolates the weights from the verts on the lo res mesh and copies the result to the hi res mesh. The smooth result you get with this workflow is usually something that would have been very difficult to achieve if you had tried to paint the weights directly on the hires mesh.(more...)

Since I don't get the time to update this blog much anymore, I thought I'd just drop in quickly to recommend a google groups mailing list that I have been contributing to for a while now. If you feel like some question/answer type discussions focused specifically on problem solving in maya this might be the place for you. There are a great bunch of knowledgeable people posting there already from time to time, but more will always be welcome. Just enter "maya he3d" in the google groups search.

Yesterday I wrote about my experiences with the OpenMaya modules for python in maya, and showed some code to get the closest vertex on a mesh from the position of a locator. Today I'm going to show the same code, rewritten to use the new Maya Python API 2.0, which, according to the intro in the manual, " is a new version of the Maya Python API which provides a more Pythonic workflow and improved performance."(more...)

Recently I was writing a python function where I needed to find the mesh vertex closest to a locator. I already knew how to get a list of vertices from my mesh, how to get their worldspace locations and how to iterate through them calculating the distance between each one and the locator to determine the closest. But the brute force approach would have been pretty slow on a dense mesh.

I'm not very familiar with the OpenMaya classes, but I was pretty sure one of them would have a method that would make this task much faster, so I began to google the problem.

Here is what I found... and what I had to do to get it to work. Advanced coders will probably find this trivial, but I'm guessing there are others like me that will find it interesting. (more...)

I added the 2014-x64 (windows) version of Michael Comet's poseDeformer to the downloads page.

I recently discovered a potential problem when using the poseDeformer in maya 2013 and 2014. The problem occurs due to changes brought about by the introduction of the node editor in maya. I've modified the poseDeformer code to work around the problem, but for any one who is interested, I'll describe it in more detail below.