Why does Blender skin models to the editmode pose?

I have been doing some character skinning. Now, I modelled the character in the T pose and created a mesh. If I position the armature to match the mesh, the IKs don’t move how I expect because they have to be bent in the direction they will move to prevent them flipping.

So, after repositioning my armature and got the IKs working, I then went into posemode to align the armature with the model and then bound them. When I did so, I saw that the model had bound to the editmode pose and had deformed the amount that differs between editmode and posemode.

This means that I have to model stuff according to the IK setup and it also means I have to remodel if the IKs change. I was wondering why the model doesn’t bind to the posemode pose. That way, you can set IKs by using editmode but not have to worry about changing the model. It also means you can model more accurately.

In Maya, they do something like that but because they set the IKs when you add them, it means you have to remove the IKs, change the bones and add them again if they are wrong. But if Blender bound in posemode, it would be better than this because it would mean you neither have to reset the IKs nor would you have to remodel.

i assume it’s because of concept and because having what you want would require a lot of reprogramming… however i agree with you, this would be useful indeed.

But you even set vertex groups in the editmode of the mesh. At this point the armature is in posemode pose anyway and not editmode pose. That’s why I can’t see any reason for it to bind to the editmode pose and then take on the deformations that come about from the posemode pose.

Edit mode is the resting position of the armature, that’s why it uses it.

But you even set vertex groups in the editmode of the mesh. At this point the armature is in posemode pose anyway and not editmode pose.

When you enter edit mode on your mesh, it reverts back to it’s resting position.

Regarding your problem, it’s quite easy to solve by adding FK keyframes on the bones to bend them slightly in the direction that you want the IK solver to prefer.

Martin

Well that seems logical but I still think it would have been better to bind to the posemode pose. Of course, this way you’d have to store an extra pose but that’s not a problem.

I didn’t think you could set FK keyframes on a bone that’s part of an IK chain. In fact, you can’t move them at all except for changing roll values. Is there a tutorial that deals with this?

Also, how do I know where to set my bones in the first place? I know what the limits will be but I don’t know where to put the bones so they will move properly within those limits.

Take an example of the leg:

If I set it like (top line = thigh, bottom = shin):
|
|
in editmode, the IKs won’t work. But if I set it like:
_
|
then it does work - in that it moves correctly over most of the range and the joint only flips in the quadrant around the character’s bottom. but is there a rule to know how far I can bend it before the flipping occurs?

Now my leg mesh is modelled according to the first diagram so I then have to remodel it to fit the second diagram. Whereas if I was able to jump to posemode and straighten the leg and then bind, surely that saves a lot of time because I don’t have to worry about changing the model.

I’ll make an example blend file tonight if I have time. You’re really over complicating it and I don’t think you understand what I meant.

EDIT: One thing I really don’t get is this: If you’re not adding your skeleton on top of you mesh, how do you know it will fit?

Martin

Probably, it wouldn’t be the first time :wink: . I’m going to play about with it a bit more - you don’t really have to make up a blend file. Before I got stuck into the rigging, I just wanted to make sure whether I had to match the mesh with the armature rather than the other way round before I actually modified the mesh.

BTW, is there a standard pose that makes a human character mesh rig best? Like the T-pose is standard in programs where you match the armature to the mesh. I notice in the manual, there is a mesh of the arm:

http://www.blender.org/modules/documentation/htmlI/x7174.html

Is that the best pose for the arm to get the IKs right?

I just measure the rough distance between vertices and then make the distance between bone endpoints the same. This is one disadvantage to doing it that way. Oh, do you know if there’s a way to select bones in editmode other than trying to select the 2 endpoints? As Solmax pointed out there’s a way that you can select edges.

Joint half flex is the best pose for easy deformation. If done correctly, you can even get some muscle/skin/fat bulding without adding anything more than a basic reg. Download Blendo on the blenderchar site to have a good idea of what I mean: http://blenderchar.weirdhat.com/models/

There’s none. But it would make a nice feature.

Martin

That is the info I wanted to know, thanks. That’s what I was asking before about the leg. The second diagram was showing the leg at half flex and I found it worked best.

I don’t know what a basic reg is, but I’ll check out that link. I think I saw what you mean in the test suite or something. I was going to try using lattice deformers but I’ll definitely look into that.

I wouldn’t even mind being able to switch to posemode, select the bones and then going back to editmode with the selection remaining - like what people do with UV face select.

I don’t know what a basic reg is, but I’ll check out that link. I think I saw what you mean in the test suite or something. I was going to try using lattice deformers but I’ll definitely look into that.[/quote]
I meant basic rig, of course. :wink: Meaning no fancy muscle bones, rvks and that kind of stuff.

Martin

Oh right, yeah I’ve seen them used for muscles. It worked quite well I thought. It saves doing things like driven keys that I used in Maya - they were a nightmare.

Here’s what I meant: http://www.clubinfo.bdeb.qc.ca/~theeth/Temp/IK_FK.blend

That’s just a straight limb with an IK solver. Normally, you’d have much trouble controlling how it would bend from one side to another but as you can see if you preview the animation, I’m varying the bend without even moving the IK solver. That is done by adding FK rotation keyframes to the bone to help the IK solving maths choose the direction I want them to choose. So you’ve got all the advantage of IK while still keeping a lot of control on the individual joints, like FK does. I guess you could call that an hybrid method. :slight_smile:

Martin

?? IMO the best invention since keyframe interpolation.

That Blend file is crashing all my versions of Blender including the official 2.33a. Could be a Windows/Mac thing. BTW, what format do Blender files use? I prefer ascii because I used to use the Maya binary format and if they crashed, I couldn’t fix them but with ascii, I could even edit them manually.

I can understand using binary to save space but why not just use ascii compressed with standard zip or gzip compression? At least then, you can unzip and fix the problem.

One of the odd things is that the crash reports the same error I got when rendering with yafray using a test build, which is fixed in the version I’m using now. Did you use a test build to make the file?

[quote]
Oh right, yeah I’ve seen them used for muscles. It worked quite well I thought. It saves doing things like driven keys that I used in Maya - they were a nightmare.

?? IMO the best invention since keyframe interpolation.[/quote]

Do you mean driven keys are the best thing or the use of rigging for muscles? If it’s driven keys, I prefer the use of expressions - probably the Blender equivalent is script links or logic. I just feel they are a bit more stable and easier to keep track of. Much easier to define too.

That Blend file is crashing all my versions of Blender including the official 2.33a. Could be a Windows/Mac thing.[/quote]
It crashes here too (at work) on 2.33a. I’ll see at home tonight what went wrong.

BTW, what format do Blender files use? I prefer ascii because I used to use the Maya binary format and if they crashed, I couldn’t fix them but with ascii, I could even edit them manually.

Blender uses a binary based format made especially for backward and forward compatibility. Part of it is a memory dump (which makes it really fast to read and write) and part of it is the definition of the structures of the data which is what enables compatibility support. Lets just say it’s codename is not DNA for nothing.

Martin

Do you mean driven keys are the best thing or the use of rigging for muscles? If it’s driven keys, I prefer the use of expressions - probably the Blender equivalent is script links or logic. I just feel they are a bit more stable and easier to keep track of. Much easier to define too.

driven keys are much easier to set up, coz you don’t have to bother with “correction parameters”. you just say “this is the starting value of the driving and the driven channel, and this is the end value of the driving and driven channel”. voilá! with expressions, i need to know how one value is mapped to another. let’s say, i wanna control a bone’s scale between the values 0.8 and 1.2 with the rotation angle of another bone which ranges from 0 to 75 degress. you’ll need to set up the right equation, which indeed is no complex maths, but still takes some time. doing that for a whole character rig might drive you nuts.

of course, if you know the right expression within the fraction of a second and don’t bother typing it in for every single driven parameter, forget about driven keys :slight_smile:

http://www.clubinfo.bdeb.qc.ca/~theeth/Temp/IK_FK.blend
Should work now.

Martin

Yeah, that works fine now. I saw what you meant when I played around a bit more with the rigging. It’s easier doing the half flex thing in general, though. I finished my first human-based character rig in Blender. Well, my first ever human-based rig, really. I posted it in the Blend the person above you post in off-topic.

Thanks for the help. If you hadn’t explained about the half flex thing, it probably still wouldn’t be finished.