Limbs Not Mirroring

About Truespace Archives

These pages are a copy of the official truespace forums prior to their removal somewhere around 2011.

They are retained here for archive purposes only.

Limbs Not Mirroring // Tech Forum

1  |  

Post by Electric Jim // Aug 5, 2008, 2:15pm

Electric Jim
Total Posts: 98
I'm attempting to utilize limbs to produce a bilaterally symmetrical skeleton, but I'm finding that the limbs don't mirror properly. I make sure to give the proper Left/Right Symmetry settings to both the source and destination joints, but the resulting duplicated limb ends up not being mirrored. (Or perhaps mirrored but also rotated.) This appears to occur consistently whether I attempt the CTRL-click-and-drag method or try using a Skeleton (limb) library as a go-between.


Please see the attached before-and-after pictures, and note how the thumb and finger bones in the right hand are incorrect. I made sure every joint in the left arm & hand was set to "Left" Symmetry, and gave the right shoulder a "Right" Symmetry setting, before attempting the duplication.


Can anyone else duplicate this problem, or point out what I'm doing wrong? Thanks.


EDIT: I haven't yet verified this, but I believe this issue may be related to having the right shoulder joint's rotation (before the limb is placed on it) be different from the left shoulder joint's rotation. (I should have noticed earlier that the handle, which also got duplicated, is above the right arm, where the original was below the left arm. This implies that the entire duplicated limb could simply be rotated relative to the original.) I'll check this when I have time, and report if I find anything noteworthy.

Post by Electric Jim // Aug 10, 2008, 12:26pm

Electric Jim
Total Posts: 98
Well, I'm seeing some REALLY screwed up results.


First, the simple stuff:


1) The rotation of the target joint before the limb is duplicated onto it does affect the orientation of the resulting limb. To get the limb to mirror properly in the preceding example -- well, properly "at first glance", anyway -- I had to rotate my target joint by 180 degrees in X and negate the Y value. (My Z value was 0, before and after.) Subsequent experiments with other simple test scenes didn't necessarily give the same results, though, so this issue may still be open. But even with this scene, when the bones looked like they were placed properly this way...


2) ...the starting joint's rotation limits did not get copied over (and mirrored) onto the target joint. (That is, the left shoulder's envelopes didn't copy over onto the right shoulder.) I had to try setting those by hand. And once I got things looking right (so the rotation envelopes on the right shoulder looked like a mirrored version of those on the left shoulder), I simply could not seem to set things up in a stable configuration so that pressing the "Reset to Default Pose" tool would not end up moving the bones from where they needed to be, to ultimately line up with my figure's geometry. (And if I experimentally selected the Dynamic Pose tool and tried rotating the right shoulder joint by clicking and dragging on its manipulation widget, the limb would instantly jump to a new, unwanted, orientation, rather than smoothly rotating from its starting state through the properly angular range.)


I tried all the stuff I've previously seen suggested in this regard -- setting the default for each individual joint then for the skeleton as a whole (with no joint selected), triple-checking my rotation envelopes so they made sense for the bone positions I wanted, etc. -- but no matter what I did, I could not set things up so the bones on the duplicated arm did not rotate when the "Reset to Default Pose" tool was used (and did not "jump" to a new orientation whenever I tried rotating them with the joint's manipulation widget). (Note: This was the case even though the original, source, arm was fine in this regard.)


Now, on to the REALLY weird stuff:


At one point I got the impression that the mirroring problem might be due to the presence of branches (for fingers & thumb) in the limb I was mirroring, because at first a simple test scene seemed to give decent results, when I tried mirroring a limb with just a few linearly-connected bones in it. (Though later, I couldn't even reproduce those results, so I could have been wrong that things were okay even in the simplest case.) So I created a source limb that terminated in a single branch, and when I tried duplicating it...well, take a look at the pics.


The first pic shows the "before" case, with a multi-bone limb hanging off a single horizontal bone. (The left-most joint in the pic -- think of it as the "right shoulder" -- has a Symmetry setting of "Right" and all others have settings of "Left".) I wanted to duplicate & mirror the limb onto the free end of the horizontal bone.


The second pic shows the result: The duplicated limb ends up having a branch in it that is somehow fused to the branch in the source limb. The third pic shows things after one of the joints has been dragged around a bit, to depict the situation more clearly.


Although the problems that are really producing a stumbling block for me are the simpler ones described above, I hope the extreme strangeness of this problem motivates Caligari to look into the whole limb duplicating-and-mirroring issue closely, so these problems get addressed soon.


(Finally, while I'm thinking of the issue: Could we please get the means, while the Shape Skeleton tool is active, to rotate a bone -- and even an entire limb -- without having to move/rotate/etc. the individual joints to do so? This would help improve workflow tremendously in certain situations.)


As always, thanks for your time.

Post by Igor K Handel // Aug 10, 2008, 1:37pm

Igor K Handel
Total Posts: 411
pic
Jim only just noticed this thread.


2 very minor things.

According to the manual when mirroring limbs connecting joints IE the shoulder and hip joint info does NOT get passed over and needs to be set up manually. one thing you don't mention... so incase it's an issue make sure to name say the arm limb as arm and the shoulder also as arm (case sensitive) as long as case and name are the same. Everything else appears to be as I do without hitch.


Unless I misunderstand you.. while using the joint tool using the ctrl key allows movement of complete limb from the selected joint right down the limb heirarchy. Depending on view that means it can effectively be rotated in direction of choice?


Minor points in the grand scheme of things I know.


IK

Post by Electric Jim // Aug 10, 2008, 2:56pm

Electric Jim
Total Posts: 98
Thanks for the info, IK! Apologies for including questions that are already covered in the manual. (I hate it when I do that. So much stuff to remember...) :o


Just for the reference of anyone else reading this: Page 3 of Chapter 8 talks about using the CTRL key to move a whole limb with the Shape Skeleton Tool, and Page 42 has the statement that the rotation envelopes for the connecting joint won't be copied over. Good to know. :)


Especially given the point about the joint limits not being copied over, I'm struck with the thought that a "Copy Joint Limits" tool could be useful, with selectable options for mirroring across different planes, rotating in various ways, etc.. In fact, something to automatically mirror the joints themselves (so I don't have to do it by entering new numbers in the numeric fields, in what is often a rather hit-or-miss fasion), would be useful, as well. Oh well, as long as the issues I mention above -- uhm, I mean the real ones, not the ones I didn't realize were discussed in the manual ;) -- get addressed soon, I'll be happy.

Post by Igor K Handel // Aug 11, 2008, 8:45am

Igor K Handel
Total Posts: 411
pic
I think there's still something you ain't doing. What I haven't worked out yet.


I tested it out the other day and results were pretty good. Only additional work I had to do apart from slap in the joining joints stuff, was put a - (minus) in front of one of the numbers on just one of the mirrored limbs. Why that one joint misbehaved when all the others were ok I don't know, but it was fairly easy to spot.


No problem about the manual... Been there, got the T-Shirt. Over a 1000 pages, even if I read em all repeatedly.... as I have.... the old brain can only remember so much at a go. personally I'm working on the philosophy that each re-read some more will stick... lol... that's the theory, not so sure it's working though lol.


IK

Post by Electric Jim // Aug 11, 2008, 7:04pm

Electric Jim
Total Posts: 98
For what it's worth...


Well, I don't know quite how I did it, but I seem to have gotten the arm limb mirrored over to the other side correctly. I deleted the previously-copied arm and saw what would happen if I tried again, this time with the orientation of the "empty" shoulder starting out the same as that of the other shoulder limb (x=0, y=-90, z=0). The mirrored arm started out at an odd angle, but by using the technique of CTRL-dragging the new shoulder's manipulation widget with the Shape Skeleton tool to rotate the limb as a whole (as you explained :) ), I got it positioned so as to match up with the arm and hand mesh objects.


I also had to rotate its rotation envelopes to make them mirror those on the other shoulder, but somehow this ended up working out, too. (For reference, the x, y, & z Rotation Center values for the original shoulder were 108.564, -40.348, and -114.005, and those for the new shoulder had to be set to 108.564, 40.348, and -65.995, meaning the new values relative to the other arm's values were [the same in x], [negated in y], and [the difference between -180 and the original arm's z value]. Both sets of x, y, & z Spread values were 77.080, 72.571, & 40.000. Crystal clear, isn't it? :rolleyes: )


Now, when I use the Dynamic Pose Tool on the new shoulder's manipulation widget, the limb rotates smoothly, rather than jumping to a new position. And clicking the Reset to Default Pose tool does not make it jump to an odd position. Interestingly, when I examine the rotation values of the new shoulder joint itself with the Shape Skeleton tool, I see that they have ended up the same as I originally set them in my previous attempt (x=180, y=90, z=0), with the x value rotated 180 degrees and the y value negated from the corresponding values on the other arm (which were x=0, y=-90, z=0). The one visible difference between the result of this mirroring attempt and the result of my previous attempt is that the radial rotation arc (indicating the acceptable rotation envelope span around the axis of the arm bone) is 180 degrees away from where it was, before. That is, before the arc appeared below the arm and now it appears above the arm. In what seems like a positive turn, this makes it match the orientation of the arc on the other arm, which is also above that arm.


The upshot of all this rambling is that every experiment I perform with the Dynamic Pose tool (including radial manipulations) now seems to make things work as expected, on both arms. I can't really claim to understand the workflow, yet, but I think that next time I have to do something similar I'll start out with the "empty" shoulder joint at the same angle as the "source" shoulder joint, and be prepared to rotate the copied limb as a whole (using the CTRL key and the joint's manipulation widget with the Shape Skeleton tool active) to get it into place. Then I'll tweak the rotation envelope orientation to mirror that of the original shoulder's, and see if everything works.


Thanks again for all your help, Igor, especially the note about using the CTRL key with the Shape Skeleton tool. (I hope you haven't spent too much time mulling over my problem...!) :) Now, on to connecting the skeleton to its mesh objects and seeing how the whole thing behaves... (Well, maybe tomorrow. It's 1:00 AM here, and I'm going to bed.) Take care.


Jim

Post by Igor K Handel // Aug 12, 2008, 9:07am

Igor K Handel
Total Posts: 411
pic
The Question is why does it seem to work sometimes, but not others, I try and try to find a common denominator, but keep coming up empty handed. Until I can get past the if I do this the outcome/reaction will be this stage I can't move on. Just the way I am.


Sorta like when I learned to drive a tower crane. To make the crane or any kind of tool I have used or will use, an extension of my brain and muscular reflex . To be good operator for any machine or tool I believe you need to kind of tune into it's oddities, the logic behind why it's been made in the way it has been. I need to understand more than just well if you pull this lever it does this... cos on face value whilst it's true up to a point, knowing a bit about whats going on in the Veranda... (as I call the back jib with all the mechanics and interaction) is happening, makes me more responsive to the crane,and it's foibles and quirks. It also means I can just tell when something is not quite normal, the slightest nuances almost on the edge of the senses... Something is about to break, something is worn, just well like a little internal alarm bell. Like getting " in tune" with the machine... argh it sounds daft but it's always worked for me. Man I sound like a nut case :rolleyes:


To get good with any tool not only takes practice, but for me anyway I want to make it an extension of me ... a means to create what I want, with the actual tool becoming mentally almost invisible just an extension of what I am thinking almost. I want the using of the tool to almost become transparent in the creation process... Argghh still just in my face taunting me lol. Man I give up trying to put this into words, it just doesn't come out right!! Bit of an embarressing admission I guess. Maybe I will start talking to machines next lol


ok I have rambled and have now returned to planet Earth lol


IK

Post by W!ZARD // Aug 12, 2008, 11:07pm

W!ZARD
Total Posts: 2603
pic
IIRC there were issues with the limb symmetry in earlier tS7.x releases - I don't know if this is related though.. My solution was to simple not bother with it as setting up a whole skeleton is so easy (note that I've not done this and rigged an entire five fingered hand so I can see the limb symmetry functions as being very useful.).


One thing about this thread that stood out for me was the suggestion of a "copy Joint Limits" tool which could be very handy (no pun intended;)) especially if it cam with the option to selectively mirror those settings.


Again however the joint envelopes tool works so well as it is that "Copy Joint Limits" would not really be a necessary tool.

Post by Igor K Handel // Aug 13, 2008, 3:58am

Igor K Handel
Total Posts: 411
pic
I agree about a copy limits tool. Would be a handy speedup . In fact having the ability to say selectively ctrl copy groups of params in the stack and paste em would be a nice workflow boost.


IK
Awportals.com is a privately held community resource website dedicated to Active Worlds.
Copyright (c) Mark Randall 2006 - 2024. All Rights Reserved.
Awportals.com   ·   ProLibraries Live   ·   Twitter   ·   LinkedIn