An Automated Pipeline for Generating Run-Time Rigs

On account of getting the flu at GDC, and then having to catch up on all of my work that wasn’t getting done, I’ve been a little behind, but I wanted to make sure I got up a write-up for my main conference presentation from GDC this year.
Continue reading An Automated Pipeline for Generating Run-Time Rigs

AM Tools 1.05 and Unity Maya Extensions!

Although I still need to do a formal write-up for my GDC presentation, I do finally have all of the source code ready to go (or at least I think it’s ready enough), so I wanted to make it available for download now. Here’s a brief summary of changes:

  • All of my Python stuff is officially copyrighted under the MIT License now.
  • Since I know a fair number of people out there rely on decent API examples for learning, I refactored all of my plug-ins to conform to better practice.
  • As part of the plug-in refactoring process, the AM_HipConstraintCmd and AM_ShoulderConstraintCmd plug-ins are now deprecated, and the commands are contained in the same plug-in files as the nodes.
  • Math has been dramatically simplified in both the amHipConstraint node and amShoulderConstraint node. In the case of the latter, the results you get should be identical to before, while the former will yield some minor different results when out of the lateral plane of rotation.
  • All of my comments have been reformatted so that Doxygen can generate more useful information for the online documentation.
  • All tool help menus now link to the online documentation to bypass text formatting issues with maya.cmds GUI in Qt.
  • Added files module with utilities for batch conversion of files to FBX, or for downgrading Maya ASCII files. (Note it is pretty hacky and not tested especially thoroughly, but I included it in case anyone might find it helpful.)
  • Added unity sub-package with utilities for modifying files to work in conjunction with my Unity Maya Extensions.

Continue reading AM Tools 1.05 and Unity Maya Extensions!

Global Game Jam

Now that GDC is over with, it’s time to get caught up on everything. (By the way, I’ll be putting up source code and a write-up for my presentation sometime in the next couple of days.)

Anyhow, way back in January I helped out at the Madison Global Game Jam. In addition to helping people out with their Unity projects, I squeaked in a short one of my own, which I have posted up on my portfolio page. Check it out and have fun, but remember it’s only a couple of hours worth of work. As such, it requires deferred-rendering capable hardware, and I made no optimization efforts whatsoever.

Throwing in the Towel: Stopping Development on Touch KO

In the world of game development, you sometimes have to take a cue from the world of boxing, and know when to throw in the towel. I made the decision this week to finally terminate further development on Touch KO, and wanted to write up some thoughts and reflections on the process in hopes that some other developers may find the information handy.
Continue reading Throwing in the Towel: Stopping Development on Touch KO

Root Motion Computer for Unity

I recently finished up a new component for Unity as part of a contract job with Mixamo. For those of you who are unaware, Mixamo provides an online motion capture download and retargeting service powered by HumanIK. It lets you use sliders to creatively adjust a piece of motion capture data and then automatically retarget it onto your own hierarchy and download it for use in your game. It’s really slick and pretty affordable, so it’s definitely worth checking out, particularly for any indie developers out there.

At any rate, the component that I created is designed to let animation data, rather than procedural velocity values, drive a character’s motion in space. The component sits on top of Unity’s animation API to let you simply play, crossfade, and blend animations using any of the existing API methods, and the computer takes care of everything else after the fact. The way it works is by tracking the position and rotation of the pelvis in the space of the character’s root node for each active AnimationState and then backward applying this motion to the root node itself and snapping the pelvis back into its position hovering over the root. Since the source code is all available in the project, I won’t belabor the details too much here, but you can certainly ask me if you have any questions. (The one thing perhaps worth mentioning, as an addendum to the video, is that the pelvis forward axis is not strictly necessary for computing output: only for displaying debug information. For computation, the character’s rotation is determined using the pelvis right axis.)

You can download an example project from Mixamo that contains the component as well as a sample character with some animations. Because the tutorial video on the Mixamo website is compressed pretty substantially, I have also uploaded a copy to my Vimeo account in case you would like to watch it in full HD resolution.