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
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.
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: