Here is my final rig for my dragon. I've had some problems a long the way and it isn't how I would want it to be; however I will have to make-do and know the limitations and animate to the best that it will allow me. I've managed to include joint based facial rigging into my character, this gives me more control than with blendshapes, although I have included a couple of blendshapes for specific emotions in order to speed up the process. Blinking, happy and sad are the blendshapes that I created, and these can be controlled through the facial and eye GUI. As mentioned before, my character will have plantigrade legs, so because of this I made sure that each foot had a foot roll. This will allow me to achieve a more realistic placement of the foot on contact and take off from the ground. There has been challenges, especially with my character being smaller and rounder than I'm used to, weight painting was a bit more complex, I had to make sure that the skin would fold nicely and correctly when the spine would rotate. If I had more time I would have loved to have spent longer and making sure each aspect of the rig worked correctly, however I need to now move on to animation.
Showing posts with label Rigging. Show all posts
Showing posts with label Rigging. Show all posts
Monday, March 31, 2014
Saturday, March 15, 2014
IK/FK Leg Switch
Setting up an IK/FK switch is fairly easy to do. Once you have your joint chain in the correct position you just need to duplicate it twice, these being your IK and FK chains. After creating the IK spline in the IK joints, you can then orient constrain both the IK and FK chains to the base chain. This creates the connect between all the joints, all that needs changing to switch between them is the weighting. By creating a locator or an object, you can use set driven keys to create a more accessible switch. The locator being the driver whilst the IK or FK weight, being the driven. I created this setup so that you are able to have a blend between IK and FK, so it's not just one or the other, this can give greater flexibility and allow for more control whilst making it easier to blend between the two. It can be hard to switch from IK to FK without a blend, the jump can be quite sudden and you have to make sure the hands or feet are in exactly the same place in either mode.
The new IK system in Maya comes with a built in switch where you can blend between IK and FK, this is good to know and could come in great use, but it's always useful to know how to do it the classic way, just in case anything goes wrong. There are a few things I need to work out on my switch, there is a bit of flipping in one of the joints when blended. I also need to figure out how to make the FK controls invisible when set to IK. You would connect the locator IKFK node to a condition node, under its first term within the hypershade, the problem I had with this was that Maya crashed every time I tried to do this. I'm not sure why but I will try it on another computer to see if it will work or not.
The new IK system in Maya comes with a built in switch where you can blend between IK and FK, this is good to know and could come in great use, but it's always useful to know how to do it the classic way, just in case anything goes wrong. There are a few things I need to work out on my switch, there is a bit of flipping in one of the joints when blended. I also need to figure out how to make the FK controls invisible when set to IK. You would connect the locator IKFK node to a condition node, under its first term within the hypershade, the problem I had with this was that Maya crashed every time I tried to do this. I'm not sure why but I will try it on another computer to see if it will work or not.
Friday, March 14, 2014
Flexi Rig
Before I move onto rigging my character I wanted to try out a few different ways of rigging. I followed a tutorial on Digital Tutors: Rigging Quadrupeds in Maya where I created a flexi rig. A flexi rig allows a good amount of flexibility and twisting, along with squash and stretch whilst retaining its volume. Being a modular component, you only have to build it once, then you can implement it and edit it into other models. By using a twist deformer rather than a spline IK, it can twist further, past 360 degrees allowing more deformation and flexibility.
As part of this rig setup I had to use the Node Editor in Maya. This enables you to view, edit and create new node connections. When adding the twist deformer onto the blendshape surface and connecting it to the base surface, when rotating it did not rotate in the same direction. To change this it had to be done within the Node Editor using multiply and divide utility. I will need to go back and watch the tutorials again to get my head fully around it but the gist of it is that by connecting the rotate x values of the control groups to the multipliers, and then to an plus/minus average node, this will allow you to be able to control the end angle with the mid and end control, or control it with all three controls. The plus/minus average node ensures that if the mid control is turned on, whilst the end control is off, the end control stays in place.
Below is a video of me testing out the flexi rig I created. There are switches between the mid and end control which allows certain parts of the rig to be moved at a time. This can allow for more control over certain parts e.g having on the middle controller being able to bend. From this I would be able to get some good deformations and a wide possibility of movements. I'm going to also test out an FK/IK spine to see what produces the best result before deciding on the route I'm going to take with my dragon rig.
As part of this rig setup I had to use the Node Editor in Maya. This enables you to view, edit and create new node connections. When adding the twist deformer onto the blendshape surface and connecting it to the base surface, when rotating it did not rotate in the same direction. To change this it had to be done within the Node Editor using multiply and divide utility. I will need to go back and watch the tutorials again to get my head fully around it but the gist of it is that by connecting the rotate x values of the control groups to the multipliers, and then to an plus/minus average node, this will allow you to be able to control the end angle with the mid and end control, or control it with all three controls. The plus/minus average node ensures that if the mid control is turned on, whilst the end control is off, the end control stays in place.
![]() |
Node editor - twist |
![]() |
Node editor - squash and stretch |
Thursday, February 7, 2013
Rigging / Blend Shapes
As my character is a quadruped, I knew the rigging set up would be slightly different so in order to get to grips with this and create a fully working rig, I followed tutorials online which gave me a basis to work from. My previous knowledge of rigging still came into use with mirroring joints and putting in IK spline. I found that researching into a cat's skeleton was really useful as this showed me where to put the joints and also the names. With cats, they have an extra bone on their front legs above what essentially would be the ankle, this allows more movement and flexibility. Because of this set up, the placement of the IK's would be slightly different to how a biped would be, so I added in an extra IK between the joints to allow for this movement. I realised that after I rigged and weight painted the model, I could have done with less joints in the neck as a few of these aren't really needed and it would have been easier to weight paint with a couple less. I originally planned to include joints for the eyebrows as this would allow me more control over this area, however I ended up forgetting to put these in and I would have had to unbind the mesh and do it all over again. Instead I had created blend shapes for the eyebrows, including the main expressions I will need.
Using the component editor was something I came across within the tutorials and found it a really useful tool. By going into component mode you are then able to select certain verts and adjust their influence. This is a more accurate way than just weight painting and allows more control, obviously this should only be used for small areas, areas where it's hard to weight paint or where some adjustments are needed.
When it came to creating the blend shapes I came across a major issue, when using the blend shapes they ended up distorting the mesh in areas that were not modified in any way at all. I was told by my tutor that some way along the line the mesh got distorted from the original one, and seeing as I duplicated the mesh before I bound it every time the blend shape is used, it always wants to go back to how it was, hence the deformations in other areas of the geometry. To try and fix this problem we first unbound the mesh from the rig and exported this out separately, by doing this I then had the original mesh back. I then imported it into the scene I was working on and began to detach all the heads of my blend shapes from the body. Seeing as only the tail and right front foot was affected, I would not have to re-do all the blend shapes again. After this I then re-attached the heads to the new body. At first this seemed like it would work, however in the end the blend shapes became destructive. We found that only a couple were really destructive, so by taking those away and duplicating a blend shape that worked correctly, we used that as the new geometry. This process took longer than I anticipated especially seeing as I had to re-weight paint my character and attach all the controllers again, however it is still better than having a broken character! I have learnt many new things so it wasn't a waste of time, and also by having to re-do certain aspects I understand the process more and am able to do it in a much faster time than before.
Using the component editor was something I came across within the tutorials and found it a really useful tool. By going into component mode you are then able to select certain verts and adjust their influence. This is a more accurate way than just weight painting and allows more control, obviously this should only be used for small areas, areas where it's hard to weight paint or where some adjustments are needed.
When it came to creating the blend shapes I came across a major issue, when using the blend shapes they ended up distorting the mesh in areas that were not modified in any way at all. I was told by my tutor that some way along the line the mesh got distorted from the original one, and seeing as I duplicated the mesh before I bound it every time the blend shape is used, it always wants to go back to how it was, hence the deformations in other areas of the geometry. To try and fix this problem we first unbound the mesh from the rig and exported this out separately, by doing this I then had the original mesh back. I then imported it into the scene I was working on and began to detach all the heads of my blend shapes from the body. Seeing as only the tail and right front foot was affected, I would not have to re-do all the blend shapes again. After this I then re-attached the heads to the new body. At first this seemed like it would work, however in the end the blend shapes became destructive. We found that only a couple were really destructive, so by taking those away and duplicating a blend shape that worked correctly, we used that as the new geometry. This process took longer than I anticipated especially seeing as I had to re-weight paint my character and attach all the controllers again, however it is still better than having a broken character! I have learnt many new things so it wasn't a waste of time, and also by having to re-do certain aspects I understand the process more and am able to do it in a much faster time than before.
Thursday, November 1, 2012
Rigging and Weight Painting
The rigging process for Gloria was quite simple as nothing really differed from the alien exercise I had previously completed. The only major change was adding more joints to her hands as she had been modelled to have 4 fingers and a thumb. I had to adapt the rig slightly as our character was more stylised and her coat affected the way her shoulders would move compared to a human. For this I had to move the shoulder joints down further than they normally would and the clavicle joint I ended up hiding as it wasn't until the weight painting began did I realise it would affect the model quite drastically if I left them on. The clavicles ended up deforming the geometry too much and I found it easier to weight paint just the shoulders. If I could have used the clavicles it would allow more breadth of movement. The reason why I hid the controllers so you wouldn't be able to move them was because I did a lot of weight painting at that point and didn't really have the time to go back and unbind the skin to delete them.
Initially I was going to create dynamic chains for the coat so they would move with the legs in a fluid and natural movement. To do this I created joint chains that went down the sides and front of the coat, created curves that followed the joints and used the nHair system in Maya to make the curves dynamic. I then had to group and parent them in a certain order and create a sphere to go round each leg. This sphere would act as a collider (when made to collide) and stop the legs from going through the coat. I got the process correct however when it came to moving it I had a lot of issues. For one the coat geometry would never return to its original place and also found that it deformed far too much even after weight painting - as seen below.
To overcome this I had to compromise by just having the coat bound to the skeleton like the rest of the body. The coat would still move with the legs, however it wouldn't be as much of a fluid motion and because of the low poly model and the weight painting, if the leg moves past a certain point it would penetrate the geometry. The image below shows how the leg moves with the coat when bound. It took me awhile to weight paint it correctly, mainly because I duplicated the coat to overcome the backface culling issue within Unity. However by doing this I placed it too close to the outside of the coat which made weight painting a nightmare. In the end I deleted in inside part and it was a lot easier to do, so when it comes to putting it into Unity I will just change the coat shader from diffuse to the soft occlusion leaves shader which projects the texture through the geometry and you can't not see through it.
Initially I was going to create dynamic chains for the coat so they would move with the legs in a fluid and natural movement. To do this I created joint chains that went down the sides and front of the coat, created curves that followed the joints and used the nHair system in Maya to make the curves dynamic. I then had to group and parent them in a certain order and create a sphere to go round each leg. This sphere would act as a collider (when made to collide) and stop the legs from going through the coat. I got the process correct however when it came to moving it I had a lot of issues. For one the coat geometry would never return to its original place and also found that it deformed far too much even after weight painting - as seen below.
To overcome this I had to compromise by just having the coat bound to the skeleton like the rest of the body. The coat would still move with the legs, however it wouldn't be as much of a fluid motion and because of the low poly model and the weight painting, if the leg moves past a certain point it would penetrate the geometry. The image below shows how the leg moves with the coat when bound. It took me awhile to weight paint it correctly, mainly because I duplicated the coat to overcome the backface culling issue within Unity. However by doing this I placed it too close to the outside of the coat which made weight painting a nightmare. In the end I deleted in inside part and it was a lot easier to do, so when it comes to putting it into Unity I will just change the coat shader from diffuse to the soft occlusion leaves shader which projects the texture through the geometry and you can't not see through it.
Subscribe to:
Posts (Atom)