elastigirl


#85

Hi Ngrave,

My system could work on the entire body, its does use curves and has a simliar layering and constraint system via the use of tangent handles. But doesnt rely on a curve deformer. Currently it relies on path deformation techniques, and this is why i was explaining the issues of acheiving rotational offset. Thats why ive got to look into api,script and mesh interpolation stuff. Either based on whole mesh, implicit or edge to edge explicit. Basically ripping out vertex data and playing with it. Its very very fast atm, and so i need to keep this speed.

this geometry then feeds a proprietary surface deformer that drives a topologically identical version of helen that is always invisible.

Geometry affecting/driving vertex data can be achieved in max. Take the skin modifier for instance. And access to vertex data is relatively straight forward with script and sdk. Ive even have a muscle pipe im working on the does this exact thing, -spline>poly>mesh. Basically im making sheets of muscles.

As to a whole rig, i think each area would be slightly different, arms, legs, body, so slightly different versions of the same pipe. Speed is the key. What would be nice is statistical modelling in max, mmm that’ll be the next step.

eek
p.s if i get an aproach that is as fast as my current pipe, and acheives true rotational offset ill post it.

eek


#86

Hi guys,

Great topic!

Very nice link on more information:
http://www.computerarts.co.uk/in_depth/features/inside_the_incredibles

I’m an animator primarily learning the ins/outs of rigging. so here goes:

I know this thread is more about Elastigirl and her stretchiness. But can anyone please give me more info on how to make a pseudo “Bendbow” type arm rig? where it bends just from the elbow/wrist area. viva Tex Avery!

Also another question: How can I setup in an IK arm rig with a degree of movement not usually allowed by IK in the forearm (like when one arm-wrestles, the direction the forearm is pushed (+) and to a less extent (-) )

Any help at all would be most appreciated! :slight_smile:

  • Somhairle

#87

But of course. But can you get the same mesh to behave one way, and then the other in one shot, without doing some sort of kludgey swap?

Like I said, THAT’S the fun stuff… :slight_smile:


#88

I know there’s an easyer way look

at the link look at the character rig.


#89

That link’s broken.


#90

Im using a float point3 on the point, which basically exposes the handles, which then im driving with an expression.

I’m trying to achieve something similar to yours, Eek, but I’m not able to fully understand the sentence above. Where are you using the Float Point3 controller? Can you explain me a little, please? It’d be very appreciated!!!

Thanks!


#91

ah ok, so to get at handle of b-spline first they have to be animated. So make a go into sub-edit mode make a key at frame one with the handle.

Now open up the graph editor go to you spline>object>master and you should get a:

vertex 1,2,3 etc
InVec 1,2,3 etc
OutVec 1,2,3 etc

where you can place expressions/scripts on. B-spline handles have odd tranform axis, they exist as only a point in space. And to that seem to have an inverted axis -y,x,-x. With my setup im using an expression to link the handle to a point. Then driving that point with scripts/etc.

So all i do is first put a list controller on the InVec/OutVec/Vertex, then on its avalible controller a point3 expression.

With the expression as im not splitting its axis into three, im using a vector. So the expression looks like :

[-a.y,a.z,-a.x]

a’ being a vector name ( you could call it anything) , with a controller being the point. Now you need a list controller because generally the handle never sits bang on the point and may even fly off. So the list controller enables you to align it.

Also when you add this approach to other vertex[s] the previous may get moved, so its best to put the expression on everything your going to control then align them all up with whatever there being controlled.

point3 is for (x,y,z)

ive got some more tech on this i’ll have to show you guys sometime.

eek


#92

Have I ever told you that I love you, eek? :wink: OK, now it’s time to test it :slight_smile:

Thanks!!!


#93

We love him indeed. :slight_smile:

Like the Batman of Gotham City, or the Spiderman of NewYork, he’s the Eek of CGTalk. :bounce:


#94

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


#95

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. :slight_smile:

Anyway, I’d love to see a wire deformer in Max.

-=GB=-


#96

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]


#97

The only problem I have with building a system like yours is that it’s just to much for my tiny brain to handle. :wink: 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. :slight_smile:


#98

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!:thumbsup:

please continue…

eek


#99

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. :slight_smile:

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. :wink:

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!:thumbsup:

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. :stuck_out_tongue:

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. :slight_smile:

-=GB=-


#100

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


#101

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.


#102

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.


#103

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


#104

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 :slight_smile: