Quote: "It appears that there's always an offset applied to the childs from the world origin instead of from the parent's origin, so they appear twice further away as they should be."
Hmmmmm....
Sounds like you're having a bit of a problem with the pivot points of your limbs. You may be aware of everything that follows, but for good measure see if following these instructions help. A quick definition of what I mean by the pivot point:
This is the point a mesh will rotate around. This also defines where the mesh limb will be placed relative to the origin OR a parent limb. For example, the lower arm of a humanoid figure would hinge at the elbow. If the figure were facing the camera, and the right arm was extended 90 degrees to it's right, the pivot point for the lower arm would be where it connects to the upper arm. (see attached)
To set your pivots, try this:
Object mode:
1.
Right click on the limb you wish to set the pivot point for.
2. Select
Object > Transform > Center New
This will place the limb's (the current object) pivot directly at it's own center. Now we want to snap the 3d cursor to this location so we have a good starting point for setting the pivot where we want it:
Object > Snap > Selection --> Cursor
3.
LEFT click where you actually want to place the pivot for the limb. In our example, it would be where ever the elbow is. The LEFT click should place the 3d cursor (the target bullseye thing) where we want it.
4. Change to various camera views using the numeric keypad or the View > menu item. The goal is to make sure that the pivot is placed correctly in all views - you don't want the 3d cursor lined up correctly on the x axis but it's 10 miles away from where you want it on the z axis!
5. Once you have the 3d cursor placed where you want the pivot to be, click on
Object > Transform > Center Cursor
6. Set up the pivots like this for all of you individual limbs, making sure you place the points where you want that limb hinged.
7. If you already haven't done this, position all of the limbs that are set up with their correct pivot points in their correct positions - building your final character.
8. This is very important:
BEFORE creating the parent child hierarchy, you have to set the rotations of each limb to a default of sorts. This means that at whatever rotations you have used to get the limb to it's current position, you have to "Fix the pivot rotation" to 0,0,0. Fix in this case, means "set in stone"
Check this by:
1. Right click on a limb to select it
2. Press the
N key to bring up the Transform Properties box
- You are likely to see values other than 0.0 for RotX RotY and RotZ
Even if the values read 0, follow the next steps:
Fix the rotation by:
1. Make sure that the limb to fix the pivot rotation is selected
2. Press
CTRL+A and agree to apply the scale and the rotation
3. You should see the values of Rotx Roty and Rotz in the transform box switch to 0
After all of the pivots are set, and all of the rotations are fixed, link up the hierarchy.
9. Link the children and the parents by Right clicking on the CHILD, HOLD SHIFT, and Right Click on the parent. Then press CTRL+P
Link the limbs 1 at a time. You'll run into problems if you try to link multiple limbs at once to a parent. 1 child, 1 parent at a time.
Hopefully, this will correct the offsets you are mentioning. I just downloaded and tried the directx9 exporter for blender 2.49, and it exported one of my characters correctly, though I didn't try any animations.
Enjoy your day.