Joint bone rig that maintains volume
Moderators: Víctor Paredes, Belgarath, slowtiger
Joint bone rig that maintains volume
WoooHooo! I found the sweet spot!
http://www.lowrestv.com/anime_studio/bo ... olume.anme
http://www.lowrestv.com/anime_studio/bo ... volume.mov
This is very rough but I wanted to share it so you guys could play around with it. I only discovered this by accident about a half hour ago. I was moving around a constrained bone and noticed something interesting.
Basically the way it works is there are two bones offset away from the center point of the joint. These two bones are children of the top bone of the joint (the bicep or thigh) and constrained a teeny bit to the second bone in the joint (forearm or calf).
The position of these two bones is critical but not hard to find using onion skin. Also the points on either side have to be positioned in a way to prevent the inside of the joint to distorting too much.
This example is very rough.
-vern
http://www.lowrestv.com/anime_studio/bo ... olume.anme
http://www.lowrestv.com/anime_studio/bo ... volume.mov
This is very rough but I wanted to share it so you guys could play around with it. I only discovered this by accident about a half hour ago. I was moving around a constrained bone and noticed something interesting.
Basically the way it works is there are two bones offset away from the center point of the joint. These two bones are children of the top bone of the joint (the bicep or thigh) and constrained a teeny bit to the second bone in the joint (forearm or calf).
The position of these two bones is critical but not hard to find using onion skin. Also the points on either side have to be positioned in a way to prevent the inside of the joint to distorting too much.
This example is very rough.
-vern
Well here's what I've discovered.
I can create a perfect joint that maintains volume and looks "realistic" with just those two extra bones (maybe one more to add bicep bulge).
However, it works in "one direction". This would be for a joint that only bends one way. It looks GREAT! The problem with this is that the point of the elbow in my example above "expands out" away from the joint (because it is symmetrical) which doesn't look "right" and the bicep area at the joint doesn't gain equal volume.
By tweaking the position of the bones making them "non-symmetrical" I can get a perfect joint.
I do have a possible solution in my head (not worked out yet) that would involve something similar to the reversible leg joint I posted recently. Moving/rotating a couple of bones "flips" the position to the opposite side so the joint works on both sides, but involves some extra keys to achieve.
I was thinking an action would solve that but then we're back to where we started with actions applied at specific frames for a good joint... although this wouldn't need to be applied constantly, only when the joint needs to pass through 90 degrees to rotate in the other direction (and only if you really NEED to do that).
I am VERY VERY happy with this solution. It is better than anything else I've come up with, and it completely eliminates that round "loop" at the inside of the joint (even I have problems with that). I don't even need a bunch of extra points around the joint.
-vern
I can create a perfect joint that maintains volume and looks "realistic" with just those two extra bones (maybe one more to add bicep bulge).
However, it works in "one direction". This would be for a joint that only bends one way. It looks GREAT! The problem with this is that the point of the elbow in my example above "expands out" away from the joint (because it is symmetrical) which doesn't look "right" and the bicep area at the joint doesn't gain equal volume.
By tweaking the position of the bones making them "non-symmetrical" I can get a perfect joint.
I do have a possible solution in my head (not worked out yet) that would involve something similar to the reversible leg joint I posted recently. Moving/rotating a couple of bones "flips" the position to the opposite side so the joint works on both sides, but involves some extra keys to achieve.
I was thinking an action would solve that but then we're back to where we started with actions applied at specific frames for a good joint... although this wouldn't need to be applied constantly, only when the joint needs to pass through 90 degrees to rotate in the other direction (and only if you really NEED to do that).
I am VERY VERY happy with this solution. It is better than anything else I've come up with, and it completely eliminates that round "loop" at the inside of the joint (even I have problems with that). I don't even need a bunch of extra points around the joint.
-vern
Here's a sample of the "one direction" joint. The first half of the movie shows the locations of the bones and the points that are bound to them. Had to use binding since the would overlap otherwise.
http://www.lowrestv.com/anime_studio/bo ... olume2.mov
http://www.lowrestv.com/anime_studio/bo ... lume2.anme
-vern
http://www.lowrestv.com/anime_studio/bo ... olume2.mov
http://www.lowrestv.com/anime_studio/bo ... lume2.anme
-vern
I'm working on that!slowtiger wrote:Interesting, but I don't think I can use it. It works until 90°, but at a smaller angle there's the overlapping stroke missing.

It would work with the "one way" joint example if you peaked the inside point and adjusted the position of the constrained bones so that line would overlap. I don't have a solution yet for a two way joint since you don't want the elbow point "peaked".
-vern
Okay....
NOW I've got it.
I don't know if this is "perfect" but it's better than the original, works in both directions, is fairly easy to set up and it maintains volume and eliminates the joint overlap "loop" to some degree.
So what is happening is that there is two of those "springy things" that Genete "invented" at the joint. It pushes and pulls the point on either side of the joint to both, create volume and to keep that "line" of the overlapping shapes.
http://www.lowrestv.com/anime_studio/bo ... volume.swf
http://www.lowrestv.com/anime_studio/bo ... olume.anme
I am quite pleased with it and will continue to tweak it.
-vern
NOW I've got it.
I don't know if this is "perfect" but it's better than the original, works in both directions, is fairly easy to set up and it maintains volume and eliminates the joint overlap "loop" to some degree.
So what is happening is that there is two of those "springy things" that Genete "invented" at the joint. It pushes and pulls the point on either side of the joint to both, create volume and to keep that "line" of the overlapping shapes.
http://www.lowrestv.com/anime_studio/bo ... volume.swf
http://www.lowrestv.com/anime_studio/bo ... olume.anme
I am quite pleased with it and will continue to tweak it.
-vern
Vern,
I can't get this to work at all -- I've copied your bone rig and I'm fairly sure I have it all exactly the same (same bone weights and constraints).
Now, I did do it with a single shape (unlike your two layers -- but your two layers both deform correctly anyway). My shape even has the exact same vertices and placement.
Now, perhaps I didn't get the bone sizes *exactly* the same, but if it's that critical then I don't see how useful the technique would be. In any case, here it is if you feel like taking the time to look at it:
http://www.kelleytown.com/Shared%20Files/MyBad.zip
I can't get this to work at all -- I've copied your bone rig and I'm fairly sure I have it all exactly the same (same bone weights and constraints).
Now, I did do it with a single shape (unlike your two layers -- but your two layers both deform correctly anyway). My shape even has the exact same vertices and placement.
Now, perhaps I didn't get the bone sizes *exactly* the same, but if it's that critical then I don't see how useful the technique would be. In any case, here it is if you feel like taking the time to look at it:
http://www.kelleytown.com/Shared%20Files/MyBad.zip
AHA!
You didn't bind the points!
Simple thing to miss that I completely forgot to mention.
Region and flexible binding won't work with this. You must bind the two points on the outside of the joint to the end bones of each spring.
I also bound the points of the rest of the arm to each appropriate bone. Just click on the vector layer and using the bone tool select the bones to see which points "highlight" or are selected to see which bones control them directly.
As far as the names for the bones.... oops! I was fiddling around with my bone flipper.... oops! How confusing that must be. I was experimenting with the extensions on the names for flipping bones and points for symmetrical characters.
That's updated too if you check my script thread. Works GREAT with this set up because you can FLIP the spring bones. You don't have to create them by hand just copy them using my script.
viewtopic.php?t=7842
-vern
You didn't bind the points!
Simple thing to miss that I completely forgot to mention.
Region and flexible binding won't work with this. You must bind the two points on the outside of the joint to the end bones of each spring.
I also bound the points of the rest of the arm to each appropriate bone. Just click on the vector layer and using the bone tool select the bones to see which points "highlight" or are selected to see which bones control them directly.
As far as the names for the bones.... oops! I was fiddling around with my bone flipper.... oops! How confusing that must be. I was experimenting with the extensions on the names for flipping bones and points for symmetrical characters.
That's updated too if you check my script thread. Works GREAT with this set up because you can FLIP the spring bones. You don't have to create them by hand just copy them using my script.
viewtopic.php?t=7842
-vern
Well. that still doesn't work on my example bad file -- did you try it?
With the points bound it behaves more or less exactly the same, so I'm not sure why your example works and mine doesn't.
Just in case you still are willing to take a look, here's my example with the points bound as yours are:
http://www.kelleytown.com/Shared%20Files/MyBad2.zip
With the points bound it behaves more or less exactly the same, so I'm not sure why your example works and mine doesn't.
Just in case you still are willing to take a look, here's my example with the points bound as yours are:
http://www.kelleytown.com/Shared%20Files/MyBad2.zip
- synthsin75
- Posts: 10269
- Joined: Mon Jan 14, 2008 11:20 pm
- Location: Oklahoma
- Contact:
Hey mike, Vern's has angle constraints on those spring bones and your bone parenting is a little different. I was going to fix it, but it looks like those angles will take some fine tuning.
If you bend it on frame one, you can then adjust the angle constraints of the first folding bones (5_steve, 5_bob
) to force it to where it looks right. 
If you bend it on frame one, you can then adjust the angle constraints of the first folding bones (5_steve, 5_bob


Well, I used the same angle constraints Vern used -- you're saying that every setup will need to be adjusted differently? Even though the shapes are almost identical?
If so -- *waaaaayy* too much work. I think I'll just stick with my present methods for forcing volume issues (which is to define actions which adjust the vertices of the limbs -- I just drop in the "fix bent arm" action and all is well).
The other strategy I've found very useful is to adjust the vertices and then copy this back to frame 0. At that time you can move them ever so slightly to get them back in line and this usually holds true. Also changing a vertice to angled versus smooth will often do the trick (particularly inside corner).
In any case, I thought maybe Vern had come across some magic and I'm always willing to explore other solutions. Just ain't the right one for me <bg>.
If so -- *waaaaayy* too much work. I think I'll just stick with my present methods for forcing volume issues (which is to define actions which adjust the vertices of the limbs -- I just drop in the "fix bent arm" action and all is well).
The other strategy I've found very useful is to adjust the vertices and then copy this back to frame 0. At that time you can move them ever so slightly to get them back in line and this usually holds true. Also changing a vertice to angled versus smooth will often do the trick (particularly inside corner).
In any case, I thought maybe Vern had come across some magic and I'm always willing to explore other solutions. Just ain't the right one for me <bg>.
Oh -- sorry, I guess in my second file I *didn't* have the angle constraints on (did in the first one).
But no matter -- adding them back in still doesn't do anything. And, like I say, if it's a matter of trying to figure out which angles you need... just too much effort to solve a problem far easier solved with actions.
But I'm glad I tried it -- never want to think there's an easier way I'm overlooking (now I know there isn't <g>)
But no matter -- adding them back in still doesn't do anything. And, like I say, if it's a matter of trying to figure out which angles you need... just too much effort to solve a problem far easier solved with actions.
But I'm glad I tried it -- never want to think there's an easier way I'm overlooking (now I know there isn't <g>)