Have I ever told you that I love you, eek?
OK, now it’s time to test it 
Thanks!!!
We love him indeed. 
Like the Batman of Gotham City, or the Spiderman of NewYork, he’s the Eek of CGTalk. :bounce:
Hehe, thankyou!
If i have a little time today, ill post up some more stuff on elasti-girl research and some theories ive been looking into from the clone-wars. Which is an artistic curve/bend rather than incredibles style squelch!
A little more:
So with the clone wars, ren and stimpy, dexters lab. They have an artistic curve at the tops and bottom off the legs and arms.
With the legs, with fast or dynamic posing you have two values, firstly a general slight curve the leg, this is minimal. Secondly the top edge of the leg, becomes one fluid curve. Similiar to the action line in animation. - this is when the leg is slightly bent from being straight.
The underside retains its natural shape/muscle and only takes on a little curving.
When bent the legs have an altogether effect going on, namly the low leg (knee down), has an inverted curve. Breaking the whole arc of the leg but retaining dynamism and strong posing. The back of this still retains its muscle shape. With the upper leg, the upper edge retains its curviture from the previous, but may become stronger, its underside remains the same. - for when the leg is sharpy bent.
Arms are different matter altogether.
In a dynamic shot in the ‘clone wars’, mase windo is fighting tons of robots, the arms are either in a bend bone style with a generous arc, that tapers to the wrist, or very sharp, tight angles.
It all though, depends on the character, mase is a bulky, heavy so not much deformation goes on. Also his legs dont taper at the feet, so its a dynamic is heavy/solid.
Anakin on the other hand, is light footed and quick, his feet are tiny, so the arcs give a ‘fleet of foot’ feeling. It accentuates the performance.
So with this in mind developing a stretching system needs the following:
ik/fk - the ability to break joints. Now it could be an entirely ik system that references an fk for special situations.
Bone scaling/length adjustments - vital for dynamism
stretching in conjunction with bone scalling (plus the ability to turn it off/down) - this is vital, because one goes in hand with the other. The ability to stretch is one thing, but those bones need to be able to adjust in length too.
Generalised curviture - basically a general curve that runs through all the bones, in other words bend bone.
specialised curviture - the ability to drive the whole curviture of the leg. This can be achieved with splineIK, custom setups etc
[b]
shape curving[/b] - now this is different, the ability to direct the curve of the leg/arm/body on its top edge and bottom edge. This allow for great dynamics, and breaking of poses.
This basically covers all the bases for a good setup. Achieving this in a reliable solution is difficult, as you dealing with odd rotations, positions etc so working out which order each system goes is vital.
Also it has tp be readable fo the animator, is access to controls and vitally keeping up with everything so they can easily reset each part.
eek
Hey Eek,
This year at Siggraph I had a chance to really check out the chicken Little/Disney Rigs. At first (when I saw them last year) I thought they where incredibly complex and that they had programmed some kind of custom deformers. But, after really taking a good look and talking to the TDs I found that they where incredibly simple. All that’s really happening (in general) is that the mesh is actually skinned to a spline (in Maya it’s called a wire). The points on the spline have no hierarchy so they can move totally independently of each other. Then, the points on the splines (wires, actually) are skinned to a ridged human type skeleton. This skeleton has your standard real-time stretching. In other words, the stretching happens in reaction to pulling the IK past the length of the bone instead of controlling it with a slider.
The animator poses the skeleton rig like normal. Then, either after or during poses, the animator selectively ppulls the curve points away from the bones. This is how they get all the weird cuviture to there limbs. The limbs usually only had one extra curve point between each bone. The points still move with the bones, they are just offset in order to curve the limbs in nice ways. It’s important to note that this is effect is pretty primary to the fact that the mesh is attached to a curve and thus flowing with the curve. This is also the issue with doing something like this in Max and most other programs. You could simulate the curves with a lot of little bones but that still doesn’t take into account that curves can stretch in between points where as, bones are usually static. You can obviously program this behavior in but I have no idea how to do that. 
Anyway, I’d love to see a wire deformer in Max.
-=GB=-
That is the exact same system i have. And it can be done in max quiet easily, but as you say im skinning to bones snd not a curve.
I did however do a test (probably to one you saw) with sklnning to a spline, that is driven via tangent handle. This stop you from having tons of points to control. The main issue with this is that a bezier point is just that a point and therefore has positional data, but no rotation. So when turning the rig, the rig would follow but it wouldnt gain any twist, unless you develop some vertex offsetting program, that say goes through each frame looks how the spline is behaving and ‘tweaks’ the mesh acoordingly.
In mine i had all the same control, but didnt even use bones!. The version im working on now has:
length adjustment
stretch control
Bend bone/manual control
And the order of each system is as follows:
curviture layer >ontop> bend bone layer >ontop> stretch layer >ontop> [size=2]length layer
because everything is recursive, i.e it looks back at the last layer, each layer works seamlessly. Manual curviture is a state of bend bone which inturn called be dialled on/off - which is built on a stretch system (diallable) built on top of a length system.
The big slowdowns is driving lots of bones with a spline, so im looking into other ways.
Did you find how they solved the twist issue?, i know with pixar they have a custom spline deformer they wrote. I do know of a cheapish way of doing it - but i wont let that out of the bag yet. I’ll get a clip of the system up soon.
eek
[/size]
The only problem I have with building a system like yours is that it’s just to much for my tiny brain to handle.
I’d like to keep it as simple as possible. In fact, I’ve been trying to figure out how to put an IK chain on a curve in Maya. So basically, you pose a character with a simple spline rig. Nothing more.
The twisting is still a problem and I can only assume that Disney had to write something like Pixar did. I just have to be careful. Another issue is that points on a curve don’t respond correctly when edited with any kind of compound deformation on them. Like skinned to a bone. It’s the old, X is Y and Z is… wait… I hate Maya for that kind of crap. 
Thats why im driving my spline with bezier tangent handles, far more control. For an ik chain cant you just make a cv spline, cluster each point to a locator, parent those points together and run an ik chain through the lot?
You could then do all the funky stuff, like stretching, etc etc. eg make a spline with 5 points. then cluster each. Parent the 5th,3rd and 1st together, then drive the 2nd and 4th via a constraint based on its closest pair, give the 2nd/4th additional control so you can still move them and that should be it.
You could probably only use the clusters themselves, i did some stuff like this ages ago - in maya funnily enough for my facial rig. Btw im digging this discussion were having!![]()
please continue…
eek
Yeah, that’d be cool. But alas… I haven’t figured out how to run an IK chain through anything other then bones. When you activate the IK handle tool, it wont select any other types. I’ll bet someone has figured it out or it’s probably possible with Mel. I’m just not privy to that knowledge. 
Doesn’t really matter though. I’m much more into Max these days. Maya is very badly organized program if you know what I mean. We really need is a wire control for Max. 
You could then do all the funky stuff, like stretching, etc etc. eg make a spline with 5 points. then cluster each. Parent the 5th,3rd and 1st together, then drive the 2nd and 4th via a constraint based on its closest pair, give the 2nd/4th additional control so you can still move them and that should be it.
You could probably only use the clusters themselves, i did some stuff like this ages ago - in maya funnily enough for my facial rig. Btw im digging this discussion were having!
please continue…
eek
Yeah, to make matters worse in Maya, you only have NURBS curves. So, what would only take 5 points with Bezeir takes a lot more. When Designing this system, I had a hard time figuring out what to do with some of the extras. Now that I’ve messed with it for a while I can see that Disney must have done some custom coding to get the wires to behave like you would expect. for instance, say you have a wire skinned to a two bone chain. Now, when you rotate the lower bone up at a 90 degree angle, the points are now at a 90 degree angle. So, when you try to move them X moves up and down and Y moved right and left and so on. There’s probably a simple way to get around this using Mel but sheesh! Why should I have to deal with this in the first place. 
So, I’m really interested in finding out how how your skinning things to splines in Max? BTW I did see that Elastagirl leg you made a while back. Freaking awesome is all I can say. That would be optimal if it could work on a full character.
Something just occurred to me; (in Max) If I made a bunch of bones, parented each to a dummy, pointed each to the next dummy in the chain, then somehow got them to also stretch to that dummy… Hmmm. I seem to remember something like this in LightWave a while back. Bone length=the distance between the two dummys (parent and next in chain). Anyway, that could have a similar effect as a spline. At least that way you could get rotational deformation as well as positional. Hmmm. I need to study Max script more. 
-=GB=-
Hey,
i have been reading this thread for a long time and this is my little test
http://www.zippyvideos.com/6558287461070946/streachy_arm_test/
simple ik bone setup with a spline going in the middle of the bones. each vertex is link xform to a dummy which can always be snapped back and be align to the to of the bones, the dummy are linked to the bones.
The arm mesh is skinned to the spline.
Asa
I experimented some while ago with ‘spline skinning’. While it works not quite bad on lips, for example (skinning a spline for the lip and control it via LinkedXForm), it seems to deform a simple cylinder in a non-wanted way. Imagine a cylinder, a 3-vertex spline skinned to it, and some kind of helpers to control vertex positions. If you move any helper, the mesh will follow the spline shape because of the skinning, but it gets some weird deformation too.
So Asa, how did you get rid of that deformation?
p.s.: if what I’m talking about it’s not clear, I can attach some images to explain it better.
yes i had the same problem, i tryed to make all the vertex as corners, or smoothed but i found that the best way to avoid any bad deformation of the spline is too make the middle vertex a Beizer corner with very little handles, so they are very close to the vertex. that seemed to help it. can take a look at my setup in the attached file - it is max 7.
Ngrava & all,
I wouldnt skin a spline to bones, your gunna get additional offset issues, combined axis etc. Plus i wouldnt use linked xform - it will kill your system if you have lots (trust me ive done it)
— continued
Yes ngrava i see, plus your skinning a nurbs-curve; isnt that a no no for memory issues? What im doing with besier stuff is firstly controlling each vertex via an expression with a simple point.
[-a.y,a.z,-a.x] - a being your vector controller. Its an inverted axis, for some reason.
Its just for linking the besier point to a helper point. Now i do this with all the besier handles that are being controlled. Then i have a very simple (ish), constraint system to weight the besier handles and link it into the ik stuff. It means you can weight it down, but still have stretch etc etc.
For the leg clip, there no bones in that system at all!, just point heirachies etc etc. If you want ngrave do you have msn? - we can discuss more there i’ll send you a PM with mine.
eek
Hey Eek…why are you going to the trouble of controlling the points along the spline with expressions. Wouldn’t you get the same results with the “Spline IK Control” modifier?
Most people think that this modifier is only used for spline IK…but its acutally not. All it really does is create a helper at each vertex that controls that vertex.
Then you can control the tangents the same as you normally do…via expressions or whatever. I do this and it seems to work fine. And even though expressions are fast the modifier is probably fast since its compiled. Its also a lot less to set-up 
light goes off in head…BANG…BANG…BANG
sound of head hitting desk…
Harvey, sometimes all this stuff goes to my head! Never thought of that!
eek
Well, actually I thought of that, but I scared to tell it (and sound confused) after reading all that complicated expression stuff you’ve done heheheh. 
Anyway, keep the progress goin’ on!:wip:
Hahaha…I know exactly how you feel Eek. Many a time I have called someone over to my desk and said…hey look at this really cool thing i set-up…its all controlled via these funky expressions/constraints/other mysterious rigging magic…and they tilt there head sideways and say “yah…but what about this button…doesn’t that do the same thing?”
heheh.
this is my second try of streachy arm without Linked xform or any splines, since it is a ik system you can’t break the joint.
Asa
i did some research a while back on using *path deform. The nice thing about this is firstly its a deformer so you could tweak it with the sdk. Also it has controls such as twist, which is a really important factor in stretchy stuff.
You can also get at its controls:
rotation
stretch
percentage
twist
Ive found out how set its stretch against the length of your object just by doing a script on the stretch value.
d1 = $object.height/length
d2 = curvelength $line0X
d2/d1
Now you can do the same with the rotation against the swivel angle of the ik - or whatevers controlling it. Theres probably a degtorad thing going off in there. Ill post up some pics later today.
eek
edit:
So this idea does infact work and you can drive the rotation off the swivel angle, the only issue now is speed. So im gunna try and bridge the length system with the stretch system.
hey guys,
i wrote a little script a while back that creates control objects for splineShapes… it creates controls for bezier handles as well and is intelligent about the type of knot (creates independent handles for bezier corner knots, linked handles for beziers, no handles for corners and smooth knots, and only one handle at the ends of the spline)
it has no interface yet (it’s basically one big hack) but i plan to take this further pretty soon
known issues:
) i might switch to splineIk for the knots themselves (thanks harvey
)hope this can be of some use!
