Lego Robotics Armature

I have completed modeling a simple (and original) Lego robot brick by brick (screenshots attached). At this point there are a number of ways to rig an armature to the robot, but as I am new to the world of animation, I do not know which method is best.

Approach 1: I can join all the bricks (currently individual objects) into a single mesh and work with them through vertex groups. Upside: this follows the more traditional method of rigging characters. Downside: a single mesh is traditionally intended for organic, smooth characters, not necessarily rigid pieced robots. Also, vertex groups can get out of hand.

Approach 2: Leave the bricks separate but parent each one to it’s own bone in a single complex armature. Upside: easier to “take apart” the robot, as is traditionally done to Lego bricks, and easier to manage individual pieces overall. Downside: not traditional at all, possibly very sloppy.

There may be other approaches. Experience will no doubt give me the answer as to which method is the most efficient, but to save myself the headache I’m asking this forum. What’s the best way to rig a multi-piece robot?

Attachments



well I will give you my opinion. Join everything into a single mesh. Create your armature but don’t use ( create vertex group from heat neither envelops>>>don’t create anyhing). You will create your vertex groups in Edit mode. For example, in Edit mode you see all the vertex, right? click on one vertex ( for example the arm section ) and then press L ( linked), it will select all the vertex linked. Give it a name ( Vertex Group panel ) and assign weight= 1.

Select other vertex, press Link and decide to where it belongs to, if it belongs to the same arm section then add it to the vertex group.

You can do the whole arm in one click, by selecting, press L, shift other vertex, L until you have the whole rigid section selected, then create your vertex Group.

Notice: The vertex Group name must be the same name of the bone driving or deforming it. Also you wont be using obviously the weight painting mode.

I read a simple robot tutorial elsewhere that did not advocate joining a single mesh, but I will not question anyone’s credibility. If no one else offers a different opinion, I will go for yours and use vertex groups. Does anyone on this forum agree or disagree with Animaticoide before I continue?

I really don’t see how there’s any difference at all. Neither method seems to offer any real advantages or disadvantages. You may as well join the bricks into one object and use vertex groups.

The best way if whatever is easier for you. The final product would be the same regardless of what method you choose. Unless you are planning something more complicated later with the parenting thing which might bring confusions. If you already have a tutorial on hand using parenting then go for it. vertex group within a single mesh is just more standard and less confusing for anyone analyzing your file. But what matters here is your work, just go for it.:rolleyes:

with lego the only pieces that bend are the ones with joints in them so you get no real benefit by adding all the pieces together and making vgroups for all of the pieces that just seems like more work to me. what I would do is make a bone for each segment of pieces lining up the bone joints with the hinges in the lego then just box select each segment of lego and parent it to the bone (ctrl p Bone). this way there is no vgroups and would only take you a few minutes. plus it keeps the lego “feel” to the whole thing

As an Update, I decided to experiment with joining all the meshes into a single mesh. The vertex group naming was very tedious, but perhaps it will still be worth it.

I have met another problem, however. As I have wrestled with the very capricious nature of limits, stiffness, etc. for IK chained bones, I have found that armatures in Blender seem to behave in a very inconsistent nature. But before I go pointing fingers, I need to ask what I might be doing wrong.

Here is an example of one problem I am experiencing:

In the first image, the relevant bones of the armature are displayed on the robot. I have limited the X rotation of the left “foot” bone, as shown by the red arc.

/uploads/default/original/3X/9/5/95a0597b8ba75dca245f74ee8ea6078181113b65.jpgstc=1&d=1284593447

The second image shows the same foot at the side view, with the red arc.

/uploads/default/original/3X/7/d/7dff5098d02044cc30c0d803e06814b30e8be804.jpgstc=1&d=1284593447

In the third image, I have moved the IK target beyond the limit of this arc. But, as you can see, the foot bone still follows the IK target beyond its limit.

/uploads/default/original/3X/f/d/fd585f26a3be7e8f8ba5bb6862790cbec9790208.jpgstc=1&d=1284593447

It seems like that should be so simple a concept, and yet it’s not. The only explanation I can think of is that perhaps the Y axis (twisting) rotation of the hip bone offsets the foot’s x axis rotation, but as you can see the arc already compensates for that.

Other problems I have been experiencing include:
-Any setting of the “stiffness” of bones tends to be completely ignored (I try the stiffness in various bones in the chain at 0 and .990 with no change in behavior. So, for example, the hip bone shown above readily twists along its Y axis despite the fact that I have its stiffness for the Y axis set at .990. Do I misunderstand the purpose of stiffness, or is this a genuine inconsistency?

-Some bones, such as in the arm IK chains, do follow their limits, but for reasons unexplained will breach their limits when the IK target is moved to certain areas. This happens when I experiment moving the sword IK bone from the front (numpad 1) view: the shoulder ought to move only a little bit (like, 10 square degrees or something), but it sometimes “dislocates” itself.

-As my robot has no natural lego pieces that allow fluid leg movement, I am using b-bone segments to “bend” the bricks. The b-bone segments seem to be working fine for the “hips,” but for some reason they stopped working for the “foot.” The “foot” brick used to bend when its respective bone was rotated, but stopped doing so after I made some changes to the rig. The above images show the bone rotated in the same way, except the “foot” brick area is just rotating, not bending. Is this something that requires vertex painting, or is it in my armature? I didn’t have to use vertex paint to get it working the first time.

I have attached the .blend file containing just the armature. Please note that the armature is still under development and some parts, such as head movement, have not yet been implemented. Also note that I have moved irrelevant bones to other layers of the armature, so if you think some bones are missing, toggle between layers 1, 2, and 3. (sorted by relevance: 1 - IK bones; 2 - major segment bones; 3 - brick by brick bones).

Attachments




visor_rig_problem.blend (164 KB)

Took a look at your rig a bit… The limit rotation setup on the ik constraint is working as it should, it just doesn’t appear that way. To see what I mean, switch from b-bone to octahedron display of the bones. Now grab the ik controller bone and move it and watch what happens. When I did it, as soon as the bone (foot bone I think you called it) the constraint is on hits the limit you set for it, then the hip bone rotates.

As for using b-bones to get smooth bends, you have to have enough geometry there for it to work. Look at the attached screenshots. I setup a 2 bone armature to control a cube I scaled to lengthen it. In the first screenshot, notice how the b-bone is bending, but the simple cube isn’t following the bend of the bone? That’s because it’s a cube, 8 vertices, 6 faces… not much geometry there. In the second screenshot, all I did was subdivide using subdivide multi set to 5. Now the simple cube has alot more vertices and can better follow the b-bone’s twist.

Another quick thought - messing around with the limit rotation of the ik constraint in the way you did can cause problems. When pushed to extreme poses, I’ve experienced strange flipping of bones.

I hope this is enough to push you in the right direction…
Randy

Attachments



You were right about the rig, the limits do in fact work. In the screenshots I previously posted, the arc was hidden beneath another bone, but it did in fact extend to make the foot bone within bounds.

/uploads/default/original/3X/0/a/0a3e2c241559d65729dfc1cb94b8050fda4e6fff.jpgstc=1&d=1284607840

Unfortunately the “stiffness” fields in all cases seem to cause the most troubles, and they only seem to work to a small extent.

As for the bending b-bones, I assure you that I have enough geometry:

/uploads/default/original/3X/1/a/1aaaa5dec49982517ef82db144c69eab06dcb804.jpgstc=1&d=1284607840

Unfortunately, the foot bones seem to think that I only want the foot to bend left and right, not forward and back:

/uploads/default/original/3X/a/e/ae226e44a55c4b9b283435155524e9afc54734b5.jpgstc=1&d=1284607840

So the foot bones are bending with the b-bones, just in the wrong direction. And my attempts to rotate the hip/foot bones appear to make the mesh explode.

Does anyone know how to fine tune the b-bone bezier to act in the way I intend? I know that any bone’s in and out points can be adjusted, but I want to “turn” the bezier so that it bends forward and back, not left and right.

Attachments




Ok, yes you have enough geometry in the foot/leg for it to deform. That was not clear to me on you initial screenshots, but seeing the wire frame makes a difference. One thing I see from your screenshots is that when the leg is rotated out to the side, the b-bone straightens out. In the rest position, the bones are curved, when the foot is kicked out to the side, the b-bone straightens, cause the mesh to curve. When the controller is moved backwards, the b-bone still retains the same curve as it has in the rest position. Which is why it’s not deforming the leg/foot as you want.

I’m probably just stating the obvious to you… It’s late and I’ll take a closer look in the morning…

Randy

Took a closer look at everything and to be honest I got to ask how are you planning to animate this thing? How are you going to create a walkcycle? I get that you will probably rotate the hip upwards to lift the foot off the floor, then move the foot around as needed. I think I see what you are after and I’m thinking your setup is just too simple to handle all that needs to be done.

My thoughts are to use 2 bones instead of one for the hip and 2 bones instead of 1 for the leg. In the end I’m thinking this could be reduced to 2 controllers, 1 to rot the hip, 1 to control the leg. I think expecting to use one controller to handle the leg and the hip at the same time is expecting too much. Like everything in life, IK solvers have their limitations.

Randy

The rigging is done… almost.

There is plenty for me to learn about rigging. I realize this most when I watch the Sintel rig demo video(s) on YouTube like this one. Unfortunately, I am still using Blender 2.49, which means that it would be detrimental for me to learn advanced-level rigging techniques (i.e. drivers, scripts, controls, all that fancy stuff) if most of them have been overhauled in 2.5. Sure, I could switch to using Blender 2.5 easily, especially now that it’s almost stable. But with a wiki page that looks like someone loaded red links into a shotgun and blew away the server, how am I supposed to learn an almost completely new interface to make switching from 2.49 to 2.5 worth my time?

I know many of you out there already use 2.5, but unless one of you can direct me to some wiki that actually covers most of the new stuff in 2.5, I feel like I’m at a standstill in 2.49.

There are plenty of BSoD tutorials with advanced rigging techniques, but BSoD is, in fact, just that: BS. Most of them only offer a few convoluted screenshots with intermittent bullets that say “TODO: explain this stuff” or “Will document this later -2006.”

Well, it’s later. How did you 2.5 users relearn the new Blender so quickly and so efficiently?

I attached another dynamic pose. Yeah, I really suck at lighting, too.

Attachments