Rigging a LEGO Minifigure

Hello. Since this is my first post, I might as well introduce myself quick before I get to the problem. I am a seventeen year old guy, getting ready for college and hopefully a degree in animation. I have been an animator for 6-8 years now, so I know the ropes fairly well. I have recently, in the past 2 years or so, become interested in doing CGI animation, so I’ve been creating my own model to animate.

Now, here’s my problem. I have a LEGO minifigure, all modeled and ready to rig.

http://farm2.static.flickr.com/1031/4731273878_44ea291dfb.jpg

However, I have been having loads of problems with the spine and the legs, but mostly the spine. I started with normal armatures, going through different combinations of 2-4 bones, weight painting distribution, etc. Those didn’t seem to be working, so I found B-Bones, and while those seem to be a bit better, I’m not quite getting the result I need.

http://brixaranimation.com/backagain.png

As you can see, the head and arms aren’t rotating properly with the B-Bone; if they were, the head would be parallel to the shoulders, and the arms would be centered better. Looking at the picture, they seem to be rotating around the bottom part of the bone instead of the top; I’d like to reverse that. Another problem I’m having is that, in the front (or the back, if it were bent the other way) there is no smooth curve from the top to the bottom.

Does anyone know how to fix any of this?

EDIT: I forgot to mention that I have a blend file of the rig and model uploaded here if anyone wants to look at it.

Hi and welcome to BA!

Looked at the character and the smoothness of the back has to do with the b-bones. to smooth it out more, add more segments. The head not rotating with the spine is normal behavior for b-bones. Reduce the b-bones segments to 1, and the head will match the rotation of the spine.

So yeah, I’m saying increase the segments, then I’m saying reduce them. But it kinda boils down to what you really want from the rig. Minifigs are solid objects in real life and can’t bend their spines AFAIK. The behavior of the neck/head not following the spine could be desirable, any rigs I make I create so the head doesn’t follow the rotation of the spine. So which way do you want to go? Now i do see that the shoulders aren’t staying in place when the spine is bent. Simple way to fix that is to have the shoulder bones extend horizontal from the spine and have the top of the spine end at the shoulder bones.

You might want to go to blendswap.com and look around, seems to me someone released a rigged minifig and posted it there. I don’t think your shoulder joint/arms or legs are modeled right, but i don’t know minifigs…

Randy

1 important thing that you need to do: put the Armature modifier above the Subsurf modifier for all the rigged objects

Sorry if I didn’t clarify on how I wanted the mini-figure to move; I’m planning on making this rig fully articulated, like the one in the video here. Also, Randy, I haven’t worked on the legs much yet, but the arms I specifically modeled the arms to bend one way at the elbow, since that’s really how elbows work. I had an earlier version that could bend both ways but didn’t work nearly as well. I tried to do some similar modeling on the legs (a wedge like section around the knee bone), but that didn’t work nearly as well as I thought it would.

My ideal solution for the torso would be a chain of bones that works like a B-Bone, but are separate from each other. Any suggestions on how to do that?

Sago, I’ll reorder the modifiers, but how exactly does the order affect the mesh?

Sago, I’ll reorder the modifiers, but how exactly does the order affect the mesh?

With Subsurf on top it means the Armature deformation will be applied after the subsurf, which will result in more calculation time AND ugly deformation. Just bend the spine, change the order and see the difference.

And if those LegPivot bones are only there to connect the Upperlegs with the Pelvis bone, you don’t need them. In blender you can parent a bone to another while being offset.

Also, Subsurf on 4 for rendering seems very unnecessary.

OK, played with this a bit. First off, follow sago’s advice and fix up the order of the modifiers. While you are in there, turn the subsurf down to 1 and 2 for render. Then for each of you meshes, in the links & materials panel, click on set smooth As is, you character has 98,000 vertices, way to many for a simple character like this. By comparison I’ve attached a pic of something I was working on, it has 1/2 the vertices and as you can see, it’s a bit more complex. You character as-is is dragging down my 2.7ghz dual core pc.

Then I went into the armature’s edit mode, grabbed the junction of the spine/shoulders/neck and dragged it down as shown in the attached screenshot. Also, set the segments of the spine to 1. Make those changes, check it out and see if you like them.

If you make these changes, please attach the .blend file and describe what you like/dislike about them so we can go from there…

Randy

p.s. For now, we’ll focus on the upper body, I did look at the legs a bit… There are some weight painting issues with the legs and the entire character… But deal with those later…

Attachments



Okay, I did all the stuff you guys suggested, pretty much exactly. I’m keeping the subsurf render levels at 3, though, because anything below that starts making the individual faces very obvious. The editing subsurf levels are now at 1, though. Here’s the file: Link.

While typing this, something occurred to me. It seemed to me that the shoulders were revolving around the hips, something that was bugging me a lot, so I moved around some bones so that the axis of rotation was now in the center of the torso instead of at the hips. While the back (or whatever side is being stretched) looks fine, the front does not.

http://www.brixaranimation.com/minifig1.png

Now, I was thinking I could just delete the vertices in the center of the torso, leaving just the vertices making up the shoulders and the hips, but then I realized it would probably get rid of the curves altogether.

I’m keeping the subsurf render levels at 3, though, because anything below that starts making the individual faces very obvious.

How about you set it to level 2 for render, and you click on Set Smooth (in Editing window) for all the meshes. Higher Subsurf levels is NOT the solution for the obvious faces, and the Smooth modifier isn’t necessary either. ‘Set Smooth’ however is.

About the deformation issue, the location and length of several bones need some adjusting. For example, the neck isn’t location at the neck, but is at chest height. The upper spine bone is also much in the chest area, while the lower spine bone is long enough for both upper and lower spine

Okay, hitting Set Smooth did work. I’ve set all the render levels down to 2.

Most of the bones don’t really have a purpose except to hold things in place, so they might actually be completely unnecessary. I had a use for the neck bone at one point, but it didn’t work, so I might just delete it.

EDIT: Well, I think I’ve got everything just about the way I want it in terms of rigging the arms, legs and torso. I’m still having a little of the same problem I had before on the torso, but I think I’ll just leave it; it doesn’t look that bad anymore.

http://farm5.static.flickr.com/4141/4747593158_78070f0715.jpg

Now, I just need to add a face. I was thinking I could set the face up on another layer, point a camera towards it, and have that camera transfer the input to a texture on the face. How would I set that up?

I’d just unwrap the face instead. It would be a whole lot easier with better results.

pg

I’m not quite sure what you mean. Are you talking about texture unwrapping?

OMG…you’re my hero! This has been driving me nuts for weeks!

facepalm

Well, since this thread has been bumped, I might as well post my next problem here.

I think I’ve figured out a way to rig the face: by using a lattice parented to a curve deform. It works great for the most part, but I’ve got parts of the temp mouth (I haven’t done this to the actual mouth yet) sticking out on the wrong side of the lattice, like so:

http://farm5.static.flickr.com/4100/4854379086_dfd1deea1f_z.jpg

For some reason, the right side is sticking out of the lattice, and in an earlier test, when the mouth squished horizontally, it would squish towards the right, instead of towards the middle of the mouth. Here’s the file if anyone wants to look at it.

http://www.brixaranimation.com/mouthtest.blend

I’ve got it animated, so you can see what I’m talking about with the squishing.

Thanks.