Friday, June 22, 2018

Maya 2018 Time Editor Batch import fbx

I'm doing a thing that requires the import of multiple FBX files into the Time Editor.  The time editor is this sort of non-linear animation editing system that's now available in Maya.  If this plan work  out, I will need to import about 200 animation files.  Since the file/import can only handle one file at a time, I decided to make a little script.  This is super basic at the moment, but may provide a launchpad for further refinement.

import pymel.core as pm

def multiFbxTimeEditImporter():    
    """Stub function for batch importing fbx files to the Time Editor    
    basicFilter = "*.fbx"    
    result = pm.fileDialog2(fileFilter=basicFilter, fileMode=4, dialogStyle=2)

    for r in range(len(result)):        f = result[r]
        nn = result[r].rpartition('/')[2].replace('.fbx', '')
        ntrack = pm.timeEditorTracks('Composition1', edit=True, addTrack=-1, 
        trackType=0, trackName=nn)

        pm.timeEditorClip(nn, importFbx=f, importOption="generate", 
        ipo="cuves", importAllFbxTakes=True,                          
        importTakeDestination=r, track='Composition1|'+nn)

Monday, January 29, 2018

Python 101 On Demand at The Rigging Dojo

Hello, fellow consumers of all things CG. For those that aren't aware, for several years I ran a course on using Python with Autodesk Maya over at the Rigging Dojo. Now I have three young kids, a dozen side projects, and a serious time deficit. To that end, I'm offering up the entire 8 week Python 101 as part of the Dojo's on-demand training lineup.  In this course, you will get the complete walk-through from the very basic concepts all the way up to class inheritance and sub-classes. This is a project driven course, which means you will create a basic rigging tool built on a foundation that is simple and easily extended. But wait! There's More! I don't want to make this a dead course with no new content so I will be doing regular additions to the video series where I share some of the cool Python, PyMel, and Pyside tricks I pick up in my day to day work as a Technical Animator. Those videos will be available to you as part of the On Demand Training at no additional charge. You will also get access to the Python project I used in the course so you can clearly see the final code. So what are you waiting for? Check out the syllabus outline below, and click the link to sign up.

You might also want to take a look at another project I've been working on.  Do you remember those three kids I mentioned? Well, I love teaching so much, I thought I may as well try to teach my kids how to animate, write code, make games, and do other artsy things. I also thought some of you might enjoy joining us on the adventure so I'm posting our process, finished pieces, and a bunch of rambling about being a good parent and junk. Check that out here.  You can also visit our YouTube channel or our Facebook Page.  Thanks for taking a peak.

Sign up Here:
View the syllabus HERE
Tou should also check out some of the other great courses offered like the props course from the Talented Jeff Brodsky.

Learn More

Wednesday, January 17, 2018

YouTube Initialized

Good news Everyone!  I just pulled a bunch of my content from Vimeo and put it on YouTube with nice cover art and all the trimmings.  I'm not sure how relevant these videos are anymore, but consider it a sign that I plan on adding new more exciting content soon.  So head on over to YouTube, hit that subscribe button, and stay tuned.

Monday, January 15, 2018

Ranger Rig Production Part2

I just accidentally deleted the original draft of this so I'm posting again.  Sadly I dropped this project for a while, however I do intend to return to it at some point.

Two words that are stuck in my brain when it comes to animation requirements are dependability, and predictability. Nice words right, but what do they mean in context to a rig? A dependable rig shouldn’t break. Stretchy limbs should always stretch, matching should always match, and all those other super high-tech features should stay super. Predictability comes into play when you’re creating multiple rigs for a production. If one rig has certain features, control shapes, and so on, then all the rigs should have those features. You don’t want to call your arm to head space switch attribute “head switch” on one rig and “noggin toggle” on another. So listen, this all sounds great, but stuff always happens on the first pass of any rig. Maybe you didn’t understand all of the animators requirements, or the animator will need the rig to do some crazy thing for a specific shot. Animator: “In this shot I need the character to shove his foot in his mouth while doing the chicken dance”. You also need to consider that you are just a human. You are going to make mistakes, or miss some connection somewhere that causes the rig to turn into a ball of polygons when a particular set of controls are used in combination. That’s okay. Animators are generally understanding people who are willing to laugh at with you when when something explodes, but it’s the Character TD’s job to make sure that the chance of errors have been minimized before the rig is delivered.
So how do we minimize the margin for error? Doing things procedurally goes a long way toward that goal. While you may have had a rough night drinking craft beer samplers at your sister's birthday party, your code will be a bit more sensible. Knowing it has to work in the morning, your code will refrain from any any heavy partying thus allowing it to perform predictably the next day. It’s also important for you to talk to the animators before creating the rig they will use. I know they can be king of intimidating standing over there talking about acting choices and motivation while they wildly swing around a plastic sword, but it’s unlikely they will strike you “intentionally” if you go over to discuss the requirements for the shot or animation sequence they will be working on.
Lastly you should consider technical requirements. If you are working on a game you may be up against a joint limit and you are probably limited to the types of deformers you can use. In most case you won’t be able to use any deformers to effect the actual skinned mesh, but you can use deformers to drive the rig. And let’s not forget number of influences per vertex! In my opinion these limitations are the factors that make game rigging so interesting and challenging. Game rigs need to push toward that cinematic quality without crazy deformers, muscle systems, and per shot rigs. Okay I’m slipping into a tangent. What other technical requirements should we consider. Well we will probably want the rig to run at more than one frame per second. This means we need to be smart with our deformer use, expressions, muscle systems, and all that fancy stuff that makes a rig fancy. Time for another shameless shout out to the Rigging Dojo who has some excellent information on the topic of rig performance.
Above all else, the animator wants to create the pose they want as quickly and easily as possible without counter animating! If you remember that one thing, you are sure to be surrounded by happy animators

Now for those of you who refused to read all those boring words above, I present a synopsis in bullet point form.
Designing a great rig

  • Dependability and Predictability.
  • The animator can get the poses they need as easily as possible with no counter animating.
  • The rig can achieve the requirements of a particular shot, a series of shots, or an animation set.
  • The rig should be fast enough to allow for real time playback.
  • The rig should Saweet! 

With all of the previous stuff in mind I will now set out to define the requirements for the Ranger Rig.
Ranger Rig Requirements
  • Audience: The animation community at large.
  • Use: I have no idea what you are going to do with this thing and I don’t plan on asking each of you personally so I will defer to some general requirements.
  • General Requirements:
  • Cinematic quality face with minimal controls to drive toward major poses like mouth corner wide and brow up. Sub-controls will allow for fine tuning the pose.
  • Beny controls.
  • Stretchy limbs.
  • Automated correctives.
  • Commonly used space switches.
  • 360 degree twist extractors to prevent flipping.
  • The foot.
  • Heel to toe roll.
  • Animatable points for twist and pivot.
  • Toe twist, flap, and pivot.
  • Breathing controls.
  • Weapon controls with the ability to easily sheath the sword.
  • Possibly the ability to remove the boots, and armor. 
  • Optional dynamics for little dangly bits.
  • The rig should be built procedurally where possible. This means all the artsy things like nice face shapes should be handled by math and junk, with an optional layer that uses blendshapes, and deformers.
  • It must be fast! This may mean things like proxy geometry, total abandonment of expressions, and systems optimized for multithreading.
  • Support for older versions of Maya.
That looks like a pretty good list for the moment. I would love to hear your opinions on what makes for a great rig with some specific information on features you would like to see on the Ranger. I think my next pose will talk about my plans for the face as I'm psyched up to get started on that. That’s all for now everyone.

The Kids Said What. Animation and Family Fun

The kids and I have started a new project where we are exploring art, animation, music, and more.  Every week or so we work on some project like an animated video which we post on YouTube.  We then follow that up with a video showing how we did what we did.  I was inspired to take on this project because it offers us an opportunity to learn and grow as a family while providing a learning experience and hopefully some entertainment to our viewers.  I encourage you to please show your support for this endeavor by visiting our YouTube channel and our Blog.  We would be pleased if you could subscribe so you can keep up to date on all of our latest creations.
I would't feel right if I left the post here without giving you a sample of the sort of things we are working on.  So without further delay I present The Kids Say What's first creation.  The Fluffy Rainbow Butterfly Unicorn Kitty.

Saturday, March 05, 2016

Ranger Rig Production Part1

Every year or so I like to take on a big personal rigging project so I can pick up some new tricks without the pressures and constraints of an actual production. This time around I will be mixing in several ventures all aimed at creating a film quality rig that can be distributed to the animation community at large. I will start off by outlining the goals of this project while giving a few details on how I plan on achieving these goals. Now before I get too deep into this, let me issue a fair warning that I have a son on the way any day now, so this project could go several weeks without anything to report. Alrighty then, with my excuses out of the way, let's push on.


  • Work with a small team to develop some rigging tools.  Except for the artsy stuff,  I hope to generate every part of this rig procedurally.  Details on this small team and that development process will be coming soon.
  • Develop a robust facial rigging solution that looks great without a bunch of fancy deformers,  but is able to layer in deformers and blendshapes to push the look to the next level.
  • Push myself to push my skills at cinematic quality rigging.
  • Teach all of you about my process.  Hopefully we will both learn something new!  I won't be going full tutorial style on everything I do here, however I may make tutorials available in one form or another later on.  For now you can check out the Rigging Dojo, where you can get my Python class along with a ton of information on everything rigging related.

If I'm going to rig a character, I suppose I will need to start with a model.  No, not just any model.  It needs to be a great model.  Fortunately for me, the extremely talented Daniel Williams has offered up one of his creations for this mad science project.  I highly encourage you to check out his work.  This is typically the section where I would talk about good topology for rigging, but Danny's models already have fantastic topology.  I will talk briefly about what makes topology "fantastic", and I will do some comparisons between what I look for in a cinematic mesh versus a game ready mesh in later posts.  Before we get into all of that I want to show you what we'll be working with.


Check out this link to see the Ranger in all his rendered glory.

Here are some reasons why I think this topology is Fantastic!

  • The continuous line across the brow.
  • The edge that flows from the nose to the mouth furrow line.
  • The clean circular edges around the mouth.
  • The extruded face between the brows for a nice brow furrow.

While this is a great model, I will suggest the following edits to the face topology.

That's all I have time for tonight.  In my next post I want to start designing the requirements for this rig so I can break the work into chunks.  We will talk about how I determine those requirements, and my process for plotting out how to meet them.  Thanks for stopping by and I hope to see you here next time.

Thursday, March 03, 2016

Surface Based Facial Rigging POC

I pulled out this face rig proof of concept that illustrates the idea of controlling interpolation through the use of surfaces.  All of the animation is driven by just 3 controls, with a set of minor controls that follow along with the majors so you can fine tune.

SurfaceFacePOC_01 from ryan griffin on Vimeo.