Lil Dragon Model and Rig
TO VIEW AN ANIMATION OF THIS DRAGON CHARACTER, PLEASE SCROLL DOWN TO THE BOTTOM OF THIS PAGE
First project for Full Sail’s Computer Animation finals Internship. Created using Maya 2011, ZBrush4, xNormals, and PhotoshopCS5. Original concept by Kei Acedera from Imaginism Studios. Modeled, textured, mapped, rigged, lit, posed, and surroundings by Kyle Havrilesko. Modeled in 51 hours and rigged with a month with squash/stretch, 50 blend shapes, full iris and pupil dilation, and RGB color changing texture sliders.
My mission for this first internship project was create a model with blend shapes and create an advanced shader. Once I thought this task through, I decided to fully rig the model to compete with other modelers for studios that prefer their character modelers to be able to rig the characters as well since I was already doing blend shapes for him.
My first task was to take the concept above and draw up the exact character I was intending to model. For me, drawing the character in its orthographic views and other views helps me understand what i am working with and provides me reference pictures that I could place in maya to alter proportions to the correct size or better. There were so many variations of this character from the artist, Kei Acedera, that I decided to push that cute factor and find what was working for each of these concepts. If you look closely, each one is different in some way, so I combined the parts I liked and even added some extra things to the mix. Below is my rendition of it.
After my creative decisions were applied and planned out, It was now time to start sculpting out my basic shapes. For the complex shapes that most cartoon characters are comprised of, I like to start my model off in ZBrush using ZSpheres for initial shaping. Once I had the shapes placed where I wanted them, I created an adaptive skin based off of the ZSphere rig I had just created.
This was my basic blocked-out model to work with while I constructed my more complicated shapes. This adaptive skin was made into a new ZTool and I sculpted him into a more desirable form before I began planning my topology for the character. By subdividing the characters geometry, I was able to achieve much smoother transitions along the characters silhouettes and in between body parts by utilizing the smooth and move brushes. Once he was polished up, I then used the polish brush to find my characters planes and and important areas of focus that required specific geometry and edge flow. It was absolutely necessary to also sculpt out the anatomical details need for deformation determination as well such as the eyes, nose, mouth, knees, elbows, major wrinkles, jaw line, and brows. For this, I used the simple, clay tubes, and move brushes and smoothed them out softly. The model now had most large details applied and was ready for re-topology.
Now, before I start the process of re-topology, I like to plan out what is going to go where and how instead of just trying to wing it in the middle of the process which hasn’t worked very well for most people in the past. The way I do this is by going to the Polypaint menu and selecting colorize. Pick a very easy material to see your painting and insure your sculpt has a very high poly count, because the resolution of your painting is based off of each vertex in the sculpt. I like to choose the white SkinShader material with black painted lines for planning my topology; it allows me not only to see better, but allows me to zoom out and check my density from afar. Apply symmetry with only RGB turned on to make this task simpler and start planning topology inside the face first, then work your way down the rest of the body. To erase your lines, simply replace the color with your alternate (skin) color. When planning your topology, leave and acknowledge the holes you will be placing in the geometry for the eyes, nose, and mouth. This is what the face should look like and geometry applied correctly.
The model was now ready for re-topology. To start this off, save the ZTool of the dragon you have so far, and you will need to open up another ZSphere file. Place a single ZSphere in the scene and go into edit mode. Select the dragon mesh in the rigging menu and then click edit topology in the topology menu. I was now set up to start placing points where the geometry needed to be and this is the adaptive skin created from the topology I drew out.
After my topology was corrected, I exported the mesh as an OBJ for use in Maya. I was now able to size up my character to my reference drawings to check proportions using the import image plane function assigned to the orthographic cameras in Maya. Once everything was carefully imported into Maya, I was able to change all the body proportions of my model to match my reference and continue on to advancing the character further.
As you might have noticed, my dragon has been cut in half. I often do this by creating a my geometry with an edge that runs perfectly down the middle of x axis and character. I will be able to construct half of my dragon and allow myself the ability to mirror my work to the other side once complete. Using the extrude tool, I was able to shape out the geometry to branch out ears, toes, wings, nostrils, eye sockets, and a mouth cavity from the geometry I had planned for in the re-topology. Using a sphere, I was also able to quickly apply an eyeball for reference when constructing the eyelids more properly and by using a thin cylinder, I was able to mesh out accurate wing webbings to fit nicely between its ligaments.
Although I had already created a mouth cavity, I modeled the lower jaws protruding teeth and lattice deformed the lower jaw and teeth to manipulate them open and shut at will. This was important in order to position the teeth and lips correctly for opening and closing of the mouth, and to give me the ability to see into mouth for construction of the tongue and gums. As a cartoon modeler, I often take artistic liberties with my models and after researching various reptilian characters, I found things that made the character really stick out and show emotion. These things were large scales along the brows and interesting designs within the scales, colors, and spines. So I took these things and threw them into my characters brew. I suggest modeling certain parts of the model separately from the main mesh such as the nails, teeth, eyes, or other extrusions deemed necessary to avoid weird/excessive geometry, to show crisp breaks in the silhouette, and to assign alternate materials to those objects.
I was now almost ready to bring this character back into ZBrush for medium and high resolution detailing. The last task I had while in Maya was to lay out my UVs. Since these objects were separate, I had placed the main dragon, the wings, the eyes, and the rest of the extrusions on their own separate map. The objective behind a good UV layout is having your UVs laid out evenly and smoothly to avoid map stretching, and to create seams, if needed, in areas that would not be very visible. This is how I managed to lay my main UVs out for the dragon.
Now, when I need to import my characters back into ZBrush and the character is broken up into multiple pieces, I use the Groups Split method. I select all the pieces of the dragon in Maya and export the model as an OBJ without combining the objects mesh together and place the group options on in the export settings. Once this OBJ is imported into ZBrush, you can go into the Subtool menu and select Group Split. This will break you mesh up into its separate subtools without having to import and append every item onto the mesh. This way, I can also sculpt each piece separately and keep the UVs from overlapping each other once you build a Normal map and textures.
Once I got this model smoothed back out by increasing the subdivision levels and utilizing the smooth brush, it was now my job to polish out the main shapes further and add new features to the his details, such as wrinkles around the eyes, muscle grooves, and knee folds to add more believability and life to him. I really had to study reptilian skin textures and types to figure out how to approach certain area like the the throat area, eyelids, and lips due to the fact these area had to be exaggerated regardless.
After this was done, I made forced myself to skip over some of the deeper detail the model might have accurately needed due to the fact that this was a cartoon character and advanced anatomy pulls from the character if it is too extreme. So I dove right into the very small and tedious details, scales. Using the right approach to this is very key. It could save you countless hours and layout your details much better than you could possibly do by scratch. Im talking about laying out alphas. Through out the whole process of sculpting out scales on this character, I was utilizing the drag box alpha option to not only cheat what scales looked like but how they were positioned in regards to the flow of the characters skin. These alphas were not even the final look, because I eventually had to go over them again using the DamStandard and Polish brush. Below is a shot of his face and one of my favorite alphas I used in laying out the scales.
This was a very long a tedious process regardless of technique, unless you have some super scale brush. Once my scales were sculpted out, the model was completed in ZBrush. I prefer to lay out a simple texture on my characters within ZBrush while I have the option of laying out my basic areas of color and utilizing the high resolution character to identify the specific areas that will be details within the normal map. For this character, I was able to designate a group of scales to provide a line down the characters body, enabling me to produce interesting designs and stripes based off of scale discoloration using Poly Painting and converting said Poly Paint into a texture map projected onto my laid out UVs. Once the texture map was made from the Poly Paint, I just had the simple task of cloning the texture and exporting it as a Photoshop file.
My next step was to export a high res mesh and a low res mesh for constructing a normal map in xNormals. Although I could just utilize the base mesh OBJ I started this sculpt off with, you never know what might have gotten moved around, so I always find a comfortable resolution for animation to export a low resolution mesh OBJ from and the highest subdivision level for the high res mesh OBJ. With this character, I desired separate normal maps and materials, but in the case of game characters and such, you would want to export all the sub-tools together if they can all fit in the UV space. Insure all the resolutions are where you want them to be, because once you merge the sub-tools, say goodbye to all the other subdivision levels. Once inside of xNormals, I placed my high resolution and low resolution meshes in their correct positions and baked out the map to a decent resolution. Insure your range on the meshes are good for your map. I seem to find the default 0.5 is a little too much for the details I usually include and I would like to avoid reading adjacent geometry. Bake out the map and apply it to the low res mesh as a texture inside of Maya. This is an easy way to check your map seams and discrepancies out without moving into a lagged high resolution mode. Although a normal map is a very delicate and technical thing, I do not hesitate to take the map and texture into photoshop to bandage up the messy areas with a soft and opaque brush and the clone tools.
Now that I had a texture map pumped out of ZBrush, I was able to transfer that into Photoshop and bring a more advanced and better resolution to my texturing. I also know where exactly my scales lay and create an addition to the detail by inserting my normal map over my texture with an overlay. What I intended to with the textures is to give the animator the option to change the characters colors using simple RGB sliders and for this, I had to create a value only texture with lights and darks so that the color manipulation in Maya would not be obstructed by a weird base color. So all I had to do was to get my basic details on the texture and simply place a saturation node over the whole piece to take it all away and adjust the lightness and darkness of the texture in the areas I actually wanted color change. There were other areas that I designated not to have color change such as nails, mouth, eyes, and teeth. These areas you can mask off from these desaturation nodes and do not connect these pieces to the sliders if the full material should not receive color.
Im sure you noticed the strange discoloration of the texture by now. I did this over the saturation layer because as I studied reptiles such as chameleons, they have patches of discoloration over the various parts of their body that add a realism to them. Once the materials were at a decent and presentable stage, it was then time to rig him, but I had to plan this out carefully. This was a cartoon character, so I wanted him to have some stretchy systems and I had never rigged a quadruped before either with wings none the less. The first task was to learn up on a stretchy rig, so I starting things off with a stretchy spine. This process starts off with an IK spline setup and I connected these joints and curves together as such. Now once this is all plugged in, you must create an arch length node from this curve to plug that value into the X scale of each joint using a multiply/divide node.
Im sure I have already lost a majority of you, but there are many tutorials out there to help out with this process. Well, I had a base now to work off of. The next step was to construct hips and back legs. I separate my rigs into different pieces to avoid inheriting transformations by using a group pad, which is basically to group nodes holding the joints in place but catching all the transformations before they attach to the joints. So the hips are basically just one joint branched off both left and right into where the leg attaches. Then I added another group of joints padded to the end of the hips for the legs. These joints needed to be driven easier using an RP/IK solver attached to a control icon that I often make out of curves in various shapes. After that I constructed a group of pads for the foot and reverse foot method of driving the feet with the legs that could pivot the legs off of a foot roll on the balls of the feet, its toes, or its heel. One foot and leg were all I needed in order to just mirror the same setup to the other side. It is also a smart idea to set up your master controls to start parenting and testing the rig.
My next challenge was the tail. The way I attacked the tail was simple. It was already long enough that it didn’t need to stretch or squash, so I just hooked up a normal IK Spline setup with controls parented to clusters in the curve information driving the joints. These controls I then set up to be driven by attributes in the hip control using Set Driven Keys for basic tail curve and wag motions, but also be able to translate and rotate individually. Now it was necessary to put a large amount of joints within the tail to receive a smoother bending motion.
I had then moved to the torso. What I needed first were some shoulder blade and clavicle action for my front legs. This is done by placing two pairs of joints like shown below and hooking those chains up to SC/IK systems that one parent into the other. These joints are group padded together as well and parented into the spine end joint. We should now have some correct shoulder movement joints to base our front limbs off of. With a quadruped, the front limbs look much different from the normal legs we often create. What I have done is the same setup as the back legs, but backwards and ending shorter. This way, I have accounted for the high elbow due to the character walking on the balls of his front feet. For the feet, all I needed to do was set up an extra joint coming down off the leg end and assigning it a SC/IK system to be hooked into the foot control. I also took the time to form out the root of my characters wings with accurate shoulder joints and IKs to be driven by the controls assigned to them.
Now at this point, I felt like working my RGB slider into the mix of things. The way that I figured out this process was very simple. The one thing sliders require is a key-able attribute and it just so happens that each file node in Maya has an animatable color offset attribute for Red, Green, and Blue. To find this attributes in the attribute editor, first select the material your texture file is in within the Hyper shade menu and within the inputs is the file nodes and their attributes after clicking on them. Then simply set up a Set Driven Key plugged into the sliders translation and the value of the channels intensity. I just parented these sliders to the Master control and provided a visibility control on the control. I was also in the mood to place toe joints along the back feet to get ready for toe movement padded to the ball of the back foot.
This is where things got difficult, very difficult. I had tried wanted a lot from the neck rigging, I think maybe it was too much. My desires were to have a stretchy neck that could also kink into sharp transitions, but maintain normal functionality of an IK spline. Too much? Well, I developed a very complicated series of stretchy RP/IK systems that had an IK tolerance attribute applied to each control and pole vectors constrained properly between the two controls. Each IK also had a curve attached to the beginning and ends of each system, controlling the scale of each joint similar to the stretchy spine I created earlier. Each segment of the neck had the ability to be translated, rotated, or stretched, but there were a lot of issues that I had to unfortunately overlook to continue on with this rig.
I then moved on to the wing ligaments which I developed using simple SC/IKs over multiple joints since wing ligaments are basically fingers and a thumb that I can control as a hand of sorts, but with more flexible bones and movements. It was important to place the breaks in the joints aligned to each other in order to keep wing bending simpler and cleaner. The wing thumb I found to be more flexible than the others, so I assigned an RP/IK system instead.
All that was left was the front toes, the spines, and the facial features. Since I told myself this was going to be a blend shape project, I reserved the functions of the eyelids, eyebrows, nostrils, lips, and eyeball dilations to blend shapes. The rest of the function had to be joint driven like the jaw, eyeball movement, ears, and tongue. The jaw and upper head I had padded to the head control first to arrange everything else in the proper place. The movement of the jaw was to be reserved to be driven by Set Driven Keys in front of the face, so no controls on that one until the geometry was bound. The eye joints were placed in the exact middle of the ball and driven by aim constraints of the controls. The ears I rigged with two sets of joints for ear curling and flapping. The teeth were parented to the top and bottom jaw. Finally, I need the tongue to be able to stretch outside the mouth, but I didn’t need the whole thing to stretch. So I rigged up the tongue to stretch similar to the neck but only at the base. The rest of the tongue was Spline IK driven.
The spines running down his head, neck, and back had to have something to locate where the need to bee within the rig. So I laid out yet another stretchy system to follow along the spine but with the correct arc in the back. Each chain of spine joints for bending were run by SC/IK or IK Spline systems and attached to their assigned joint within the alternate stretchy spine system. Using the controls as handles, I was also able to group pad each one with a connection for movement of all spines in a group at once. The ones along the head were treated the same as the on the back, but it wasn’t necessary to have the supporting locators as a stretchy system. The spines across the neck had joints constrained to locators constrained to particular vertices on the dragon actual geometry. Although this didn’t work in my case, I still accomplished this by creating a separate piece of geometry that was equally weighted to hold these for me inside the neck due to geometry of dragon giving me errors.
The way I set up my facial controls make the face easy to use and see while using the controls. The blend shapes I have created off the base mesh share the same center pivot to keep the blends consistent. All of the facial emotions in the picture at the top where made using face joints and blend shapes. I have even taken the spine stretch to the next level with a blend shape that sucks the geometry in anatomically accurate as the torso moves along the X axis and pushes out when pressed towards the hips. Squash and stretch. After all my blend shapes were completed, it was then time to bind the mesh to rig.
I couldn’t possibly go into details with binding and painting the mesh, because it is all done by eye and cant be taught by anything else but by having a good sense of anatomy. the only tip I can give you is to not just weight your rig onto the mesh in its initial pose. Throw your character into many different poses and smooth out the mess ups within those poses. The next thing on my list of instruction is how I created an eye that utilizes pupil and iris dilation.
The way that my eyes are constructed is not too hard to understand if you know what the eye really looks like. The cornea of the eye is slightly lifted and the iris is concave within the cornea. The pupil is the hole within the iris. Now you know. How we do this is not that much harder. What I did is created a sphere and raised the last few edges for the smooth lifted look of the cornea. Now we need to take that sphere and UV it so that this cornea area is directly in the middle of the grid. We will need to then create a black and white circular ramp node to plug into the eyes transparency attribute. This ramp should look like the opposite of the normal eye and you should adjust the ramp so that white only covers where the cornea is transparent over the iris. With a slight drop off, the illusion of a cornea is then present. Gloss up that material to receive the corneas specular effect. Now construct the geometry like shown below within the eyeball and combine it all. Using blend shapes and texture, you will be able to morph the shape of the inner iris for pupil dilation. The same goes for enlarging the iris. The pupil should have a surface shader assigned to it for the hole effect.
Another important thing to remember while constructing blend shapes is to insure they work with the geometry and with the motion of movement. For Blend shapes like smiles, the motion must have a mid point added into it to achieve that awesome curve motion and the eyeball often penetrates the lids during your opening and closing shapes. What I like to do is plug the full shape into the desired mesh and bring it to its half way point. Copy that mesh and adjust it to your liking and apply that shape to be achieved 50% into the full Blend shape. You now have a mid shape. Another thing animators love is being able to control the left and right side of the face independently. Symmetrical facial movement and emotion is not natural. So to remedy this, still model these shapes symmetrically and then apply this shape to a mesh duplicate. Select half of the vert assigned to this shape on either side of the head and assign all of their connections to the blend shape to zero in the component editor. This will be copied into a half shape mesh for asymmetrical movement and the process is repeated for the other side.
Well, that about does it for this character. I was able to find a beautiful panorama of the mountains to give this guy an awesome environment and just placed him on a spherical hill I quickly applied a texture to. The caterpillar and butterfly were modeled and rigged within a night and they were not something I would want to brag too much about. This character is currently getting animated and rendered for my demo reel and for this website. He will also be printed out into a 3D sculpture using a 3D printer that applies color and detail remarkably well.
I hope you enjoyed this tutorial and I will try to keep all the updates for this character on this page. Thank you very much for reading and please keep in touch to see more amazing characters.