Help On my Rig

Hey Guys. I need help on my Minecraft Rig I’ve been working on. So far it has sharp bends on the arms and legs and I am working on fingers. First off when I rotate the arm the fingers seem to glitch out and move to different places when I rotate the arm. Second of all I need a way to make the fingers move without having to do them manually.

Download: SteveBetter.blend (1.22 MB)

Link to video: https://www.youtube.com/watch?v=ybWy80OQtrI
Sorry For being dramatic at the end. :frowning:

The finger flickers on an off because it is sitting in plane with the arm mesh. If you off set the finger surface a little from arm surface it should go away.

Hello Did you try this with the download I put there because when I moved them down a little It still did it.

I think it has something to do with the booleans

Whew, yeah, you got problems:


Good news is it’s not the problem ridix thinks it is. ridix thinks it’s z-buffer fighting and watching your video, that’s what I would think it is too. Once I got the pose in that pic, I knew something else was going on. But before I get into your problem, lemme explain z-buffer fighting, cause I think you’re gonna have problems with that sooner or later.

Z-buffer fighting is a term to explain what happens when 2 planes, or faces, occupy the same space. For example, if you started blender and duplicated the default cube and didn’t move it, it would sit in the same space as the original. The default cube has 6 faces, the new cub has 6 faces. Each face of the default cube has a matching face on the second cube and they are exactly on-top of each other. So when the renderer renders the image, it doesn’t know if it should render the face on the 1st cube, or the exact same face of the 2nd cube. End result is blotchy renders with black spots, much like your video shows. I only mention this because looking at the fingers, I think they may have that problem at some point in time.

Anyhow, the bad news is I’m thinking its how it’s rigged. You have a few separate armature objects in there and I’m thinking that’s where the problem is. Each finger is an armature object, and these objects are children of the arm mesh, which is controlled by your main armature. Don’t do this, it’s too much hierarchy. The armature controls a mesh, the mesh has children, which are armatures, which control other meshes. Build 1 armature for everything and avoid all those parent/child relationships. If you’ve rigged it this way so you can control what bones you see on screen, then this was the wrong way to do it. Learn to use blender’s layers. In the main 3d view, there are layer buttons when in object mode in the 3d view, 2 blocks of 10 cubes, one should have an orange dot. In object mode, select the main armature, then do a M-key and a sub panel should open showing you those 2 blocks of 10 cubes, one cube should be dark, click on the one below it. You’ve now moved the armature object to a new object layer.

Click on an object layer in the 3d view header to turn it off or on, shift works here as well to select multiple layers. Now with your armature on a new layer, you can view the armature only, or the mesh only, or both by turning off and on layers. Just like object layers, armatures have their own layers, access them in the armature properties panel. Move bones to new layers while in edit mode via the m-key. This allows you to separate out bones to different levels, main bones on one layer, finger bones on another layer.

You might be able to fix this by selecting all the armatures, but the main one, then select the main one an ctrl-J to join the objects into the main armature.

Randy

Hi Randy

I tried Adding the bones to the main armature and it got rid of some of the glitches. However I still get glitches and I now get them when I rotate the fingers! I was wondering do you know how I can do this same thing with shape keys because hat would help soooooo much as then I could add in driver bones that automatically unfold the fingers.

Ok I give up on the boolean method I use can anyone figure out a way to do the same thing with shape keys that are controlled by a driver bone. Basically meaning I can grab one boneshape move it up and down and the finger will unfold automatically with the sharp bends??

So humor me and tell me where booleans were involved? Booleans should be avoided when making a finished mesh. Booleans are useful for fast creation of base meshes and base meshes are only useful as guide to creating a finished mesh with correct topology. If you don’t understand what that means, then just ask and I’ll explain it.

Can’t really do this with shapekeys, you could, but the final result wouldn’t be that great. When a shapekey goes from off (0) to on (1) the vertices travel in a straight line, from point a (0) to b (1). The transition from 0 to 1 won’t look right. On the fingers, yes you may be able to get away with it. On the arms, I don’t think it will work, and you have problems in the arms.

Here’s the arm rotated slightly to one side:



Notice the diagonal line on the forearm. Rotate the arm the opposite direction and this happens:


The diagonal line switches directions. That glitch might cause render problems.

But look what happens when I rotate the forearm forward:



Your nice cuboid geometry becomes a train wreck.

For this arm, I would use bones deforming the mesh and 2 shapekeys, to improve the results. One shapekey for every 45 degree of rotation. If I was just using a control bone and the arm rotation was all shapekey, I’d want 3 shapekeys. One for every 30 degrees of rotation.

Try it out for yourself, scale the default cube into a rectangle, like a minecraft character’s arm. Add a loop cut in the middle of it lengthwise. Create a shapekey where 0 is as it is now, and at 1 the shapekey would be half of that rectangle rotated 90 degrees. Then play with the shapekey slider and notice the transition from 0 to 1, it probably won’t look good.

Trust me, I’ve helped rig these characters a few times.

Randy

The only reason I look for shape keys Is because if you look at this rig: http://www.youtube.com/watch?v=9zfDANM_BEE
It uses Shape Keys where as the mesh bends, vertices move to create the sharp look. This is sort of what I would like but you could take a look at that rig and see how he does it. The download is in the description of the video.

This video is not my rig.

Oh yeah and booleans are involved telling where the elbow and parts of the fingers can or cant show.

Ok, look at the sample file I’m attaching. In it, there is a stretched out cube with a loop cut where the 2 bones meet. Select the bone on the right and rotate it upwards, at 45 degrees, one shapekey is fully on. Rotate the bone to 90 degrees and the 2nd shapekey is fully on. The mesh is deformed by the bones, the shapekeys only work to keep the joint square. The key to getting this to work is the custom driver curves I created. Is it perfect? No, but I bet if I spent time tweaking it, I could get it perfect. That is venturing into a bit more advanced work.

Anyhow, this is how I would rig this. Bones deforming the mesh, shapekeys to help fix the bad spots, like elbows. For fingers, I’d use the same approach, bones deforming the mesh with shapekeys. Then I’d create 1 control bone to control all the bones of the finger.

You could do this with all shapekeys and 1 bone as that video sort of suggests, but I’d rather believe (didn’t look at the file) it was done using what I suggested, you just don’t see the extra bones. All shapekey solution to this would be alot more work (more shapekeys and driver curves) than my method.

Feel free to ask questions,
Randy

Attachments

MineCraft_Arm_Shapekey_266.blend (423 KB)

Ok I created my own arm which is like yours but it has a sort of better bending system with IK and stuff but when you say 1 bone to control the other bones what do you mean because there aren’t shape keys for bones and I’m not sure how to set up a bone to do 2 things in a specific order. Like on the video rig unfold the first bit then the second.

Ok this is the bit I meant
Oh and BTW I have a new finger system and a less glitchy one. I just need to know how to set up bones to have shape keys or have a bone that controls the unfold.

Hope I have been confusing you. Let’s get this straight, shapekeys only affect meshes (and maybe curves). When I say I would rig this with bones and shapekeys, I mean to rig the mesh with bones. Let the bones do all the heavy work of deforming the mesh. Then add shapekeys to the mesh to correct the mesh and help keep the square corners, these shapekeys are triggered by the bones via drivers. The last file I posted uses this method when rotating the right most bone upwards. If you rotate that bone downwards, you’ll see what it looks like without any shapekeys to correct it.

Anyhow, the finger behavior you want can be done easily using the action constraint, see attached file. In it is 3 small finger bones and one large control bone, scaling the control down in size curls the finger bones how I think you’re wanting.

Here’s how I did it. I created an action for the bones, hope you have played with the dopesheet/action editor, or you won’t understand this. Anyhow, the action is a simple one. First frame I set a key for the rot of the top bone, frame 11, rot the top bone 90 degrees and insert a rot key, select middle bone and insert a rot key. Frame 21, rot middle bone 90 degrees, insert a rot key, select the bottom bone and insert a rot key, then at from 31, rot the bottom bone 90 and insert a rot key. Then I did the same thing in reverse up to frame 61, but that’s not really needed, I guess…

When scrubbing thru the timeline, the finger curls and un-curls. Now this is important, after creating the action, to the right of the action name (in the dopesheet switched to an action editor) there is a box with the letter F. Click that, assigning a ‘fake user’ to the action. Any action without a user isn’t saved, a ‘fake user’ is a user, so it’s saved. Now, next to the ‘F’ box is an ‘X’ box, click that box and the action is disconnected from the bones. Scrub the timeline and nothing happens. This action can’t be linked to bones, so this action would have no users if we didn’t assign a ‘fake user’ to it.

Now I added an action constraint to the top most bone, set it to use the control bone’s y-scale. It’s setup so that when the bone is scaled from 1 to .75, frames 1-11 of the action just created is played. Same thing for the other 2 bones.

Other ways of doing it, but they get complicated, easier ways of doing this but they would be more realistic. A normal human finger doesn’t work like that.

Then use shapekeys to keep the finger mesh square driven by those three bones.

Randy

Attachments

Action_Constraint_Fingers_266.blend (406 KB)

Thank you soooooooooooooooo much for all the help you have given me. I now have a fully functional rig with sharp bends and fingers. Thanks sooo much again.