Roadmap to the final stage
I've just spent a bit of time coming up with the roadmap to fully implementing character animation in BlenderPeople. All of the pieces are in place, after almost two years of work, both in coding new Blender functionality myself, and in advocating strong character animation tools from others. So, procedurally, here's what will happen behind the scenes in BlenderPeople's character animation phase, and who made it happen:
1. Generate gross character motion -- already done with BP 0.6 (and 0.7)
2. Replace placeholder meshes with production armatures (getting advice from Orange team, as they did some armature replacement stuff already)
3. Bake object motion into an Action -- Action Baking by me
4. Create walk/run animation for entire timeline -- autowalk by me
5. In NLA, put appropriate actions into their places in time -- NLA Python access written by Ken Hughes; action position matching by me
6. Bake NLA into a single action for faster evaluation, memory/file size savings -- Action Baking by me
7. Append and link meshes to the armatures.
That's what goes on in the code when you're ready to complete the CA phase of BlenderPeople. Here is what the user will have to provide:
1. Armature (or Armatures)
2. Actions -- you'll need at least one walk cycle, and an Action for each of the activities you'll have your Actors do. My suggestion will be to have multiple Actions available for any one activity (three walkcycles, eight different attacks, four defensive actions, etc.) When BlenderPeople sees that your Actor is in "Defend" mode, it will choose randomly from the available actions. The more you give it to choose from, the more varied and realistic your results will be.
3. Users will also be required to set up a couple of tables, so that BlenderPeople knows which Actions should go with which activities, and which armatures go with which Actor types. This will be configured through a simple drop-down menu interface. Python Panels cannot come quickly enough!
A good armature and at least one Action for each of the predefined activities will be included with BlenderPeople, so you can get started. Comprehensive instructions will be included in the docs so that you can make your own, although I've tried to design this so people making their own have as few technical restrictions as possible. I'll also be including a fully textured mesh (actually, two) for your simulating happiness.
One of the things I'm still working on is the best way to make this stage re-doable -- as in, if you don't like the results, it's easy to go back and do it again.
Eh, but there's a plan, and everything's in place, so let's see how I do.
I wrote up a documentation wishlist for the Python API to NLA Action Strips and passed it around to the folks who write Blender's PyAPI.
Ken Hughes took up the gauntlet (I think it was on their todo list anyway, but having my writeup helped), and just this morning committed support for NLA Action Strips into the API!
Another hurdle down. In fact, this means I can create my first set of actions for my finalized BlenderPeople rig (it'll work with any rig, more or less, but it'll come with mine), and start seeing how they piece together in code to walk the final few steps toward completion.
Fixed a bug in the NLA part of the Python API that allowed duplication of Action names within Blender.
I realized also today that I'm going to have to write the NLA strip Py API myself, because one doesn't exist yet. Argh.
Well, that's it until next week, as I'm moving house starting right now.
Just fixed a bug in Blender's Ipo key creation code...
When you make keys for poses, the Quat keys would sometimes flip around. I added code into the key creation routines that checked if the new value was flipped, and if so, flipped it back. The patch is in the bug tracker, so I'm guessing it'll get looked at soon enough.