It’s been a while since my last update, but it’s all for a good cause! Since leaving Florida for SIGGRAPH 2013, I’ve moved to California, and found work at a company called Animatic Media (www.animaticmedia.com | Check out their site for some cool work!). The company does pre-visualization work for commercials and other ads. I was initially hired on as a contractor to do some fast rigging for a job with a quick deadline, and after the first two weeks they decided that it was worth it to hire me full-time. I’d been in California about 5 days before finding this company. Quite a lucky break! (Thank you www.cgstudiomap.com!).
If it’s been a while since my last post, it’s been because this last month has been insane. Looking at my site right now you might not see it, but I’ve been working on a pretty amazing project called, AetherEdge. It’s a 3D animated short and “proof of concept”. The basic story follows that of a “wanderer without a past as he battles aliens and their constructs in a dystopic future”. Sounds cool, right? The team that is working on it is a combination of the people who worked on the GaiaSpora and Ember shorts from the recently graduated class from the Visual Language/Character Animation program at UCF. Go Class of 2013! Anyway, I’m the Technical Director of the project, which means that I’ve gotten to create some pretty awesome things, the least of which are two new rigs.
So, back on point, I’ve uploaded a new rigging reel. You can check it out on my Demo Reels page. Comments and critique are very much welcome!
This is Part 1 of the Adventures with PyQt in Maya series.
Perhaps as much as a year ago I stumbled across the amazing tools reel of Martin Orlowski. As a fairly novice tools programmer, his reel revealed the amazing possibilities out there when it comes to customizing Maya. One of the more impressive things to me was his incorporation of a video/media player that functioned in Maya in order to preview playblasts, animatics, and render footage.
Now that I have some time to do some R&D of my own, I decided to create my own media player within Maya. read more…
I’ve already made a few posts discussing some of the tools that I developed for GaiaSpora, the project that was completed as my last year of undergrad wrapped up. Now that that’s over, I’ve had the time to record some footage of these scripts in action. There are also quite a few scripts on the reel that I’ve yet to post up a description of (though I intend to add those in due time, as some of them have quite interesting features to discuss). Regardless, feel free to head over to my demo reel page to watch the full video. The tools themselves were written using MEL and Python, and were implemented in a production environment.
This is a script that I developed while working on GaiaSpora, in order to reduce some of the animator-error when creating prop constraints, as well as to speed up a process that, due to the high density of prop interaction in the film, was taking up considerable time.
This should be a really quick post about how to solve a problem that I was encountering regarding instancing sequences of geometry to particles. First, a basic summary of the problem. I set up a pretty simple rain particle effect, and I wanted to create splashes on the ground that would simulate rain drop impacts. I created a “splash” effect in RealFlow, and exported those meshes to Maya. I then instanced those meshes to static particles that I emitted from a ground plane. The problem with this method was that since the particles were static, and had been set with an initial state, the animation for the splash was playing at the same time for every particle, rather than being offset from each other as one would expect. So, the effect I needed to achieve was a pseudo-random offset of the splash animation from particle to particle.
For those without a technical background, matrices are a often-overlooked component of Maya. They can be especially useful because they are the mechanism by which Maya stores all of the transformations of an object. One specific application that I developed for GaiaSpora involved a rigging challenge. The goal was to combine dynamic control with forward-kinematics animation. For the “Bob” character, we wanted his shoelaces and his tank-tube to be dynamically controlled, but we also wanted the option to adjust the animation after the dynamics had been cached, in case we needed them to conform to some kind of specific art direction.
As a rigger you want your animators to be forced to go into your structure as little as possible. If they ever do, there’s usually a high chance for confusion or error. The difficulty of caching dynamics is that you have to select the hairSystems and navigate to one of the lesser used menu sets to cache them (lesser used as it relates to animators).
The purpose of this script is to detect all the dynamic systems in a scene, and allow them to be cached, using the same options that you would find in the nDynamics menu sets. The left side of the interface is populated with the hairSystems, and with the arrows you can move them to the right, which is the list of caches that are to be created.
The idea behind this script is fairly simple. Previous film projects had used a technique for compositing where they would use contribution maps to render out a beauty pass for every object that they wanted to have control over (as beauty is the only pass that contains an alpha channel). This method seemed somewhat inefficient, since only the alpha was needed from the beauty pass. One method commonly used for compositing is to create render layers and assign objects surface shaders either colored red, green, or blue, which are colors that are easy to extract in most compositing suites (such as Nuke).