Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Like
16Likes
Dislike

5 Bone Fully Rigged Humanoid Character

By Andreas N. Grontved | Published Mar 04 2014 02:09 PM in Graphics Programming and Theory
Peer Reviewed by (Buckeye, Dave Hunt, Servant of the Lord)

rigging optimization skinning

The Starfish Rig

Humanoid rig with 5 bones


Note: The rig in itself is useless unless a rigged character with a skeleton consisting of at least 9 bones and an inverse kinimatic setup is present to drive the Starfish Rig. Novice riggers are advised to gain further experience in the field before continuing. However for philosophy everyone is urged to read on.

This article is also available as PDF. Get it here: StarfishRig.pdf

---

To optimize is a philosophy. Sometimes a production is of dire need of optimization, other times it’s a matter of attitude.

There are many ways of optimizing a humanoid character for game purposes. One of the most severe forms of optimization is to simply have a billboard which just consists of a flat plane with a drawing of the character on it.

However if the goal is to greatly optimize a rigged humanoid - to a level where almost no more optimization is possible - the artist will have to get creative.

The first step in optimization is obvious: polygonal count ~ the amount of triangular faces the character visually consists of. Every artist knows this, and almost all games rely on ways to keep the poly-count to a minimum. There are different ways to keep the poly-count minimal, I’ll not dive into that, since that is well practiced among developers and artists.

The rig however can be a powerful way to keep the character simple. The engine that the game is running on needs to take care of the skinning of the characters on screen. Each character consists of a geometrical representation, known as a mesh, a skeletal rig, and the skinning of said mesh to the bones of the skeleton.

Usually a main character is made up of 20 bones for a simple rig, and 30 bones for a rig with smaller details such as one skeletal bone for each of the clusters of toes, maybe an extra spinal bone, and some bones for rigging some hair or clothing. If fingers are part of the rig, add 10 bones to the mix. Toes?

The computer needs to take care of all these skeletal bones and skinning of the mesh each frame of the game. Furthermore each point on the mesh, called a vertex, can be weighted onto more than one bone, which takes even more time to process. So there is a good reason to take it down a notch. Maybe not on the main character, but with crowds it is an absolute necessity.


rigDrawing.jpg

What to cut away to make this rig simpler?


Bones which can be deleted from a rig without really hurting its plausibility are wrists (hands) and a couple of spine bones. Feet are hard to get rid of because they constantly have direct contact with the ground. To optimize further one could delete all (or almost all) spinal bones, clavicle bones and the neck. Many would stop there. Retaining the major and most important bones of the human body in the skeleton; Head, a couple of spinal bones, upper arms, lower arms, hip (root), upper legs, lower legs and feet. That would be a greatly optimized humanoid rig. However there is more to be gained.

What is the most needed features of the human skeleton? Well we, the human being, have two legs and two arms, each separated into two large bones. There is no way we can get rid of those. Feet and hands we might be able to cut away, since they are quite small and are not really used for unimportant characters. Of course it would be nice to know that the character's feet always visually nails it to the ground, but it is also two extra computational cycles of rigging and skinning per frame, and I reckon that those cycles are well saved to be spent somewhere else.

The neck is gone, and the spine is not needed either. Yes the character will be a bit stiff in the back ~ but long live optimization!

We’re down to this:


rigDrawing2.jpg


10 bones in total is pretty good. This is a completely ordinary piece of optimization. Nothing to get all too excited about though. To optimize this even further there has got to be something drastic for us to do.

And there is. Of course there is. Polygons can create a much needed illusion.

Polygons are a flat piece of geometry that consist of triangles. Those pieces of geometry form the surface of the character like paper would in a piece of origami. Each triangle is made up of three points also called vertices. Each of those vertices is attached to a bone. So if one vertex is attached to your hip, and the other two vertices are attached to your knee, that triangle will stretch, like a rubber membrane, when you move your knee. This can be exploited, not to say cold bloodedly utilized to our advantage. So the stretching of polygons is only good for between bones. Which means that extremities cannot be tampered with. That means lower arms, and lower legs. However upper arms and upper legs could be visualized by stretching polygons between shoulder/elbow, hip/knee only. Cutting away the shoulders and hip bones is definitely the answer we were looking for to make this rig super optimized.


StarFishRig.jpg


It looks weird I’ll admit that, but the functionality is outstanding. It now looks like a starfish as well.

There is a Root bone in the middle of it all, that bone makes sure that the torso, shoulders and hip do not move out of place. Then there are 5 bones, one for each extremity. The bones in the arms take care of the elbow and out, including the hands. The same goes for the knee bones. The head has been spoiled with its own bone - this can be debated, but I’d argue that having no spine requires something on the spine to be animated to give the illusion that there is spinal activity. The head can fake that, not perfectly, but enough to keep the character alive.


StarFishElbowGif_light.gif


To make the rig usable it is of course constrained and driven by a normal rig with inverse kinematics for both arms and legs, and all sorts of bajingle. Animation goes as smoothly as it would with other characters.

Some shortcomings present themselves in the mesh. With no bones to keep track of the upper legs and arms, the mesh has a tendency to flatten out. Like a balloon being twisted.

Bending the knee with no upper leg bones to keep the width of the leg, results in an unacceptable flattened leg. However making sure that the edge going around the knee is angled from low behind the leg to high above the knee on the front of the leg, some of the flatness can be avoided.

That will take care of the most critical misformation. When the leg is bent even further back to a 120 degree angle, the upper leg is completely flattened anyway. Originally I thought there was no way to deal with this. However a couple of days of testing and using this rig made me realize that there actually was something that could be done.


StarFishRigLeg.jpg


Knees and the width of the legs have a hard time when it is being bent. To somewhat deal with that we have to create a vertex inside the leg, right above the knee. Like so:


StarFishKneeModelV2.jpg


The vertex is of course fully skinned to the only bone available in that region, which is the knee, and when bent the vertex just pops out creating an illusion of a knee. This can be applied to the elbows as well. While it doesn’t fix the problem entirely, the flat legs become a minor flaw.

The starfish rig is super simple to create and very easy to maintain. It might suit a flat shaded aesthetic more, where the dent in the knee and the elbow will not show at all. But for crowds a fully textured character would wear this fashionably.


StarFishKneeCreaseGif_light.gifStarFishKneeSpikeGif_light.gif


Floating feet is a critical shortcoming, but acceptable when taking into account that two bones are saved. With some vertex shading, a clever shader might be able to take care of the feet. The artist will never miss the wrists in my experience - given that this starfish character is not used for complicated interactions.

One will learn to live and overcome the stiff spine in clever ways. Head animations can fake alot of the liveliness originally provided by the spine.


Have fun

Andreas N. Grontved


Contact me at andreasng -curly a- gmail -dotty- com
Or visit my site at: sota.dk

Disclaimer
I did not invent this! Though I’ve never seen anyone ever do anything like this, I’m certain that all studios with the need of highly optimized characters has come across something similar if not identical.



About the Author(s)


Andreas N. Grontved is the Lead Animator at Playdead - creators of yesterdays indie hit Limbo.

He has been working primarily with feature animation since graduating from The Animation Workshop in Viborg/Denmark and has only recently switched to game development when he was hired to do animation for Playdead's yet-to-be-named yet-to-be-dated "Game2".




Comments

Fairly interesting article, Andreas. The illustrations appear to be well done and pertinent. After reading through the article a couple of times, I have a few comments.

 

First, I do not consider myself an experienced modeler. I can create a mesh and an armature (bone hierarchy, node hierarchy, pick your favorite name), weight the vertices and create relatively simple but passable animations (walk, run, etc.) I am more familiar with the implementation (rendering) of skinned meshes comprised of the bone hierarchy with weighted vertices and one or more animation sets (actions) as described above. I have only begun to get into more complex rigging and inverse kinematics.

 

When I read the title for your article, I thought it sounded like an excellent opportunity to learn more about rigging. I was, however, quite disappointed. I spent some time figuring out why that was my reaction and came to the conclusion that I was not at all your intended audience.

 

So:

 

1. I did find the concept of optimizing the number of bones for the target character to be well done. The "5-bone" phrase in the title is justified, and is useful information whether a rig is used or the model relies solely on forward kinematics.

 

2. However, I would suggest that early in the article you more fully describe your target audience, which (grading myself as a beginning modeler) are experienced modelers with an advanced knowledge of rigging. You do mention "rigged character" earlier on, but without sufficient emphasis. That would help lower the expectations of readers with less experience (such as myself) that hope to gain more than a minimal "The following is possible" from the reading.

 

3. I suggest the title be revised for something less promising than information on a "fully rigged character." The following comprises almost the entirety of the "fully rigged" promise in the title:

To make the rig usable it is of course constrained and driven by a normal rig
with inverse kinematics for both arms and legs, and all sorts of bajingle.

The remainder of the article following that phrase could be prefaced by: "Assuming we have a character already fully rigged, there are a few details to discuss."

 

I am, of course, looking forward to someday gaining enough experience to understand "bajingle." cool.png

Hey Buckeye - finally some constructive critique on the article. I've had so many people read and no one has really come forth to tell me what to change. 

 

I've put in a short note - a warning of sorts - to tell readers that it is not an article for novice riggers and that IK, min. 9 bone rig is required. I hope that's better, and I am so sorry that I cheated you to read it even though you may have wanted to not read it. 

 

I still think it has value to novice riggers but on a more philosophical level. 

 

It has come to my realization that the "5 bone fully rigged char" phrase of course advertizes an easy way to make a rig. 

However the word optimization in the beginning of the article should warn about complexity, since optimization is in it's essence a complex task to to. 

 

When the article was posted I marked it as "intermediate" - I guess that is not visible to the audience of this site??? hmm

 

Thanks - 

Your introductory paragraph is much better now, Andreas. Thank you. ( You need to put a space in "consisting of atleast 9 bones" between "at" and "least" ).

 

I'd still like to see the title less inviting, but it does appear accurate in context and I have no firm objections.

 

"intermediate" - I guess that is not visible to the audience of this site?

 

 

The "intermediate" rating does not appear with the article, unfortunately. That wouldn't have discouraged me from reading it, as I'm fascinated with skinned mesh animation, both the theory and implementation.

 

Regarding the lack of comments thus far:

 

1. It's only been a couple of days. It may take a week or so for the article to be "discovered" and further reviewed.

 

2. There may be only a few authorized reviewers here on gamedev that feel qualified to say "yay" or "nay" to the article.

 

From my view, the article is well-written, provides both general and detailed views on the subject, is well-illustrated, and appears to be authoritative. It is short, but you state that in your thumbnail text.

thanks again Buckeye.

 

I have a hard time formulating the title though I really want it to be spot on, but I also do not want it to repel potential readers - I see your point of it being quite enticing. 

 

The rig in it self is not fully rigged, but the fact that it has bendable arms and legs without the necessary bones is in my eyes immensely interesting. 

 

... 5 Bone character rig with full major limb mobility... I'm going to stick with the title till a better one is discovered. 

Hey! Thanks for this article! I have only skimmed it, but I am going to read it later. This will help speed up my workflow!

This was an interesting read. I wonder if any games use a LOD system for model skeletons and not just polygons? Decreasing the bone count and the polygon count based on the NPC distance from the player, the number of NPCs in view, and the power of the player's hardware.

This was an interesting read. I wonder if any games use a LOD system for model skeletons and not just polygons? Decreasing the bone count and the polygon count based on the NPC distance from the player, the number of NPCs in view, and the power of the player's hardware.

yeah you are right that would be interesting. There would even be a kind of beauty to a system that does it gradually. Seeing bones pop in and out would look pretty neat. 

This is exactly the type of information I was looking for in my post about optimization. Do you know any optimization tips for modeling?

no not really. there are a couple of modelling optimization tips in the article - namely for the knees/elbows. But I'll think about it. 

Very cool article sir. However, I was a bit mislead by the title "5 Bone Fully Rigged Humanoid Character". I was thinking that you'd be walking me (a completely ignorant modeler) through how to create a... 5 Boned Fully Rigged Humanoid Character. :) This was quickly cleared up by the intro paragraph modifications you made.

 

Perhaps a better title might be Optimizing Models by Reducing Bone Count or something similar.

 

The images and animations are perfect for this. Excellent job there.

 

And you're right, I see all kinds of "reduce your polygon count" articles, but this is the first "reduce your bone count" optimization article I've seen. I think this article very much needed to be written. Good job.

 

If you're able, you might include some metrics to show an estimation of how much of an optimization it is. Put up a table of 1, 10, 100, 1000 skinned models with 20, 10, 5, 4 bones.

 

If you're taking requests, I'd love to see a "from the ground up" modeling/rigging/kinematics/skinning article (or series) written by you. :)

 

- Eck

Hey eck 

thanks. Buckeye also pointed out that the title might be misleading. It is a win lose kind of thing, where I really would like people to read it, and on the other hand I also want the title to fit.

 

The reason I didn't do a ground up tutorial was that there are endless fields of these, and I have a hard time being enthused about writing something that has already been written. 

 

If I would do it, I'm sure I would lavish it with gifs and drawings to make it stand out. However I have to have the motivation.

 

Cool that you liked it. 

~a


Note: Please offer only positive, constructive comments - we are looking to promote a positive atmosphere where collaboration is valued above all else.




PARTNERS