Home Technical Talk

3DS Max 8: "Affect Pivot Only" affects bones, too.

Fex
Fex
At the moment, I have a character rigged to a bunch of bones whose pivots are all going whichever way they darned well please.

For the sake of compatibility with my engine, I need to adjust the pivots of all those bones so that their axes are aligned with world X,Y,Z axes.

Simple enough, right? Just turn on "Affect Pivot Only" under the Heirarchy tab, select all my bones, and click "Align to World". Well, it seems to work (minus a few easily corrected inverted axes), save one problem: the bones are being adjusted with their pivots.

No fair, right? How can I be expected trust a program whose "Affect Pivot Only" button does not, in fact, affect only pivots? Disappointment ensues, but I quickly decide to try a workaround. I grab all those bones, convert them to Editable Polygons, and make a hopeful dash towards the "Align to World" button. No luck, same problem.

So what gives? Anyone ever had this problem or found a workaround, or is my rig pretty much done for? Thanks in advance for the help. :}

Replies

  • Mark Dygert
    weird... does clicking the "don't effect children" button help at all? Can you select everything break it so nothing is parented, reset pivots, then relink everything?
  • Eric Chadwick
    Bones are essentially the same as their pivots. Who made the rig? Bash them with a hammer.

    Recreate the rig.
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 20
    isnt there a option in "skin" modifier that prevents deformation?. Try to find it, and hit the align stuff again...

    edit: it's under "advanced parameters" "Always deform", uncheck it, run your align stuff, then check it again

    btw why do you need them aligned in the first place?
  • e_x
    Offline / Send Message
    e_x polycounter lvl 18
    Go into Character->Bone Tools and open up the Bone Tools rollout. From there, click on the "Bone Edit Mode" button. now you should be able to select the bones you want and rotate them into any orientation you need.
  • Fex
    @Vig: Yup, tried both those things, same problem. :<

    @Eric: I'd recreate the rig, but it'd probably have the same problem, since I made this one, too. :<

    @CrazyButcher: This solution allows me to align my bones without causing any noticeable deformations, but since the bones are still modified when I realign their pivots, they break apart from one another, causing all kinds of ugly things to happen when I re-enable deformations and animate. :<

    e_x: Aye, this method does, indeed, allow me to rotate/re-orient the bones, but it yield's the same problem as CrazyButcher's solution: the bones are now broken off from one another, causing some heavy deformation when animated.

    Anyway, I'm still trying out a couple of other ideas.
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 20
    I'd try to address the "root of evil" here, the engine's bone stuff, is it an opensource engine, or do you know the guys who coded it? Because they definitely should not insist on those world-align stuff. Because when you create bones in max they will always be "locally aligned" which is also much more true to life, sorta.
  • Mark Dygert
    CrazyB makes sense, I really don't understand why you would want them to not be aligned locally? Are you trying to switch them to world so they will be easier to rotate? If that is the case switch the spinner to "local".

    Spinner.jpg
  • Eric Chadwick
    I guess I didn't look closely enough at your first image, Fex. Those pivots look great.

    They have to be local, otherwise all your animations are going to be messed up... the bones need to be able to rotate about the alignment of their real-world bones (thumb knuckle must rotate perpendicular to the thumb, etc.).

    If aligned to world, you won't be able to constrain the lower arm to rotate on only one axis at the elbow, etc. You would have to rotate on two axes at once, to try and simulate local-singl-axis rotation. Which leads to interpolation problems.

    CrazyButcher is right, talk to your prorammers, something is wrong with what they're asking you to do. Probably a simple miscommunication. They might actually just be asking for the root bone to be aligned to the world, which isn't usually a requirement, but everyone's different.
  • Fex
    Aye aye, I got in touch with the boys behind my engine and they're working on a few changes that'll solve this issue. :}

    I first stumbled upon problems while setting up some code that points bones in a rig towards a 3d vector: for instance, making a head bone "look at" a nearby NPC, or an arm bone "aim" a gun at its target.

    Turns out that there's a bug in the actor.SetBoneRotation function that disables the ability to set absolute world space rotations, which left me with the impression that in order to set absolute rotation values, I would have to align each bone's axes to world axes. A quick chat with the dev team unearthed the bug, and they're now working on fixing the problem for the next update. :}

    Thank you all for the help!
Sign In or Register to comment.