Parent Space Problem

Become a member of the CGSociety

Connect, Share, and Learn with our Large Growing CG Art Community. It's Free!

Thread Tools Search this Thread Display Modes
  06 June 2009
Parent Space Problem


I'm having a serious problem with applying real-time motion capture data to a character rig due to parent space of each bone. I'm creating a rig in 3DS Max before exporting to Panda3D where the motion capture data is then applied.

The problem I'm having is that when I create a bone in 3DS Max (front viewport, straight up), the bone is given a default rotational value of 90,0,-90. This wouldn't be so much of a problem but it alters the parent space of its child. It appears that the sequence of rotation (x,y,z or z,x,y...) in Panda3D changes according to Parent Space.

Is there anyway to create my rig and then reset the parent space of all bones. I have tried using reset XForm but this just turns my rig on its side (like simply applying 0,0,0 to the rotation) or just makes everything go a little bit crazy.

Essentially I need a skeleton system set to a default pose, arms down by the side, but without the parent space of each bone having to be changed each time the orientation of the parent bone changes. Does that make sense? Is this possible?

Many thanks, Jake
  06 June 2009
Here's some pictures to help illustrate my problem:

(*The bottom bone was created in the front viewport straight up and its child in the same way. I have applied no rotations myself on these bones)

Is there anyway to create a skeleton and then reset the parent space of each bone so that all co-ordinate systems match without losing the pose you have set up? I think that if I could reset the rotations of each bone without changing the pose then that would also result in reseting the parent space. I see you can do this using reset Xform on geometry but what about bones?
Any help would be really appreciated as I've spent far too long getting nowhere!
  06 June 2009
Not sure I fully understand the intricacies of your problem but, if you make a point helper, align it to your first bone in position and orientation then parent the first bone to the helper object, both bones will now have the same orientation in parent space.

The problem shown in your image is that the first bone has no parent, therefore it's parent space is the same as world space. The bone is not aligned to world space so, by default it has non-zero rotation values.

Hope it's helpful in some way

  06 June 2009
Can you not freeze transform on the bones?

If not im guessing as with most mocap jobs, you'll have to add offset transforms - essentially to map the transform correctly.
Disclaimer: My opinions are not those of my employer.

  06 June 2009
Ok I tried the method in the first post and it works to a degree. I would create a bone, manually set rotation to (0,0,0), create helper, line the helper up with the bone, parent the bone to the helper then orientate the helper 90degrees. The bone's parent space would change too! This was fixed by zeroing the bone's orientation, which I thought would make it go all screwy or set the orientation of the bone back to its deault pos, but seemed to have no effect other than to reset the parent space...which is what I wanted, great! So I now have my first bone pointing up with parent space set to (0,0,0)

However, as I need a T-pose I run into problems. When I get to the shoulder joint I create a helper between the chest and shoulder. I parent the chest to the helper and then helper to shoulder. The method I used for the first bone (Hips) doesn't work.

I move the helper that moves the shoulder, and yes parent space for the bone changes, try to reset to (0,0,0), same as I had to do with the hips, but rather than reseting the parent space and leaving the bone in the same position, the bone reverts to pointing up. So the shoulder bone can only point up with orientation at (0,0,0). Gah!

I can manually add the corrections to bone orientations in Panda3D but this causes many problems as the order of rotation changes which causes problems in the sequence that euler angles are applied. Ultimately, I want to be able to apply motion values in a set order across all joints but as parent space changes in Max this order of rotation, in turn, changes.
  06 June 2009
Thread automatically closed

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
CGTalk Policy/Legalities
Note that as CGTalk Members, you agree to the terms and conditions of using this website.
Thread Closed share thread

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Society of Digital Artists

Powered by vBulletin
Copyright 2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump

All times are GMT. The time now is 11:54 AM.

Powered by vBulletin
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.