Home Technical Talk

Curious about character animation workflows

polycounter lvl 8
Offline / Send Message
V!nc3r polycounter lvl 8
Hi all,

I'm not used to character modeling neither animation, hence my asking:

What are typical workflows to send character animations into a 3D engine? I haven't find so much resources about that for now, maybe a lack of suitable keywords.

My guess for now about what a workflow could be is that for one character, you will save all your keyframes in one single animation, and once in your engine, split this animation into parts, like : "rest" = frame 0 to 9, "walk" = frame 20 to 39, "run" = frame 50 to 79, etc.
This looks fine when you're the only one to work on the character file, but what if some teamates are assigned to a specific part? I suppose it depends of softwares, but is it also a common way to import into an engine a character file + one file per animation (without geometry) for example?

I've checked this wiki page but can't really find what I'm looking for, so if you have some good tuts, video, etc, I'm in! If that's matter, I'm using Blender and BabylonJS (but I also used 3dsMax & Unity for a while).

Replies

  • Ushiro
    Options
    Offline / Send Message
    Ushiro polycounter lvl 3
    Hi V!nc3r,

    So from scratch the usual pipeline for creating a fully animated character for games goes like this:
    _Concept/ Drawing/ Referencing your character to help understanding proportion and shapes.
    _ Modelling the actual character (High poly into low poly/retopology)
    _ UV mapping + Texturing
    _ Rigging + Skinning.

    At this point you can select your 3D model and his bones hierarchy to export it in game in his Tpose/Default pose (usually as an FBX file with no animation baked on the bones)

    Now onto the animation part:
    _ Most of the time game studios use 1 file per animations and per character, because it makes things cleaner and it is easier  to make changes ( Imagine having a full character locomotion who can include multiple Runs,walks, turns, idles inside 1 files with thousands of keyframe, just a nightmare to edit)
    _ Once the animation is done you select the bones hierarchy and export only the bones animation.
    _ Then import the animation inside any engine and you should be able to play it.

    Finally there is a ton of tutorial on Youtube who can walk you through how to do all of those things. If you need some links to those videos, I can definitely drop some stuff there but if you look for tutorials/ video you can start here on Polycount using the search tool.

    i hope this was helpful enough and if you have more questions, feel free to ask here and there.

    Ushiro.

  • V!nc3r
    Options
    Offline / Send Message
    V!nc3r polycounter lvl 8
    Thanks for the precisions, 'make sense about the 1 file = 1 animation.

    I will start doing some tests with my webGL workflow, to see if it's fit (in general I use Blender > gltf > BabylonJS).
  • Mark Dygert
    Options
    Offline / Send Message
    I agree in general, 1 anim = 1 file, as guiding principle, but I'm a Maya user (currently). It really depends on how much animation you have and how easy it is to work with it. If you have 3 anims that total 90 frames for the entire game, its probably not a big deal to leave it all in one timeline. If you 20hrs of anims, MAYBE a single timeline isn't the best idea? lol.

    Where you see 1 anim = 1 file is typically in Maya and you reference your rig file into a blank scene to animate with. You have a ton of separate animation files but since they all reference the same rig, you only have to update that one rig file and all of the separate anim files get that update. It's very clean, very efficient and one of the greatest advantages to using Maya. 

    Where you tend to see it all batched together into one giant timeline, is in programs that don't allow rig referencing and they do it all in one timeline so they have one rig/skin file to maintain. If you have a bunch of files with their own unique copy of the rig, any changes that need to be made, need to be done in each file. That's pretty janky...
    "We have to move the eye bones 1mm back. In all 100,000 files... put on a pot of coffee, its going to be a long night." Or, hopefully someone can cook up a batch script that does all of that work. At least with automation you remove the blurry eyed human out of the mix, heh.

    I'm not sure if Blender supports file referencing but if it doesn't you might have a strong case for saving animations to a library and loading them in to work on them. When I was using max, I created a few handy tools that would browse a library of saved anims and load them so I could work on them. One rig file, one animation at a time but everything is saved and backed up. It was really nice, while I was stuck in 3dsmax. Now I mostly work in Maya and I don't really want to go back, heh.

    There are some cases where I'll batch files together in Maya, but those cases are usually pretty rare. I do it for things like jump cycles if there are 3 parts (start, inAir loop and a landing) because it's easier to work on it as one fluid chunk instead of pieces, but it would be a headache if I had to juggle "cinematic_Convo212" in with the jumps and run cycles, what a mess. I also batch Idle animations, however if I have "wounded" or "exhausted" idles I put them in their own file.

    Keeping them separate means you can do version control on a single animation without having to worry about the states of the other animations. Rolling back THE FILE, rolls back all of the animations? Scary. You have to do a whole workflow of splicing old animations into the new timeline before you can even start working on the animation.

    Keeping them separate also lets a few people work on separate files at the same time. As soon as your team grows to be more than one person, that is pretty important. Even if you still have one animator other people might need access to those files and it just slows the project down if all of the work requests, no matter how mundane, have to go through a single person. Programmers, designers, artists, and other animators should be able work with those files. If you don't trust them with those files then you have much deeper issues, heh.

    Lets say you want to add an animation layer to an animation but you don't want to mess up the rest of the animation so you have to delicately dance around the edit like a brain surgeon trying not to paralyze the patient. Placing keys before and after the edits, trying to preserve it all and hope it survives the merge.

    Putting all of the anims in one timeline becomes untenable really quickly, especially when you get a lot of keys. You end up having to create custom tools to help you navigate the timeline. show you certain sections that pertain to specific animations. Managing all of that can get out of hand.

    What if you need to do a one-off rig tweak for one animation, like constrain the hand to an object? That exit can exist in a single file just fine, even with a referenced rig but if it was in a giant timeline, it's a huge pain.

    What if you need to add or take away a few frames? You have to shove a ton of keys around and then go and update all of the export start end times, bah... what a waste.

    Lastly, I'm sure other users have struggled with this issue before, and there might be some scripts or tutorials that apply to your program and even your games genre so dig in and hunt around, not just here but anywhere there are users.

    TLDR:
    1. So yea, it really depends, does your software support rig references?
    2. Do you think you'll be iterating on the rig a lot?
    3. Do you have a lot of animations to juggle?
    4. Will anyone but yourself ever need to work on some of the files?
  • V!nc3r
    Options
    Offline / Send Message
    V!nc3r polycounter lvl 8
    Nice feedback, looks like all-in-one timeline is a very bad practice, even for a single user =)

    From what I've seen this afternoon, I'm not sure Blender is able to write key animations on a referenced armature (File > Link), so I've the feeling it could be a pain in the ass in case of armature tweaking once some animations are already created. As you say I will ask about this workflow to Blender animators (add to that I'm not used to animation...)

    At least I've learned this afternoon how to export in a single gltf file multiple animations, saved in dedicated blend files, 'was fun to do (edit: but by not using bones)


  • RN
    Options
    Offline / Send Message
    RN sublime tool
    When you have that textured, skinned, blendshaped etc. mesh and you want to reference it on other files, you can use this method (it involves the linking that you mentioned):
    This video is from the Humane Rigging series by Nathan Vegdahl, an awesome intro to rigging on Blender. He also has a paid animation course on CGCookie, it's "Character Animation Toolkit".
  • V!nc3r
    Options
    Offline / Send Message
    V!nc3r polycounter lvl 8
    Great, I will check that. I notice Humane Rigging is also on Blender cloud (but I'm not suscriber anymore).
  • RN
    Options
    Offline / Send Message
    RN sublime tool
    The videos of this Humane Rigging series are freely downloadable, as they're part of a CC-BY-licensed collection called "Open Movie Workshop": https://www.blendernation.com/2007/11/08/blender-open-movie-workshop-dvd-series/
Sign In or Register to comment.