PDA

View Full Version : Minor Workflow Speed Increase When Working with Bones



hesido
04-18-2005, 06:04 PM
1-) I'd really appreciate a virtual coordinate system for bones that will take the parent tip point as 0 0 0 *used only for user reference* and I don't even need it to be integrated to expressions or other stuff either. A coordinate system where I can simply type in 0 0 0 to get to the tip of the parent.

Ok this is not vital. One can simply copy parents rest length and paste it in the child in the Z pos. I know. But I gave it a go.

2-) Bone Connector: Unparenting should be done automatically be it with a user interaction to a yes no requester, so I should not need to unparent anything manually. This would allow me to put a child bone between parent and child without unparenting, and I'd be able to use its other functions without having to worry about existing hierarchy, effectively re-arranging the hierarchy.

Karmacop
04-18-2005, 08:34 PM
1-) I'd really appreciate a virtual coordinate system for bones that will take the parent tip point as 0 0 0 *used only for user reference* and I don't even need it to be integrated to expressions or other stuff either. A coordinate system where I can simply type in 0 0 0 to get to the tip of the parent.


How exactly would you use this? ie what would the tool do?

hesido
04-19-2005, 02:12 AM
It may be a tool or it may be in coordinate system settings. Nothing special, it would just serve the users to see / set their bone positions according to how far they are from the parent tip instead of parent base. (that means Z coordinate is Z position + Parent's rest length). e.g. this would speed me up in few situations where I would re-arrange parent and child length ratio on arbitrary angled bones, where joint move simply would not be mathematically precise. Also would speed things up when I re-arrange hiearchy and want the new child bone to snap on to parent tip. But the latter would not be needed if bone connector would do the unparenting-parenting automatically anyway.

As I said this feature is not really important but such an enhancement to bone connector I mentioned in #2 is.

Karmacop
04-19-2005, 09:23 AM
The problem with the tool is that you'd select your bone you'd want to work with, so the "bone coordinate system" would be set up, but once you select the object to move the "bone coordinate system" would be lost because the bone is no longer selected. I'll try to have a look into it and see if I could make an lscript to do this for you dynamically (so you wouldn't need to change it after changing the length) but I'm busy and haven't done this kind of script before. Maybe request it in the lscript forum and see if someone can help? The math for it would be very easy.

Your second request I'm not sure abotu as I don't use bones or bone connector much, but again this might be something that could be done in lscript.

hesido
04-19-2005, 01:08 PM
Karmacop thanks so much for your interest. Please do not spend your time doing such a script if it won't benefit you in the first place!

I may post the idea in lscript part indeed.

But suggestion number 2 would really be cool ;)

Karmacop
04-22-2005, 11:08 AM
Ok, tell me how this goes. It's not finished yet, I just want to make sure this is what you want and get suggestions on how to make it better :)

It actually all works except for the loading, I'll have to look into that ...

hesido
04-22-2005, 12:28 PM
Wow Karmacop, real nice!

What a dumb person I am :)
At first I didn't realize it was a motion plugin and kept searching everywhere, lol. Then I said wow a motion plugin but why? LOL, only after then I understood the beauty of it!

This is a genious approach, getting the dynamic nature using motion plugins and then keyframing it once you are content with the results!

Now, the only thing we need is an option (literally making it optional) to keep the affected bone tip at the same spot, dynamically changing the affected bones rest length and angles. This would be simple adding / substracting for straight segments but requires some triangle maths for arbitrary angles, which I am sure you are familiar with (but I don't remember much :D ) This would cause the affected bone's childs to pop away or get inside of the affected bone and look al in funny directions. We have opened a can of worms :D I wouldn't know how to dynamically solve that question using this approach. Maybe prior to launching the bonespace plugin, we could give all of them a "locking" motion plugin to keep their angles in world coordinates.

For this reason, to stay away from having to add so many motion plugins, maybe we could just get away with a non-realtime version which runs thru the childs. We can simply give the rest size and it would run thru the childs and fix their angles, if that is also a possibility.. Maybe it is not worth the effort. This only would act as a mathematically precise joint move (which I would happily use :) )

Your plugin as it is, is useful, thanks so much!

Karmacop
04-22-2005, 05:31 PM
Sorry! I should have told you it was a motion script and how you should add it! :(

It's early and I just woke up, so I'm a bit lost on what you mean. Maybe I'll have a second read later, but at the moment I'm not sure what you mean by keeping it in the same spot? Do you mean you want to lock the bone tip from moving? ie you set it in one space and in thwe whole animation it never moves? I th8ink that'd be easy ...

hesido
04-22-2005, 05:53 PM
Good morning Karma (It is way past time to sleep here, I'll go to sleep after this!)

What I am talking about is not for animation but rigging.. But it is exactly what you say, locking the tip point of the affected bone in place. But I wish it would be locked while I am playing with (dynamic) or simply setting (non dynamic) parents rest size. This can entirely be achieved with joint move, when you select two joints and run it, only that it is not mathematical so you have to visually try to move to the right place if you don't want the parent to change its heading or pitch (and it is hard for arbitrary angles.

I wouldn't even require it to be realtime actually.

Anyway, my description is so bad you should not worry about me anymore! I should improve my communication skills.. that or lscript skills :)

Karmacop
04-22-2005, 06:12 PM
Ahh ok, so see if this is right.

You want to change the rest length of your bone, but instead of changing the rest length keeping the base still and moving the tip, you want the tip to stay still and the base to move? That's a great idea :)

Unfortunately I don't think I can change the rest length of a bone :(

Dodgy
04-22-2005, 06:55 PM
Unfortunately I don't think I can change the rest length of a bone :(

Try:

BoneRestLength(mylength);

hesido
04-23-2005, 12:08 AM
Ahh ok, so see if this is right.

You want to change the rest length of your bone, but instead of changing the rest length keeping the base still and moving the tip, you want the tip to stay still and the base to move? That's a great idea :)

Unfortunately I don't think I can change the rest length of a bone :(

Well not exactly that, but that could be another really cool option I haven't thought of :)

The tool in my mind is like a "numerical" joint move. You set a bone's rest length (Bone A), and you see its children (Bone B, C, etc.) adjust their bases to touch the tip of their parent (Bone A) while their tips are locked in place. This way we are not accidentally changing the H P B of the bone that we we set the rest length (Bone A).

What you say is really cool too. This way, we can set the child bone rest length while it keeps its H P B without affecting its own children but its parent H P B and rest size.

Anyway.. Thanks for trying in the first place. I can't explain well :( .

Maybe we should move this thread to LScript discussion.

Karmacop
04-23-2005, 01:22 AM
Ok, I understand now, that was a very good description :)

Karmacop
04-23-2005, 10:08 PM
Ok, the new tool is called "resize bone" and it's a generic script, so just add the plugin to the interface. Then for any bone you want to resize you just select it and press the button.

The bone space plugin still doesn't load properly (because of a current lscipt bug), but I've fixed some other bugs with it. Also, after loading all you need to do is select the object and it'll load the settings. It's not great but at least the settings aren't lost forever :)

hesido
04-24-2005, 02:56 PM
Hi Karma. The script doesn't seem to move the children. :(

I've looked at the code but didn't understand much :) But even if it worked it only seems to change Z position of the children, so the children' tips would move. What has to be done is to run thru every child fixing their Z position, Rest Length, and Rotation, and the run thru every children's child and fix their rotation only. But anyway, we already have the functionality with joint move even tho not numerical so I guess it is not worth trying!

BoneSpace would indeed help much, it does sort of what I want, instantly snapping the child to parent's tip.

Karmacop
04-24-2005, 08:05 PM
Oh you want the tips of the children to stay at the same place? Well that's going to be a bit harder, and I'll need to look into some maths for that.

Why done bone space only sort of work? Would you prefer if it was a generic script like resize bone, so you could just click it and it'd move?

hesido
04-25-2005, 01:33 AM
Well that'd be nice :) But I guess I need to learn a bit Lscript myself. I don't want to bother you :)