Wed, Nov 20, 2:39 AM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 18 10:25 pm)



Subject: joint editing question


billy423uk ( ) posted Fri, 24 November 2006 at 1:12 AM · edited Tue, 19 November 2024 at 11:56 PM

being new to joint editing i'm using jesse as a template of sorts.

when i get to the rShldr on jesse it shows the x axis
going from shldr to forearmalong the bone.  on my figure i can only
view the axis in the y axis and it runs top to bottom across the bone.
i've read the manual tried to find info off the net
but to no avail. can anyone tell me how to get the x axis
running from left to right.
thanks 

billy


R_Hatch ( ) posted Fri, 24 November 2006 at 3:31 AM

At the very bottom of the Joint Editor, there is a Section labeled "Joint Order". Any body part that is part of the arm, including the collars, should be either XZY or XYZ. The joint order runs in the manner:

Twist/LeastUsed/MostUsed

When in doubt, load an existing figure and look at the joint order for each part (using the joint editor, since, as you've already discovered, the dials can be rearranged independently of actual joint order).


xantor ( ) posted Fri, 24 November 2006 at 4:56 AM

file_360408.jpg

In the joint editor, check that the 3 numbers pointed to in the picture are set to zero.


billy423uk ( ) posted Fri, 24 November 2006 at 7:46 AM

thanks guys

maybe i didn't make myself as clear as i should have.

all my joint orders are as they should be. after i did my neck joint twist, side side, bend, i have a rcollar scale y.

the axis of this runs up and down. with jesse the axis runs from side to side along the collar.

then when i get to the r shoulder the x axis on jesse again shows the start and end icone running from left to right. on my model it only shows the start end icon in the y axis and it runs from top to bottom. both figures have identical joint orders. i'm stumped.

billy


xantor ( ) posted Fri, 24 November 2006 at 10:08 AM

It is most likely to be a rotation in the joint editor, if one of the numbers is at 90 or similar then the axis of the joint will be in the wrong direction.


Miss Nancy ( ) posted Fri, 24 November 2006 at 1:59 PM

gimbal lock, billy?



billy423uk ( ) posted Fri, 24 November 2006 at 4:18 PM

whats gimbal lock nancy?

billy


kuroyume0161 ( ) posted Fri, 24 November 2006 at 4:41 PM

Gimbal lock is when one axis is rotated to the point that it matches another axis, the two axes become locked and you are thereafter limited to only two rotation axes.  This is a big problem with Euler angles (the Joint Order stuff that Poser uses).  A Google search will get you more information than you ever wanted... ;)

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


billy423uk ( ) posted Fri, 24 November 2006 at 4:44 PM

thanks, i'll be googling if anyone needs me lol

billy


billy423uk ( ) posted Fri, 24 November 2006 at 5:59 PM

been googling for well over an hour now and though i can find out what it is and how it happens i can't find a cure for it. i even zeroed the figure and it's still the same

billy


kuroyume0161 ( ) posted Fri, 24 November 2006 at 6:06 PM

There is no real 'cure' for it.  It is a mathematical state.  The 'cure', if you will, is not to use Euler angles but instead use Quaternions.  Poser only uses those for animation interpolation.
A solution is to divide rotation axes among different objects. So, if you have three objects acting as a rotation basis for the axes, you can avoid gimbal lock:

XRotationObject
  YRotationObject
     ZRotationObject
       TheActualObject

The problem here is that to do this effectively for a figure, it would need to be employed on each and every body part (take 50 or so body parts and multiply by four!).  Not a pretty sight.

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


billy423uk ( ) posted Fri, 24 November 2006 at 6:21 PM

so does this mean my model is a non starter? 

and i think i have almost 70 body parts lmao.

i'm struggling to understand what you mean on how to avoid the lock....i'm not what one would call a techi lol sorry.

billy


kuroyume0161 ( ) posted Fri, 24 November 2006 at 6:41 PM

The solution sets a 'voluntary' restriction on the axis that each object can rotated on (XRotationObject should only be x-axis rotated, etc.).  Since only one axis is being rotated, two axes never line-up.

The hard part to describe is that the lining up of axes occurs due to the ordering of the rotations with the use of the Euler approach and not the actual rotation of any one axis.  With one axis, you can still rotate the x-axis 'to be aligned with' the y axis, for instance.  But it never occurs because the y axis was rotated along with the x-axis.  You have to think of the rotation system as those three perpendicular lines with arrows that usually represent the coordinate system. 

A better way to visualize this is to think of the rotations with respect to those three perpendicular lines with arrows.  The first rotation rotates all three line-arrows (X for example).  The second rotation decouples from the first and only rotates its line-arrow and the next one (Y including Z for example).  The third rotation decouples from the first and second and only rotations its own line-arrow (Z).  Do these in 90d increments and you can visualize how one axis becomes coincident (lines up) with another.

By limiting rotation of an object ot only one axis (the first), you cannot possibly achieve gimbal lock since it rotates all three axes.  That is why this solution works (as complicated as it is).

Hope that helps a little!

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


kuroyume0161 ( ) posted Fri, 24 November 2006 at 6:46 PM · edited Fri, 24 November 2006 at 6:47 PM

As possibly the simplest example, start with the three lines in their default state.  Rotate X by 0d (not at all).  Then rotate the Y axis by 90d.  Note how the Z axis lines up with the X axis (in your mind anyway).  Remember that the X axis is not affected by the Y rotation, so it is still pointing in the same direction.  Now Z is pointing in the same direction, isn't it!?  What happens when you then do a Z rotation?  It rotates exactly the same as the X rotation.  This is gimbal lock.

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


kuroyume0161 ( ) posted Fri, 24 November 2006 at 6:54 PM

Finally, gimbal lock is something that you'll have to live with when the system utilizes Euler angles.  The best thing is to realize this and continue on.  I wouldn't get depressed and stop working on your project because of this unless it causes irreparable problems.  Most of the time, gimbal lock can be avoided by not doing exactly 90d rotations, but it is a frustrating limitation nonetheless.

The idea of 'Joint Orders' is to reduce this problem to an extent.  By setting the intial rotation as that along the length of the joint (twist), the second as the primary bend (Y for arms or X for legs), and the last as remainder, you can diminish the gimbal lock problem.  This is why Poser uses ordered-axis rotations.  Systems that depend on only one order (YXZ for instance) will always encounter situations where the 'default' rotation results in gimbal locks.  Varying the order of rotations provides a modicum of avoidance (although not total).

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


TrekkieGrrrl ( ) posted Fri, 24 November 2006 at 7:02 PM · edited Fri, 24 November 2006 at 7:02 PM

Kuroyume, thanks for actually explaining WHAT causes Gimbal lock. I know when it happens and sorta why but I never knew about the Euler Angles and stuff. Not that it changes anything but I like to know the WHY's :o)

FREEBIES! | My Gallery | My Store | My FB | Tumblr |
You just can't put the words "Poserites" and "happy" in the same sentence - didn't you know that? LaurieA
  Using Poser since 2002. Currently at Version 11.1 - Win 10.



billy423uk ( ) posted Fri, 24 November 2006 at 7:15 PM

thanks for the clarity.

not sure if i can continue though when the x axis of the arm is running at 90d to what it should do. i think if i do i'll end up with some strange deformations.

i'll see how it goes. thanks again for your time and patience

billy


Miss Nancy ( ) posted Fri, 24 November 2006 at 8:04 PM

when it happens to me, I just get it posed as good as possible, then export the obj file and re-import it, at which time it should have properly functioning x-y-z rotation channels. in case nobody already mentioned that above.



billy423uk ( ) posted Sat, 25 November 2006 at 12:26 AM

thanks nancy, you just lit a light in my tunnel lol.

an extremely kind person is having a look at my cr2 and obj file, hopefully his expertise along with your suggestion will help me sort it out

billy


billy423uk ( ) posted Sat, 25 November 2006 at 5:32 PM

had a reply from the extremely kind person who took the time and trouble to check out my cr2 and obj file....okat, it was  phil.c.

he said there was indeed an anomally ( maybe gimbal lock but he didn't say) and that my rotations were right...and the genius came up with a cure.  a simple changing of the rotation order from x whatever to x  whatever then a simple change back to the original rotation order. it worked. he called it his banging the side of a faulty tv tecnique. just thought i'd share (i'm sure phil won't mind) so others can try it out when they get the same prob. 

thans phil, you made life bearable lol

billy


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.