View Full Version : Bendy Joints in Maya Crit

 flex2404 April 2006, 04:24 AMHi All, I've been working to create a cartoony bendy character rig. I'm sorta at the begining steps where i'm exploring methods to make joints follow curves, squash, and stretch. At the moment i'm focusing on making a bendy arm set up. I have an expression to position joints along a curve right now. I'm wondering if its a good idea to use expressions for rigs. Will more expressions on a rig make the system run slower? And if so what would be faster to use then expressions? Below I got a demo of the joint set-up on a bendy cylinder. If anything looks funky crits are welcomed. http://www.thatdarnsite.com/clips/bendypipe.jpg (http://www.thatdarnsite.com/clips/bendypipe.mov) bendy pipe - quicktime file ~3 Mb not streamed so you'd have to wait for it to download (http://www.thatdarnsite.com/clips/bendypipe.mov) --- felix
lkruel
04 April 2006, 03:51 PM
Hey that looks pretty solid. How did you go about it?

I've done it a couple of ways, one with a spline IK which wasnt the greatest, and one with expressions that didnt have as much control as I wished, but it was an extra bell. If you have some expressions it's fine, if you have a lot it can slow down the rig a lot, you can get around it by constructing a network of nodes, like multiply divide nodes or inverse.

So if your joint1.rot = 2* joint2.rot you can do a joint2.rot > input 1 on a multiply divide
then set input 2 of the node as 2, then pipe the output into joint1.rot. And make sure the node is set to multiply.

My only concern about your method is how it will behave with stretchyness, but it looks pretty solid. I'd like to hear how its done.

flex24
04 April 2006, 04:22 AM
Hi Ikruel thanks for the reply.

I like the idea of making the expression into a set of utility nodes. I didn't think it was possible but the code is essentially addition, subtraction, and multiplication.

I made up a pic to describe how the expression puts the bones into the curve position
http://www.thatdarnsite.com/clips/pipeBendyPic.jpg

The curve is based on the positions of the beginning joint, the middle locator and the last joint.

Each joint between the first and last are un-parented, this allows them to move freely to follow the shape of a curve.

If the joint is going to stay a third of the way along the curve we will find its position as follows:

1 - Take the position a third of the way from the first joint to the locator and call it P1.
2 - Take the position a third of the way from the locator to the last joint and call it P2.
3 - The joint will be placed a third of the way from P1 to P2.

and thats how all the joints got lined up along a curve, and moving the locator controls the bend.

For the joints to form the curve shape each joint has an aim constraint towards the next joint.

And thats the jist of the bendy pipe.

I did a quick test for stretchyness that isn't bad, you can pull the end joints and the joints will stretch evenly, but at the moment the locator stays in position.

lkruel
04 April 2006, 11:20 PM
Pretty cool, that's how Bezier curves are done if I'm not mistaken.

To solve your locator problem you can group it to itself and parent that top group to the first and last joint. You might get a cycle if you're not careful though, so you might want to do that to the final controllers. but if you parent it to the beginning AND the end, it'll always stay halfway.

flex24
04 April 2006, 02:43 AM
hi Lkruel, i totaly get it. I like it alot too cuz it still gives the freedom to keep the bend during stretching, Thanks for your input. :D

darkjedi1929
04 April 2006, 03:52 PM
Solid Stuff! Seeing this, I just have a hypothetical question. If the animator wanted more than one locator for the control.....what then? You know, something like Elastigirl from The Incredibles?

flex24
05 May 2006, 03:53 AM
Hi darkjedi1929 - its totally possible to create more points of control with more locators. it would just get more cluttered. I've reworked this set up to incorporate some expressions and node networks to increase speed incase of something more complex. so its hypothetically possible to have something similar to Elastigirl, the controls though could become a real mess. and i'm sure animators would want something that involves tighter controls over moving sliders. Thanks for your input

right now i'm trying to put together a script that will do the expession and node networks automatically for me. hopefully i get enough free time to finish this before the end of the month.

overcontrast
05 May 2006, 06:52 PM
hey flex, nice bending technique u got there.... i'm working on something similer.... but for my arm rig i want a coupla more controls... like IK/FK switch, Streachyness and ofcourse Bendyness. As far as my test went, i'm done with the IK/FK and Bendyness control. (note: for my arm control i wanted both normal and cartoony movement). I used a combination of 4 joint setup including a Spline IK setup. I'm still thinking about how i'm gonna handle the streaching.

Here is a little clip from my expariment where it shows the blend beetween the normal and cartoony movement:

http://www.vsoftbd.com/overcontrast/bin/bendy_arm.jpg (http://www.vsoftbd.com/overcontrast/bin/bendy_arm.avi)

I'm very interested to see how you do the streatching for ur setup....

flex24
05 May 2006, 03:06 AM
hi overcontrast, really like what you got going on there with the blending. You said your arm uses an IK spline set up to create the bendy, i would sugest using the arc length tool to sample the curve length information. You'd want the length of the joints to match the length of the curve as it extends to stretch. You can take the distance information from the arc length node and multiply it by a number and plug that number into the joint's translateX. So when the curve gets bigger, the joints will get longer. I hope i'm not making any confusions. The heat from my pc is frying my brain.

The stretch for the setup i've shown mainly works when there are alot of joints and that they are all unparented. If the joints were parented i'd have to work on maintaining their translations. If there were very few joints, then i'd run into problems with the mesh stretching unevenly.

flex24
05 May 2006, 03:42 AM
hi overcontrast, i just made a quick test and my sugestion of using the arc length tool wasn't as good as i thought. The last joint doesn't seem to stay at the end of the curve. This was just an ad hoc idea.

playblast.avi file ~1 Mb. right click to save target. (http://www.thatdarnsite.com/clips/playblast.avi)
(http://www.thatdarnsite.com/clips/playblast.avi)

overcontrast
05 May 2006, 08:42 AM
hey Flex,

Your test looks interesting, i think somehting neat can be done using that technique.

well the problem sums up when u want ur arm to do a lot of things like IK/FK switch, Bending and Streatching, control over these bendings, then things get a little messy. espacially when u want both ur normal arm and bendy arm to streatch and have control over them. in movies like the increadibles i suppose theres different rigs for different situation. the challange here to get all this done with one single rig.
rite now i'm leaving for work... when i come back i'll do some research on how these all could be done using the same rig.

CGTalk Moderation
05 May 2006, 08:42 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.

1