#RiggingInMaya | Part 33 | Advanced | Ribbon Face Rig

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello and welcome to video 33 in my rigging in maya series we only have one more area we need to rig and that's the dog's facial features these include the lips eyes and his nose for some of these the rig is relatively simple needing just a joint a control and a constraint with the rest we will be using ribbons to help add more fluidity to the face allowing for more natural looking poses before we start work i wanted to ask you something are you enjoying these videos and would you like to see more well if so there are a number of ways you can help support future content the first is to simply head over to my coffee page and treat me to a coffee to say thank you the second is to head over to the ant cgi store here you can download the assets for each of my courses but don't worry there are plenty of free downloads available too the third way you can help is to join the ant cgi club membership starts from as little as 99p a month and in return you can earn yourself some exclusive rewards these include member-only videos a limited edition and cgi pin badge and a discount on all ant cgi merchandise there are a few ways you can join the first is to simply click the join button below this video and become a member of this youtube channel the second is to head over to my patreon or coffee pages and become a member there so there you go the future of this channel and its contents is in your hands to get more information on how you can help follow the link on the screen or in the description below okay so here we have the current rig you will notice there are a few extra joints and controls we have the jaw joint which we created previously but in addition to this i've added a snout joint a nose joint and two nostril joints so we can rotate it like this let's find it in the outliner and the new snout controls so here is the jaw control and its offset group the jaw joint is simply constrained to the jaw control using a parent constraint it's the same with the snout control we can move the nose using this and again the joint is simply constrained to the control it's the same with the nose control and the nostril controls the only difference is i've connected the scale to the nostrils too you can see here just using direct connections this will allow us to flare the nostrils as the dog sniffs so these are the simple controls i mentioned earlier all these controls are parented to the head control so they follow as it moves okay so those are the basic controls so let's look at the rest of the head what we want are controls around the lips on the bridge of the nose around the eyelids and also around the eyes on the cheek and brow area this should allow us to get some good facial expressions so let's start building some ribbons now i'm going to cheat a little bit and use the ribbon tool i developed this will generate the ribbons and controls for us don't worry if you don't have access to this script you can go back and watch my video on ribbons to see how these are set up manually alternatively you can download the ribbon tool from the ant cgi store what we are going to do is generate our ribbons using the head geometry so we need the generate ribbon from surface section here let's select this edge loop here and define this as an outer edge now select the edge loop below this and define it as the inner edge so we have two curves now next give the ribbon a name so lips ribbon and we want the controls adding two so make sure this is checked we know this is a continuous loop too so we check closed loop here this option is just here to help dictate where the controls are placed with control ratio we can define how many controls we want along the ribbon so one for each section or two which will add a control on every other section let's use one for now and we will leave control offset at 0.25 this will simply move the control away from the model so it's easy to see and select now we hit generate ribbon so there we can see a control has been created for each section so where each follicle and joint are and we can see the controls are away from the surface too which is perfect okay so with this setup we don't need this many controls it will be easier for the animator to use if we have fewer controls for them to pull around so let's undo this and set control ratio to 2 and generate that so now we've removed half the controls simplifying the rig what if the controls are at the wrong points though so what if we wanted them created shifted along so it's every other empty section instead all we would do is generate it again but set control ratio to 2 alt now the controls have been shifted along so occupy the previously empty areas ok let's go back to the original setup and find the controls in the outliner as you can see each control has an offset group which is essential unless you're using maya 2020 or newer for this rig we also need an extra group above this a driver group this can be used for automating the controls movement or even for being used with set driven keys if you prefer the ribbon tool now has an option to add these for you if we reset here it is the driver group option if i check this and generate the ribbon again let's find the controls you see we now have a driver group okay so those are the main options let's rebuild the lip ribbon again we only want a control ratio of two though that's better so this ribbon is okay but it could probably do with some adjustment to fit the model a little better we can go in and edit the control vertices like this so let's move this a little now this is just me trying to make it look a little neater so feel free to ignore this the problem with editing the ribbon is the controls and joints are no longer aligned with it so what we do is select the ribbon and update it using this button this will just regenerate the follicles and controls so they match the new surface so that's updated and the beauty of ribbons is we can move one control and the follicle joints between will automatically stay between those controls so we get movement but with fewer controls okay so i'm going to rework this ribbon add one for the snout and another for each eyelid and finally one around the outer eye area too if you want more control over the dog's features then feel free to add more ribbons and where possible try to copy actual muscle placement too this will give you more natural and believable deformation of the dog model now before we move on i wanted to quickly demonstrate how you can create your own ribbon from a model surface without the need for any scripts so here we have a basic polygon sphere let's select an edge loop and go to modify convert polygon edges to curve and open the options we can use the default options here but make sure degree is set to 3 for a smoother curve click apply to create a curve let's select another edge loop now and convert that to a curve 2. we can hide the model now so here we have our outer and inner curves and we want to use these to generate a nurbs surface which is pretty easy with both selected go to surfaces loft we can reset the settings and applying that will create a surface between the two curves this surface is okay but it's far too complicated we don't need these middle cvs here let's undo and recreate it this time set surface degree to linear and you can see it's now much simpler okay back to the dog and here are the ribbons all built and ready to go as i said before feel free to add more to get more movement out of the face we have the lip ribbon one for the snout another for the brow and cheek and finally one for each eye these will allow the animator to pose the eyelids these controls will let them pause the brows and upper cheeks and with these we can pause the lips let's find this in the outliner we have the offset group and also the driver group but with each driver group i made sure they match the position and orientation of the jaw joint and that's the same for all the lip control driver groups they need to match the jaw joint because they have to move and pivot around the same point so as the jaw moves they all follow we need to do the same with the eye control driver groups as well although with these they need to pivot around the eye joint again this is so they move around the eyeball there are a few extra attributes on the controls too i forgot to show you these before on the jaw control there is a lip influence attribute and this is limited to stay between 0 and 2. you will see why in a little while with the eye controls we are going to have more options to set up so here we have eye influence blink height and also blink again we will see how these are set up later for now let's focus on the lips what we want is for the lip control to follow as the jaw moves so let's open the node editor and move this okay bring in the jaw joint and open it so we can see the attributes we also need the controls driver group so we can select the control and pick walk up twice to select it and then simply import it there we go what we could do at this stage is simply connect the rotate attributes directly like this so now as we rotate the jaw control the lip control follows too but this is a bit basic really we want more control over it so we can adjust how much the lip follows the jaw to do this we can use the lip influence attribute on the jaw control so let's import that too and hide the shapes we don't need those let's move and open this so there's the attribute create a new multiply divide node and let's just call it the same as the driver group so we know what network it belongs to but we will change driver to multi now re-route the connection through the node so connect rotate to input one next connect lip influence to the input 2 attributes so the rotation is going to be multiplied by the lip influence value now connect output to the driver groups rotate attribute okay that's done and you can see the control has moved away from the jaw this is because its rotation is being doubled because the lip influence attribute is set to 2. if we set this to 1 the rotation will match the jaw like we had it before but what we can do now is use the attribute to adjust the jaw's influence on the lip control the reason this is a good thing is because we can expand upon this to create a sticky lipped kind of setup now don't worry though we won't be using any curves ramps or wire deformers we will be using something much simpler and that's a remap value node here we go so what this node will do is take a value and then remap it so we can use the lip influence value and adjust it using this node to give us different effects with the lip controls first connect lip influence to the input value attribute we're going to use the remap values output in the multiply divide node instead of using the lip influence attribute directly so connect out value to the three 2 attributes let's rename the node 2 adding remap to the end now these are the main attributes we'll be using let's go to the attribute editor so we can see all the options you can see that we have a value curve and a color ramp we won't be using those for this rig so let's just collapse them all we need are the options under the inputs and output ranges tab if we move the jaw control it doesn't look any different to how we had it before but we need to adjust the attributes before we can see how the node will help us before we do that however we need to apply the same process to the rest of the lip controls we need to edit them all at the same time really so we can adjust them and see how they work alongside each other so let's update them now i'm selecting the two either side of the main control we were just working on and that's because they can share the same network because they will both move the same as they follow the jaw now instead of manually adding these to all the lip controls i've created a quick script to help me here it is feel free to quickly pause the video and jot down this script but all the scripts i use and create will be included with the source files so all i need to do with this script is select the controls and then run it there we go okay i'll speed things up as i work through the rest scripting can save us so much time so it's worth investing your own time in learning even just the basics all done now all the controls follow the jaw and we can use the lip influence attribute to adjust how much so what we want now is for the upper lips to stay closer to the upper jaw as the lower jaw moves away and this is where the remap value node comes into play select the upper middle control and pick walk up twice so you're selecting the driver control group we can now see the remap node in the channel box so open it up the first attribute we need to adjust is the output max attribute this is like a percentage of the full value so at the moment the node is outputting the full lip influence amount we can reduce this to move the control back closer to the upper jaw if we set it to zero the control doesn't follow the jaw which is fine for this particular control let's adjust the next control so find its remap node here we go and adjust the output max attribute we could leave this at 0.1 so we get a small influence as the jaw opens and remember we set this up so both sides use the same network so the value is mirrored okay next control adjust this to 0.1 as well for now and adjust some more okay so now when we move the jaw we get a nice fall off around the lips let's adjust these a bit more now and these these should have less of an influence okay that looks better and we can use the lip influence attribute to move the lips back because that's the master control controlling how much the jaw influences the lip controls now this is good but it can get better with some simple adjustments what we can do now is create an offset to when the controls move back to the lips so in effect giving us a zipper effect as the lips close let's select the first outer controls along the bottom and find the remap node again this time we are going to change the input min and input max attributes these will create the offset so we can dictate when the control starts and stops moving if you remember the lip influence attribute had a maximum limit of two not one this is to allow us some room so the lip controls have this offset so for these first controls let's start them moving at 0.25 and then they reach the end point at 1.25 so we're effectively adding a 0.25 offset if i adjust the lip influence attribute now you can see they start moving before the control at the end and they reach the upper jaw first too so we have a ripple effect let's adjust the next controls and again we will just add another 0.25 on top of the previous controls values so 0.5 and 1.5 next will be 0.75 and 1.75 and these will be one and two so we have reached the maximum of our lip influence attribute with the value two let's test this now okay so we are getting that zipper effect now where the lips close outside first this can be useful for quickly making that ooh or r sound let's whip through and update the upper lip controls too and these values will mirror the ones below them okay those are done we have a nice gradual blend as the jaw opens too and these can still be adjusted using the output max attribute to limit how far each control goes and remember we've just been influencing those driver groups the animator still has the option of going back in and manipulating each of these controls manually as well one thing i forgot to mention is to make sure you put all the follicle joints into a selection set so you can quickly select them all when it comes to binding the model if i select them you see we have all the follicle joints selected okay so that's the lip set up and the beauty of this process is it can be used on a humanoid character too like in this example right let's move on to the eyelids next and with these controls we can use the same setup we applied to the lips to get us started we will use the same nodes but then build upon that network to give us more functionality so here you can see the network and this has been added to all the eyelid controls so if we rotate the eye joint the controls simply follow it and remember with the eye control driver groups they are set to pivot around the eye joint just like the lip controls shed the same pivot as the jaw joint at the moment all the remap value nodes are left at their default values so we're at the same stage as we were after we'd added all these into the lips so we need to implement the same offsets as we did with the lip controls but with the eyelids we need to take a different approach because we need to also include a blink so the controls also need to use this attribute okay so let's disconnect the eye joints connection first we're going to use the multiply divide node to instead drive the blink and as the blink is only moving along one axis we only need the input 1x attribute so connect blink to input 1x if i adjust the blink now you will see we get a small movement this is because the remap value node is at its default value so we need to adjust them to get more movement now remember that the input two values on the multiply divide node are being driven by the i influence attribute which is the same as the lip influence attribute we used on the mouth and this has a maximum value of 2 which will allow us to add that sort of zipper look effect as it opens and closes as this is the middle of the eyelid we want it to move last so let's set input min to 1 and input max to 2 so it will only start moving when the i influence attribute goes past one at the moment it's set to two so the eyelid control will be at its end position with this in mind we can now edit the output max attribute to dictate where they should be when the eye is closed now i've already worked out these values so i know that this should be 40 but you may need slightly different numbers depending on the eyes you're rigging so that's now jumped down to its closed position i can adjust the blink attribute and the control opens and closes the eyelid okay so with that one done we now need to update the rest of the eyelid controls let's graph the eye joint network and remove these we can delete these because we want to remove the eye joints connection now we need the eye control and connect the blink attribute to each multiply divide node's input 1x attribute that's stage one done let's find the eye control in the outliner to save zooming in and out again we can hide the joints too now we just need to go through and update the remap notes just like we did with the lips so select the control and pick walk up twice to get to the driver group now open the remap node so remember the first two attributes are the offset to give us that ripple effect so let's make these less than the middle control so 0.5 and 1.5 and the output max is the position so i'm going to set this to 32 and the control moves down to its closed position okay on to the next control and i can leave the default values here because i'm working in increments of 0.5 to get a more even transition let's set output max to 32 again so that's the upper eyelid set up so let's test the blink okay looks good so far we can also use the eye influence attribute to adjust how much the blink affects the eyelids and as we reduce it we get that nice sort of peel ripple effect i'm going to speed things up here as i update the lower lid remember that your output max values might be different so feel free to experiment with your own values okay let's try this again so the i influence works it's important to point out that the blink won't work if the eye influence is set to zero because you have specified that the blink has no influence over the controls if we set the eye influence back to two the blink works again and this may look strange at the moment but remember that the follicle joints on this ribbon will eventually be driving the eye geometry so the model will eventually close its eyes here it is from the side view so you can see the gentle arc we get if you decide to edit the position of the controls using the output max attribute make sure you don't do it in the channel box you see if i adjust it it simply snaps back to one instead open in the attribute editor this way you can adjust the slider to tweak the position so that's the blink setup so now let's look at adding in the ability to adjust where the eye closes so we can adjust the blink height this will simply alter the end position for each control let's bring back the node editor and let's graph the driver group adjust these so we have the blink height attribute here and all we want to do is add this to the output max attribute on the remap node so we can use a plus minus average node to do this so create one and call it the same as the rest of the network but with blink on the end connect blink height to input 1d0 and also input 1d1 so we can now see that attribute in the channel box we can delete that connection now it's visible and we want to set input 1d1 to the output max value so that's 40. now connect output 1d to output max you see this is now set to 41 because it's adding the blink height attribute to the original value of 40. we can adjust blink height now and the control moves to set it to the new location of the blink we can also still use the blink attribute and the control followers okay let's set blink height back to zero so the control is back in its default position and on to the next control and we just set up the rest in the same way so we find the driver group and graph it into the node editor create a plus minus average node and rename it connect blink height to input 1d0 and input 1d1 then disconnect the connection to input 1d1 now set input 1d1 to the output max value and then finally connect output 1d to output max as easy as that ok i'll just speed things up as i work through the rest of the controls this is why i love using nodes they are so flexible and it leaves things open for us to add even more control and functionality into these controls so there we go we can blink the eye and we can adjust the influence of the blink to get that peel effect or sticky lip effect if that's what you want to call it which can be good for some more cartoon style poses we can also adjust the height of the blink too let's look from the side so you can see it's moving around the eyeball which is good and no matter where we put the blink everything still works okay good we're going to add one more control now although this is more automated as you move your eyes to look at things your eyelids follow so we're going to add that functionality into the rig 2. and with the network we already have it's a simple addition okay back to the node editor and graph one of the driver groups let's organize this and also bring in the eye joint so all we want to do is add the rotation of the eye joint to the rotation of the driver group again we can use a simple plus minus average node to achieve this so create one and let's add i inf to its name this time because we're using all three axes x y and z we want the input 3d attributes here so connect rotate from the i joint to input 3d0 we now want the main output from the multiply divide node here the one connected to the driver group connect that to input 3d1 now connect output to 3d i'll zoom in a bit so connect output 3d to the driver groups rotate attribute we can delete this now if i rotate the eye joint the control follows now now depending on the type of rig you are building you may not want a full one-on-one rotation because it can end up looking like the eyelids are stuck to the eyeball so let's reduce the amount the controls move and again we can use a multiply divide node to do this let's delete this connection for now and duplicate this calling it i inf multi now connect the i joints rotate attribute to input 1 and the output from the multiply divide node goes into input 3d0 we need to change these values now multiplying the rotation by 40 is far too much let's just use 0.25 now so we get a quarter of the movement we can always connect these to a new attribute so the animator has control over how much the eye affects the eyelids okay if i rotate the eye joint now the control moves but only a fraction of the amount of the eye so that's one control set up so i'm going to work through the rest and also update the opposite eye and i will be back in a sec okay those are all set up now and on both eyes what i've also done is use a simple aim constraint on the eye joints and we've done this a number of times before it's just so that the eyes follow the controls as i move the control the eyelids move too to follow the eye i can move the global control and you can see that it's working on both eyes now and as mentioned before you can easily add an attribute to this control so the animator can adjust how much the eyes affect the eyelids actually i think i will add that in before the next video we have the blink on both eyes and the eye influence and also the blink height in addition to all this the animator can also use these controls to pose the eyelids if needed with the other ribbons we don't need to do anything else really the controls we have are good enough for the animator to quickly pause the browse for example and the movement is passed gradually down the ribbon to the next control the same with the snout control what i would suggest is if you require a more defined pose in the snout like in this example then blend shapes are probably the best approach you can also use blend shapes for the brows too connecting a control to the blend shape will make animating them quick and easy for the animators too okay so i think what we need to do now is see these controls influencing the model so i'm going to quickly bind it and update the whites so i will be back in a second so here we have the skinned model we can move the eyes and the eyelids follow the animator can also blink the eyes and adjust the blink height you see the eyelids still move even when the eye is closed we also have that nice peel effect too let's zoom in on just the model okay everything else moves with the head control too so make sure you parent the controls to it if you're not sure please check out the source files to see how i've constructed the hierarchy we have that simple snout control which gives us some flexibility with the nose and we can use these controls to pause the browse to form facial expressions remember that i only used a few ribbons in this rig but you can easily add more which follow the natural muscles in the face which will give you more control the animator can also adjust the nose and the nostrils and remember these were just simple joints so it goes to show that you don't always have to have complex systems in your rig to get good results the animator can also oppose the lips as well so we can make him snarl for example we have lots of controls for the animator to play around with now if you wanted a more defined shape when the jaw opened you can also use blend shapes because this is ribbon based we can use other deformers just like we did with the legs so you can tweak the shape and then trigger the blend shapes as the jaw opens you can do this the traditional way or use the shape editor you can also do the same with the eyelids too to get exact shapes okay before we finish we have one really quick update to do to the head now you see if we scale it yep it breaks the head becomes deformed so we need to fix this so the head is scalable we added squash and stretch into the rest of the body so we should include some here and this is just a really basic scale option we will be looking at more complex options when i move on to the fully flexible headrig course i have planned in the future okay so how do we fix this well first we need the head joint to scale with the control and we can simply connect these with the connection editor so connect scale to scale and some of the head pops back into position so let's fix the rest now and this is a simple fix if we look at the jaw joint in the attribute editor we have this checkbox segment scale compensate when enabled this will maintain this joint scale regardless of its parent scale so this is what's happening with the jaw eyes and snout so all we need to do is go through and disable this okay good now the eyes and the snout so that's the head back in proportion and we can scale it we can squash it and flatten it like i said this is a very basic option to get some squash and stretch into the head but it's a quick fix that adds some functionality to the head rig okay so that's the face rigged and now you have this process nailed you can think of this as the foundations for you to build upon what we're going to do in the next video is dive into the mouth and build a rig for the tongue okay another video over i hope you enjoyed it and learned something new thanks for watching right to the end and remember to hit that like button and also subscribe to keep up to date with future videos if you have any questions or suggestions please post them in the comments below or alternatively why not join the ant cgi community discord group where me or other members of the community will be more than happy to help remember to help support future content and keep these videos free please visit the ant cgi store or join the ant cgi club alternatively if you would just like to show your appreciation for these videos why not treat me to a coffee at my coffee page the link is on the screen now and in the description below thanks again for watching this is ant cgi signing off and i will see you on the next one you
Info
Channel: antCGi
Views: 4,355
Rating: undefined out of 5
Keywords: rigging, maya, autodesk, maya3d, rigging in maya, rig, 2019, maya 2019, gamedev, game art, game development, game rig, game rigging, how do I, maya 2020, canine, quadruped, dog, patreon, labrador, controls, deformer, antcgi, flexible rig, dog rig, 2020, maya2020, nodes, multiplydivide, value remap, remap value, remap, ribbon, follicle, face, face rig, mouth, jaw, lip, brow, eyelid, eye, sticky lip, blink height, blink, sticky, lid, eyeball, nurbs, ribbon tool
Id: PiW-qCWtgsw
Channel Id: undefined
Length: 43min 51sec (2631 seconds)
Published: Tue Jul 13 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.