Posts Tagged ‘Tools’

New Plug-in Coming Soon: AM_Ribbon

Wednesday, February 10th, 2010

Things have been unusually hectic so far this year, and with GDC on the horizon it’s not looking to be much clearer for awhile. However, that doesn’t mean I haven’t found a way to make all of my different obligations overlap in some ways! I’ve been working a little bit as a consultant over the last few months to help out Infinite Ammo with an upcoming title: Marian.

During the course of my work on the project, I developed a new Python plug-in for Maya to help out with hair modeling. I will hopefully have a chance to deploy a new version of my free Python package soon that will include it, but in the meantime I thought I might share this video that Alec posted up on the IA website where I show what the plug-in does. Hopefully some other folks out there will find it useful too!

AM Tools 1.01

Saturday, January 2nd, 2010

I just uploaded version 1.01 of my AM Tools Python package today, which you can of course download from the Maya tools section. You can look through the files to see all of the changes that I made, but here are some of the major highlights.

  • amInsertParents is now a Python command. I have therefore retired the old MEL version.
  • Added API Debug Mode to menu. Enabling this mode overrides some Maya Python API classes for debugging. For this release, this mode overrides the __str__() functionality of MMatrix and MVector.
  • Substantially improved a number of utility functions for validating input.
  • Added validation for custom plug-ins.
  • Fixed some language-related bugs that existed for Maya 8.5.

As always, please let me know if you have any problems or other feedback!

Hip Constraint and Shoulder Constraint Update

Sunday, January 18th, 2009

Following in my pattern of frequent updates, I uploaded more revisions this morning to both the shoulder constraint and hip constraint.

The revision, which is the same in both, is another exception to handle a possible singularity. I never actually had it happen to me in practice, but I realized it was possible when I stopped to think about it. Enjoy!

Hip Constraint Release and Shoulder Constraint Update

Friday, January 16th, 2009

This morning I finally finished the hip constraint! You can now download it here. Just like the shoulder constraint, it comes with MEL scripts designed to assist in setup.

Speaking of the shoulder constraint, I found some pretty egregious math errors in my shoulder constraint node, so I have uploaded another update to it. Not only does it actually work as intended now, the math is greatly simplified and more closely resembles what you need to do to port it into game code.

Enjoy, and please let me know if you have any problems while using it!

AM_ShoulderConstraint Update

Thursday, January 15th, 2009

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!