how is this done? mesh - bone alignement

so i tried several hours to figure out how to reproduce what was done in this tutorial and haven’t figured out how it was done…
i know there are different ways to do it with cursor alignment and stuff like that but i dont care. i want to know how he did it because his method seems superior to anything i can think of.

so if anyone has an idea how this works i would really like to know hoe its done. see first example in the manual link
http://wiki.blender.org/index.php/Doc:Manual/Rigging/Skinning/Objects

and if it can not be done than the manual shoul either be adjusted or deleted.

So what is exactly your problem here? You can’t make the objects to be parented to the bones? The location of the objects won’t get resetted to the location of the bones, etc?

That tutorial seems pretty valid to me.

the problem is that i cant figure out how he aligned the objects to the bones

I assume you’d have to clear location/rotation on the object after its contraints are set up (notice the bottom image), but I’ve never done any of this “new constraints method” myself.

clearing location/rotation does not align the object to the bone.
when reading the manual it seems easy but i was unable to reproduce what he was doing.
i think the whole part how to align the objects is missing…

I just tried this and it works…

Hence, it’s a better idea to clear this parenting offset: select the child object, and make AltP » Clear Parent Inverse, and clear its location (AltG) – now, the transform properties of the object should all be at zero (look at the Transform Properties panel, N), so its center will be at its parent bone’s tip, its Y axis aligned with the bone’s Y axis, etc. (Mecha arm example: clearing child offset, and its location). Our pieces are well placed and rotated!
I created a sphere, removed the bottom center vertex and extruded the bottom most ring of verts downward, so I have an object that looks like a ball on a stick. Since the object was created from a sphere, the y-axis of the mesh was point in the direction of the world’s y-axis, so in side view I rotated the mesh 90 degrees, so now the length of my ‘ball & stick’ is running along the world’s y-axis. I applied rotation to the mesh and rotated it a -90 from the side view. Now my mesh is vertical and it’s y-axis is pointing in the world’s z-axis. I moved the mesh off to the side, created a single bone armature and entered pose mode. I selected the mesh, shift-select the armature, and if not in pose mode, enter pose mode, and ctrl-p -> set parent to bone. I selected the mesh, and followed the steps quoted above, I also had to do an alt-r to clear the rotation the mesh got from the -90 rotation in side view I just described. The mesh’s origin snapped to the bone’s tip as described. All the mesh’s axis aligned to that of the bone I parented it to.

All of this is cool, but really totally impractical to use for anything ‘real’. For example, a backhoe, a robot, a crankshaft, or any real object must have the armature created around the mesh. Roots and tips of bones must be positioned at the center of rotation of the mesh objects. It’s like if you created a character, you would build the armature around the character, not build the armature and transform the character around the armature.

Randy

thanks a lot for testing it. i tried it again with your description and i figured that i have to rotate the objects by -90 degree x-axis to make them align when using alt+p, alt+g. but whenever i apply the rotation and rotate the object back, its like the local axis of the object is ignored.

ive created a demo scene with the 3 scenarios. one normal one rotated and one with applied rotation rotated back to original rotation (local y is up)
and the only one working is the rotated without applied rotation.
i dont get the logic of that behavior… maybe someone can enlighten me?
http://www.pasteall.org/blend/5616

Also, do an alt-r to the bone to clear it’s rotation as well, the only one that actually works right is ‘applied rotation’. You also have to clear the rotation of the bone. Turn on axis display in the armature panel and look at the axis of the bones, the only mesh object you have that matches the bone’s axis is ‘applied rotation’. The bone’s y-axis points along it’s length, from root to tip, the only mesh object that you have that matches that is ‘applied rotation’. Try this: do an alt-r on each mesh in your demo scene, then do an alt-g to clear the location, then do an alt-p -> clear inverse, to each bone, which one lines up with the bone’s axis? It doesn’t matter what rotation the mesh is in in the view, what matter’s is the mesh’s axis, which never changes if you rotate a mesh.

Randy

i dont really get it… when rotating a object by 90 degrees and using alt+r will just rotate it back to 0… so why the extra step when you could just rotate it to the axis it needs and use alt+p inverse for the placement?

i think the correct thing to do would be rotate it to the axis and then "apply’ the rotation and not reset it. only then is the up axis really replaced.

EDIT: thanks for all your help, it really solved the case for me:D

For sure kromar, rotate the mesh so it lines up with the world’s axis, apply rotation, and yes really no need to rotate it anymore. That was a useless step to re-rotate it after rotation is applied. I did it while experimenting just so I could have the bone & mesh, side by side, to confirm all the axis of each line up with each other. Sorry, the re-rotate, parent, then clear rotation really isn’t needed.

Radny

no need to appologise, without you i probably never figured it out:D