Tuesday, February 23, 2010

Mommy, Why is That Man Walking So Funny?

I come to you with another blog update! Two in one month? That has to be a record!




So, my adventure with Xaelander continues! I have to admit that so far, I'm quite impressed with Xaelander's capabilities as an animation tool; it's just fantastic for laying down the foundation of the animation you're hoping to create. You want the character's arm to whip around in 20 frames while his body goes the opposite direction? How would it look if it moved another way...? What about if his arm just flopped around? No problem! You can visualize it in realtime using your hands, without wasting more time by following the traditional methods. 


However, I do admit that at first, I was having my doubts about Xaelander's efficiency in animating a character. Sure, it worked well with animating a simple object or a camera, but how would moving the different parts of a character work out? My first few tests were discouraging, to say the least. With the varying ways in which character rigs are built, the controller curves for numerous characters weren't behaving consistently due to a conflict between the local rotation axis of the objects and the world axis. 


Indeed, it was seeming hopeless.... until I had to remind myself that being open-minded is probably a good thing, and I'm glad I did. Using my rigging knowledge, I was able to create a system to effectively move the controller curves of any character rig around without any concern to their local rotation axis. The solution is rather simple, and yet it made a world of difference. Before I go on, I just wanted to express how exciting this is. Did I forget to mention that Xaelander rocks?


The solution is easy: create two "representative" objects (preferably locators), color-code them, and name them appropriately to match their real-world counterparts. Attach your two physical points to these virtual ones, and you'll know exactly where your hands are in the Maya world space without moving your desired object around quite yet. This way, you'll get a great feel for the scene's layout in relation to your physical workspace and be able to tweak the scale of the movement, as well as offset the position of the object from your actual location in the workspace if need be. Once you've set this up to your liking, constrain the character rig controller of your choosing to one of your virtual points (aim constraint for FK controller, parent constraint for IK controller). I recommend when doing the constraint that you leave the "maintain offset" option enabled - the reason for this being that no matter what the LRA (local rotation axis) of the controller is, it'll follow your hand the way you perceive it, not stray away. Now, with this set up, you have two options: go the mocap route or the traditional animator route. 


If taking the mocap route, what you do is capture your movement of the locator, and the character's rig controller will follow if constrained correctly. You'll find it actually feels like a puppet string! Once you've achieved a peformance you're in love with and have recorded it via the Device Editor, select the rig controller and simply key every few frames (1's, 2's, 3's, etc) to your liking; this way, you'll have much cleaner curves to work with. Now, at this point you can either delete the constraint, or detach the physical point from the locator and leave it untouched to maintain your original motion capture data to have something to fall back on. Repeat this method for as many parts of the character you'd like to animate and you'll have your character animated in no time!


If taking the traditional route, just pose the body part to your liking and keyframe either the "representative" or the rig controller itself without recording your movement (obviously). Move the timeline forward to the next desired time and repeat. I'm not a big fan of this method, but I know there are those out there that prefer to work in the old school and maybe want to have better control over the exact positioning/timing in their animation.  Whatever your desired method, I'm sure you will find animating and posing the character with your actual hands is much more comfortable and effective. 


My next step is to write a script to automate this process and speed things up, but that's for another day. When that day comes, you all will be the first to see it!











Friday, February 5, 2010

Look, Ma, Two Hands! (and a New Blog System)

It's a lovely Friday afternoon in Miami and I'm sitting here waving my hands like a madman in front of me while sitting at my computer, holding two shiny spheres - each screwed onto a plastic pedestal of their own. You'd think I was a madman, a lunatic, or maybe in attempt to justify my erratic movements, you'd convince yourself I was trying to visualize an idea using these little plastic toys. If you're of the reasonable crowd that falls in the latter portion of my previous statement, then I admit you are quite close in your assumption. Indeed, I am attempting to visualize a concept for an animation using what looks like two toys - but I'm doing it in real-time, interacting directly with the objects and characters I'd like to be animating in Maya!


Is this a dream, you ask? Well it was for someone like me, at least, since coming across Johnny Chung Lee's head-tracking using the Wii remote video a few years ago; he demonstrated how (with some software magic) the Wii remote's infrared camera can be used to track the movement of two LED lights (placed above your head) to give the viewer an even greater sense of perspective in a 3D scene - and it works beautifully as you can see in the link! Having a vague understanding of the way the Wii remote functions since then, I always wondered if it were possible to create a "poor man's mocap" system using several Wii remotes and the appropriate software to interpret the cameras' data to affect the translation and rotation channels of an objects in Maya. Of course, due to my limited knowledge in such matters, I never actively pursued this concept past it being a dream of something "neat if it existed." I mean, how neat would it be to have the ability to do some motion capture animation at your desk and not break your bank? Sounds awesome, right?



It is awesome and it's a reality. No, it doesn't involve Wii remotes, thankfully. In fact, it's a much more elegant solution than my dream explained above. Allow me to introduce you to Motion4U™'s Xaelander™ 2, the company's semi-professional desktop mocap solution (assuming you've never heard of this before or I've been living under one heck of a rock).




With the Xaelander™ 2, the user is able to interact with 3D objects in real-time using a set of individual points (for full 3D movement - the translation channels of an object), or a set of "paddles" with five points each (for full 6D movement - translation and rotation of an object).


 
The two paddles shown. With these, you can get full 6D motion in your 3D software package using Motion4U's software and the infrared camera setup overseeing your movement over your physical desktop.




Let me get this out in the open before we move on with further explanation of Xaelander™: I am beta testing this product. I was sought out by Motion4U, and through a series of events, was essentially asked to be a beta tester and explore its uses within Maya. With that said, let's move on!

I believe the only fully functional and supported 3D package at the moment is Maya (32-bit Windows), with support for other 3D software and operating systems, coming down the pipeline in the not too distant future - correct me if I am wrong, please. The integration between the software and Maya is seamless, and setting up Xaelander™ 2 is not as painful as one may expect at first glance. In fact, I was up and running within 5-10 minutes of placing the mic stand and cameras. Granted I already had the software installed from the day before, but doing that only takes a couple of minutes at worst.
The cameras mounted on a mic stand with a customized M4U bar. I assure you the Florida Marlins are not involved!

I can't imagine many people will struggle with the initial setup aside from the bumpy learning curve with actually figuring out how to move the points and understand how the software is interpreting it. That, however, can most likely be attributed to never having actually interacted with a computer like this before. You see, when you've used a mouse and keyboard for so many years, having to learn how to manipulate objects on the computer by actually moving around in a 3D physical space certainly takes some getting used to. Think of it as having to learn how to ride a bike for the first time, or finally learning how to swim -- well, maybe it's not as extreme as those examples but it does feel like having to learn a new skill. The point is that it will take the user/animator some time and practice to properly learn how to use Xaelander™ as a tool in their trade - but the result will be worth it, I'm sure.

Why, yes, that is a bed sheet on my table. The glass table's reflections give the cameras trouble. No biggie!


How worth it? The answer to that question is a journey I am inviting you to experience with me these next few weeks/months as I animate and experiment with the limitless ways this intriguing setup allows one to visualize and animate their ideas. Each week I will try my best to post an update on my experiences, including videos and images to give you a better idea of what's going on. You'll see ways a biped character can be animated like a real puppet, how a camera in a Maya scene can be manipulated by the movement of your hands, and much more. I'm also going to explore ways a rigger can approach the method in which they build their rig that may be used by an animator using Xaelander™. Whatever the outcome of this experiment, it'll be fun! So, join me, will you? :)

-Mike Navarro

EDIT: Here's a clip of something I created using Xaelander™ 2:
This is a recreation of a shot from the intro of Atlas' Revenge.