Home Website Youtube GitHub

New Version of the Lips Rigger

Greetings y’all! So I was working on a standard biped rig for a short film and neither myself nor my animators had ever used mGear before, but I was determined to try it out. I used the built in lips component at first, but we ran into a few things that were not to our liking (at least for the purposes of our project).

Firstly, the existing lips rigger maintains the distance between all of the joints on the rope at all times. The top and corner controls also drive the motion for all the other controls without any other way of adjusting those positions on the curve. Between these two things, my animators found it very difficult to fine tune the particular mouth shapes they wanted to make.

Additionally, I found it very difficult work without the ability to mirror the skinning (given the naming convention), and I ran into some issues with the joints themselves not being physically aligned to be mirrored.

In order to fix these issues, I changed the constraint method of the motion path used to drive the rope, and added more CVs to the control curve in order to further isolate deformations between controls. I also added extra controls so you can move the corners without having to move their neighbors. And finally, I changed the way the joints are named and arranged on the rope so that mirroring is easier.

I’ve tested this version on two different models, and it seems to work, but I’d love to see what problems other folks run into if they attempt it. I commented #CHANGES HERE or #CHANGES BEGIN/END anywhere where I have modified the original tool. Additionally, I’m still a very junior rigger, so I’d just love any feedback overall.mgearMouth

2 Likes

That’s cool! Thanks for sharing, and it’s really great that you took the initiative to modify things to suit you!

If some of your ideas are good, general, and stable, they could become push requests to the tool!

I had similar issues, so I just wanted to share a few points. I don’t have clean isolated code I can share.

  • I think you mean the constraints that make the mid controls follow the top/bottom/corners. I write a script to add an attribute on the lip controls to adjust the ratio of the constraints. By doing that, you can get a pretty cheap/inaccurate zipper-lip effect too. The downside is if you are also driving blendshapes, you make the lips more complex.
    zipperPotato
  • You also talk about problems with the motion path. My main problem with the motion path is that if you pull on one side, the whole lip pulls along, distributing along the path. So I wrote a script to convert the motion path into a nurbs ribbon. That is stable per CV. And then connect the lips to that with follicle/matrix-constraint/uvPin/whatever. I just duplicate the lips curves and then loft them, and then skin the ribbons to joints that are constrained to the controllers.
  • I also add a mouthCorner control_01, and pointConstrain that to the corner lips. I give this joint a wide soft falloff into the cheeks. That way, you can rotate the corner lips without twisting up the whole cheek area, but still get a wide falloff for translation.
3 Likes

Nice! I really like the zipper controls. My animators wanted something different, but I’ll definitely keep this solution in mind for future projects.

And yea, the whole lip pulling along is exactly what I was trying to solve. I would love to be able to see yours in action and compare the two.

I need to look into your corner lips idea. Those are such a pain to skin.

1 Like

I use ngSkinTools, so the corner lips get painted underneath the lips layer. I use the auto-skin on the lips and make it go way too far, and then I paint a mask for the lips layer to bring it back to the width I want.

For my ribbon lips, I found a post I made where I shared my code. I had to pull out a few functions because it’s spaghetti-tied into my whole pipeline: I have a question about Lips Rigger jitter, very urgent - #18 by chrislesage

(I don’t know how well that will run out of context or without slight modifications. But it might. And hopefully it gives some ideas.)

Thanks a bunch! And yea I use similar methods for skinning the lips.

1 Like

Thanks for sharing this! :smiley:

1 Like

Hi,I just came across this script, and I would like to better understand how to use it; I tried replacing it for the lips_rigger.py file on the framework directory, and it didn’t seem to work. I don’t think my maya version should be causing trouble, but I would like to know if there’s some method to follow to install it or to get it working. Thanks!

This is from a post from 2 years ago. This was back when mGear was around 4.2.2 or so. It has gone through a large number of changes since. And a few Maya versions. And the biggest change in mGear 5 is refactoring away from PyMEL, which likely makes this script out of date.

The first question is: are you familiar with Python programming?

Because there is no short answer to “a method to follow”. At the very least, you’ll have to be more specific, and state what version of mGear you’re using. What version of Maya. Your skill level in Python. And any warnings or errors you’re seeing when you attempt to use the script.

Chances are that you’ll either have to use an older version of mGear that this script was designed for, or alter the code to match the current conventions of mGear 5+.

Exactly what chislesage said. I haven’t used this script in years. Newer versions of Maya also don’t install PyMEL by default like they used to, so even if the script itself isn’t out of date, it could have issues there.

Feel free to take it and modify it however you like. I just built it on top of the existing mGear rig.

Oh, I see. Yeah, I was trying to use this on Maya 2025, with a version of the framework above 5. I’m somewhat competent on Python, but I’ve never built scripts for Maya or anything, so I would like to know if there’s a plan to update this script or if there’s a workaround, like just switching mGear versions or something.
Either way, thanks for the response.