AM_ShoulderConstraint Update

I have been working the past couple evenings on another Maya plugin, a hip constraint. It is finished, but the setup tools are not yet ready for it, so expect it probably by this weekend! While working on, however, I discovered a couple bugs in my shoulder constraint node, so I have uploaded an updated version of that (1.1). The update is not a big deal and the chances of it affecting anyone are very slim, but I did primarily two things.

First, I now cast the incoming enum for rotateOrder as short instead of as int, as there is a known problem in Maya Python accepting pointers to integer as reference to enums. For whatever reason it did not appear to cause a problem in my plugin, but I would rather be safe than sorry.

Second, I slightly adjusted the math for building the final quaternion. Though I never actually saw a problem with it, there was the possibility of building a weird rotation if the shoulder’s pretransformed up vector was exactly 180 degrees from the world-space target up vector (i.e. there are infinite different possible quaternions to build the rotation from one to the other). The problem can still happen only if the pretransformed up vector is exactly 180 degrees from the world-space target up vector and the shoulder’s transformed (world-space) up vector is exactly 180 degrees from the target up vector. Because the chances of this happening in a human range of motion are infinitely small, and the chances of this configuration of vectors is infinitely small, I didn’t bother to devise a more elegant solution. However, please do let me know if any of you have a different suggestion of how to address it!

The New Tools Are Here!

Because making good videos takes a bit of time, I have fallen a bit behind on the next rigging ones I have lined up. However, because all of the technology I explain in the videos already exists, I decided to go ahead and put it up for download! What this means is although you cannot yet see the videos where I explain how and why I made these tools the way I did, you are free to go ahead and download them and try them out.

There are a variety of different ones up there, but in particular I would like to point you to the shoulder constraint node I made in Python. This is my first Python plugin so I would really appreciate any feedback you have while using it. Please note the MEL Scripts and the example file that I have included in the ZIP as well, as these should greatly assist in using the new plugin.

In other news, !Rebolt! finally made it through Apple’s mysterious approval process. Go ahead and buy it!

New Video Tutorial

I have a bit more time to start fleshing out the site better and I have posted a new rigging video tutorial and added an additional page where you can currently download free Maya tools. Keep your eyes peeled over the holidays, as I should have some time to add more new content.

In other news, Minotaur China Shop has been released! Go give it a shot if you haven’t checked it out yet!

Maya Python Nodes – Compound Attributes

If you are anything like me, you can’t always find what you need in the Maya Python API documentation. Sometimes the information in the docs does not match what actually exists in the header files. Sometimes you cannot find sufficient examples of what you want to accomplish in Autodesk’s sample scripts. When you really hit the bottom and have to scour the dregs of the internet, you will typically find a dearth of information.

Because developing Maya Nodes using the Python API has consistently been an excruciating process for me, I want to save you the headache and post things here as I come across them. Most things turn out to be fairly simple, yet require a lot of hair-ripping to sort out. One issue I came across today was setting values for compound attributes. Continue reading Maya Python Nodes – Compound Attributes