Heres a version that I think should work the same as Lightwave. it only uses one direction constraint.
It may seem that Lightwave is superior because it does this natively in its IK solution, but I would choose Softimage over LW everytime for rigging. Its constraints and IK work in a far more sophisticated manner allowing for a lot more flexibility and complexity.
Robot Arm IK
-
Pooby
- Posts: 501
- Joined: 27 Aug 2010, 20:25
Re: Robot Arm IK
You do not have the required permissions to view the files attached to this post.
-
azurecgi
- Posts: 171
- Joined: 12 Jul 2011, 10:11
Re: Robot Arm IK
Thanks for the sample files Eric and Pooby.
I really appreciate the effort, but I'm afraid your rigs are a little 'wobbly' to emulate fixed mechanical rotations!
I dug into my memory for the trigonometry I learned at school, and using expressions I came up with something that sort of works.
Move the 'diamond' null (named "effector") around and see what you think. It has some drastic limitations, for example if you move the effector into a negative X position, it breaks, but this could be fixed quite easily by using a SCOP which utilised an 'if' statement.
The only thing that's really causing me a headache is if the shoulder is rotated into an arbitrary angle, which it would be if attached to a character. What I really need here is to be able to extract the XYZ positions of the effector relative to the 'local' coordinate system of the main shoulder null. I'm thinking this may require the raycasting abilities of ICE!
Anyone?
I really appreciate the effort, but I'm afraid your rigs are a little 'wobbly' to emulate fixed mechanical rotations!
I dug into my memory for the trigonometry I learned at school, and using expressions I came up with something that sort of works.
Move the 'diamond' null (named "effector") around and see what you think. It has some drastic limitations, for example if you move the effector into a negative X position, it breaks, but this could be fixed quite easily by using a SCOP which utilised an 'if' statement.
The only thing that's really causing me a headache is if the shoulder is rotated into an arbitrary angle, which it would be if attached to a character. What I really need here is to be able to extract the XYZ positions of the effector relative to the 'local' coordinate system of the main shoulder null. I'm thinking this may require the raycasting abilities of ICE!
Anyone?
You do not have the required permissions to view the files attached to this post.
-
azurecgi
- Posts: 171
- Joined: 12 Jul 2011, 10:11
Re: Robot Arm IK
I've just been thinking, and maybe Raycasting with ICE is a bit drastic.
When you parent an object to another with 'Child Compensation' on, the child object becomes relative to the parents coordinate system whilst maintaining it's location in relation to the 'Global' coords, so there must be a function or routine that calculates this compensation. That's what I need, the compensation location, without having to actually carry out the parenting function.
Once again......... anyone?
When you parent an object to another with 'Child Compensation' on, the child object becomes relative to the parents coordinate system whilst maintaining it's location in relation to the 'Global' coords, so there must be a function or routine that calculates this compensation. That's what I need, the compensation location, without having to actually carry out the parenting function.
Once again......... anyone?
-
EricTRocks
- Moderator
- Posts: 754
- Joined: 25 Nov 2009, 00:41
Re: Robot Arm IK
There are functions within the SDK that allow you to remap a transform into another object's local space.
-
azurecgi
- Posts: 171
- Joined: 12 Jul 2011, 10:11
Re: Robot Arm IK
I don't suppose you could be a little more specific? I'm rapidly running out of time on this project, and I've barely started, due to trying to get this problem solved!EricTRocks wrote:There are functions within the SDK that allow you to remap a transform into another object's local space.
Cheers
-
EricTRocks
- Moderator
- Posts: 754
- Joined: 25 Nov 2009, 00:41
Re: Robot Arm IK
Try looking up "XSIMath.MapWorldPoseToObjectSpace" in the SDK documentation. Other related methods may be what you need precisely so look at the XSIMath object's other methods.
-
azurecgi
- Posts: 171
- Joined: 12 Jul 2011, 10:11
Re: Robot Arm IK
Thanks Eric!
I think I've cracked it
I ended up using "XSIMath.MapWorldPositionToObjectSpace" as rotation isn't important for my trig functions, only position!
I don't have time right now, but I'll try and put up an example or tutorial in the near future, as this problem seems to have caused some interest.
By the way, I downloaded a trial version of 3DS Max to see if it magically solved all my problems, and the answer is "no, it didn't".
I also feel the need to express how non-intuitive and clunky I found the 3DS Max interface and workflow compared to Softimage. Autodesk really don't seem to understand what a gem they are hiding away from 3D animators, and it's an insult to package it up like a glorified plug-in for Max or Maya!
I think I've cracked it
I ended up using "XSIMath.MapWorldPositionToObjectSpace" as rotation isn't important for my trig functions, only position!
I don't have time right now, but I'll try and put up an example or tutorial in the near future, as this problem seems to have caused some interest.
By the way, I downloaded a trial version of 3DS Max to see if it magically solved all my problems, and the answer is "no, it didn't".
I also feel the need to express how non-intuitive and clunky I found the 3DS Max interface and workflow compared to Softimage. Autodesk really don't seem to understand what a gem they are hiding away from 3D animators, and it's an insult to package it up like a glorified plug-in for Max or Maya!