Industry standard for character modeling? (+ best practices questions)

Hello,

I’m currently learning 3D modeling (mostly Maya and ZBrush) by myself in order to create my own meshes and character rigs. So far I’ve been able to find a lot of good learning resources, but I’ve seen none that actually explains the best way (or some of the best ways) to create a character rig, in the context of creating for video games.

I now have a good understanding of what’s involved in the process of creating a 3D character, but I still can’t quite figure out how I should do it:

  • Should I scuplt a full, high poly mesh in ZBrush, then “simplify” it and export it to Maya only once it’s ready for rigging and animation?
  • Should I make a low-poly, game-ready version in Maya, then use Zbrush to add details to the mesh to finally get lighting maps out of it in Maya?
  • Or maybe make a basic shape in Zbrush, modify it in Maya, then return to Zbrush for further sculpting?

I’ve seen tutorials for each of those methods, but every one of these failed to explain why I should do it this way or another. Not a single mention of performance, maintainability, modularity… nothing. So what I’m asking is: what’s the most common way to do it? What should I do in order to make rigs optimized for video game production?

In advance, thanks a lot for your help.

If you still have it in you to answer a few more beginner’s questions, there’s more specific points I can’t find good answers to and would appreciate some guidance:

  • How heavy is the impact of skeleton complexity on performance? Should I go for the lowest amount of joints I can to simplify the animation, or is it negligible and I can go hard on the HumanIK skeleton in Maya?
  • Same question but for face rigs. Should I try to keep my facial expressions to a minimum or can I load the thing with controllers for every kind of expression there is? Also should I use skeleton bones or blend shapes? Or both?
  • How are customizable facial features (like nose and cheek size, eye height…) done in AAA games? Blend shapes? Doesn’t it conflict with the facial expression’s blend shapes?

I’ve been using MakeHuman (http://www.makehuman.org/) to make a basic humanoid mesh, and then customizing/changing the details in Zbrush or 3ds max, and making my own textures. It’s all open source so no worries about copyright and stuff. If you need humanoids, it’s been helpful for me. You can also change the skeleton if you need (it does have a Ue4 rig preset though).

Thanks - doesn’t quite answer any of my questions but I wasn’t aware this existed, I’ll play around with it a bit. Still, I’d like to be able to make my own rigs, specifically for non-human characters or other specific needs.

Historically limitations as to content design was limited to what the engine would allow or rejected as being “to much” so although a given engine could handle large detailed assets the ability was built into code that would limited import of such assets to a per-defined limit.

So as far as limitations goes being creative was restricted to what someone else felt was safe with out any practical numbers that said other wise however the ideals of content creation changed over time based on tool availability that made it easier to make stuff, like Zbrush, that one could take to much and make it less.

Then along comes Unreal 4.

UE4 does not have “locked” limitations where you can use the most advanced tool ever made, you’re own two eyes, and defer design decisions as to what has to be done and not as a guess as to what should be done even before it’s a problem…or not.

As to performance this might be of interest.

In short make it, get it into the engine as soon as possible, see what happens and if performance tanks make it less.

I can’t answer the specifics of the “best way”; I created a high poly model, then a simplified copy, and baked down some details, but I’m using a pretty particular art style (low-poly-ish and cel shaded, and with mostly robotic or armor-driven skeletals meaning rigid weighting rather than a lot of weight painting/blending) and so what makes sense for me won’t necessarily make sense for you.

In terms of bone performance, where the performance impact really lies is in how many bones any given vertex is weighted to. I have an absolute crapload of bones because I’m using a pre-UE4-model variant of the MakeHuman rig, which basically quadruples EACH bone in the skeleton (there are FK and IK alts for each bone which together drive a child skeletal structure, so you can toggle kinematic modes while animating, and connected to THAT are child “define” bones that the actual vertices are connected to) but the performance hit is like zero because of those bones, only a tiny fraction actually have vertices weighted to them, and those vertices are mostly only weighted to one or two bones, with a few rare exceptions. So the actual geometry deformation being done in real time is negligible relative to the complexity of the rig itself.

My advice for rigging is primarily “watch out for IK rigs that don’t have a clear root-to-tip structure”. The MakeHuman rig makes use of a lot of disconnected skeletal chains to enable complex animation driving, but the end result is often times really bad when trying to blend or do procedural bone stuff inside UE because UE doesn’t inherit the joint parenting/binding of the anim software, it only knows the basic skeleton hierarchy and the individual bone transforms. So for me, doing things like IK has become needlessly complicated because I started with a rig meant for animation design rather than game design.

i am just getting into modeling/rigging/animating my characters so i was wondering since you already seem to have experience with the matter,

lets say i create a monster with a skeleton consisting of 40-50 bones (or even more for arguments sake)

and create a lot of them on screen all using the same skeleton, but a handful of variances in the meshes and materials - what would the performance hit be like ?

if the performance hit is high what other ways do we have to model something like a spider with a lot of moving joints/parts ?

IK rigs are predominantly for like people going into movies and animation and stuff like that, or at least I have seen very little need to IK rigs in games because of the massive complication the pose on in engine software. Maya’s skeleton system is fantastic if you are just starting out and it really works well in Unreal as long as you remember to grab the root when exporting and be careful with areas of influence on joints.

I mean other than that bone counts are always going to create optimization problems, but the unfortunate reality is that the answer is the same as modeling and poly counts. I use this analogy a lot and it’s from technical production and talking to clients who aren’t developers so excuse how banal it seems. Creating games is like spending money, so you have a budget. If you want to spend all of your money on rigging then you go ahead, but understand that means you shortchanged framerate. You need to budget, that’s all. Think of the skeleton logically and you’ll be fine. Does it need all 5 fingers or do the fingers never differentiate from each other? Do the legs on your spider have 3 joints each or 2? In the span of multiplicative models these things make a huge difference.

As for your initial question, it was always something agreed upon in my work environments that it was easier to take away than to add, so your first workflow is one I’ve used and one I’ve seen many around me use. That being said, that doesn’t really mean anything.

^ very helpful post at least to me (seems like you addressed the TC and my post, thank you either way), as i know now that i should be thinking about (and mostly deciding) these things in the design process

our spider with its eight legs - is there any way around modeling each leg with 4 bones ? 32 bones just for the legs seems kind of a lot to me, even though the rest of the body would probably not add a whole lot more, my concerns are a large amount of this same skeleton on a handful of different meshes and materials

like i said i am a beginner and i will spend a lot more time with rigging & animating, at this point i am really still at the planning stage and wondering if there is another way in this particular case or if this is the only way without changing the design of the legs

also the only reason i did not make a new thread is because of how this ties in into the same concerns the TC expressed so i hope he doesn’t mind

Sorry Lindsay, going to have gently to call you on that one, it doesn’t sound like you’re properly understanding the role of inverse kinematics in rigging and animation (correct me if I’m wrong though).

Short short overview:

  • Forward kinematics (FK) is just a fancy name for raw manipulation of a characters rig (i.e. rotate the upper arm and everything connected to it down further in the arm gets carried along with it).
  • Inverse kinematics (IK) systems add “IK targets” to a rig - i.e. a hand target - then auto calculate the forward kinematics required on (for example) the arm to make the hand end up positioned at the target.

A lot of typical human movement (though not all) is fantastically difficult to animate with forward kinematics and many many times easier to animate with IK.

Classic example of both is a standard walk cycle animation:

  • If you use FK to animate feet in a walk cycle it’s almost impossible to prevent the feet going through the ground, with IK you just animate the foot targets sliding back and forth for the horizontal positioning (though still using FK for the up and down position of the feet relative to the IK target)
  • But if you use IK to try and animate the arms swinging, it’s very hard to get the natural sweeping arc of movement that you get automatically with FK by just rotating the upper arm (don’t forget easing in and easing out!).

Regarding rig complexity in game engines, that is a legitimate issue and there are various ways to deal with it:

  • Some 3D suites allow you to “export only deforming bones” effectively ignoring all of the additional stuff required by IK
  • Sometimes you’ll see people skin a character to a basic rig but then have a more complicated rig along side of it with a bunch of IK stuff on it, and the the basic rig is setup so that its bones copy their rotations from the corresponding bones in the more complex rig (you see this a bit in mocap setups).

There are also many cases where you want interactive IK in engine:

  • Dynamic gun aiming (when a character can point their gun in different directions with different arm poses depending on where you aim it)
  • Dynamic head look at controllers (that thing where when you walk past something interesting in a game the character looks at it)

I think that’s all fairly right, if anyone can see anything not really right in it just let me know.

Yeah, I use IK exclusively when animating my game characters, for both hands and feet. I have never found FK to be easier, and that’s in a game about swinging swords around! Human beings very rarely actually think about the movement of our arms and legs. Our cognitive power is devoted to positioning our hands and feet (and head), and we let the automatic functions of our brain handle where our arms and legs are going to go in response most of the time.

So when you go to animate something, like swinging a hammer or climbing a ladder or reloading a gun or taking a walk or sitting in a chair, what you’re thinking about is the movement of hands and feet for that. You don’t think about the position of your upper arm, you think about the trajectory of your hand. Trying to translate the mental process of positioning your hands into the computer process of rotating your arms is an extremely complicated endeavor.

If I could do my rig over again, what I would do is MORE IK. I would do a FABRIK implementation on the hands that ran all the way up through to the shoulders, FABRIK on the feet that ran all the way up to the hips, and FABRIK on the head that ran all the way down the spine. Just positioning 6 pieces (core-at-the-waist, left hand, right hand, left foot, right foot, and head, plus I suppose joint pits for the elbows) would make literally every animating task I’ve come up against way easier.

As for a giant spider, I wouldn’t worry too much about it having 50 bones. Even with dozens of them on screen, the performance cost of the bones is not going to be the bottleneck, especially since spiders have rigid exoskeletal legs and most of the vertices of the model will be single-bone weighted as a result… same actually goes for most of its body, too. Unlike mammals, spiders don’t deform a lot when they move because they don’t have skin over top of their skeletons, so the bulk of the vertex deformation will be single-bone weighted, which is super cheap performance wise. I mean, yes 50 bones is going to hit performance harder than 15, but even with a dozen spiders at once that’s what, 600 bones on screen? It’s just not that much in the year 2015 (unless you’re making a mobile game, I guess).

My game’s main character has NINETY-FOUR bones with vertices weighted to them (I know, right?) plus probably 90 more that don’t. I can slap 6 of them in my scene (not just the skeleton, but the entire character BP, with the full running anim graph) and I still get 60FPS.

The real cost to you in spider design (assuming you’re going for realism, and it is my opinion that anyone who would use 50 bones to rig a spider is going for realism since they’re doing a minimum of 5 joints per leg rather than the standard 2-3) is going to be the material cost of fur rendering since spiders are all covered with fine hair. THAT’S where your bottleneck is going to be on something like that, and honestly that’s the bottleneck on most games these days: materials. Shader complexity and draw calls is what chews performance up. We’re sort of past the point of sweating triangles and bone counts where modern graphics cards are, at least IMO.