Maya modeling: Finalizing a model
We start 2014 with a bang, by bringing you the final installment in Jahirul Amin's Maya modeling epic tutorial series. In this last chapter, you'll finalize the model!
Click here to download assets accompanying this tutorial
This is the final part of our introduction to modeling in Maya. At this stage, the model is pretty much finished; I just want to make a few last-minute tweaks and also tie up any loose ends. This will include posing the model for rigging; checking for triangles and N-gons; mirroring one half of the model and merging the 2 halves together; making sure there are no unwanted open seams in the model; scaling it to match some real-world proportions and then deleting the history and freezing the transforms off the model. Once complete, the model would then be ready to pass to other departments for UV unwrapping, texturing, sculpting or rigging. Since the modeling techniques employed here have been covered in previous tutorials, I'll mainly describe and give reasons for the process, rather than detailing the tools used.
Obviously this tutorial is aimed primarily at new Maya users, familiarizing readers with one way to skin the modeling cat. However, there are many ways to skin this particular cat, and I urge you to explore and experiment with other packages and processes to see what suits you best.
A brief warning before we start: in previous tutorials I was using Maya 2012, but since the last one I have switched to the 2014 version. Therefore, the Maya scene files accompanying this tutorial will not open in 2012, and if they do there may well be slight errors. To deal with this, I have supplied FBX and OBJ files for your use.
Add a few details
The first thing I do is add some extra detail to the model. The nipples and the belly button are added by extruding outwards (nipples) and extruding inwards (belly button) and then reshaping the regions to create a more pleasing result. The finger and toe nails had been niggling me for a while so I decided to go back and work them differently. Instead of creating the finger nails directly from the end of each finger, I reshaped a polygonal cube into a nail and popped it into place. The area that it sits on was flattened to accompany this. Each finger has its own finger nail as does each of the toes. I also added some extra geometry to each finger on the dorsal side which will help to hold the form of the finger during flexion. I also decided to pop some pants on the chap to please his mother.
Create the inner mouth cavity and eye cavity
Currently, the model has 3 openings: one for each eye and one for the mouth. This may cause issues if you plan to use sub-surface scattering for the skin later on or if you plan to open his mouth for lip-sync. To rectify this, I decided to fill them. For the eyes, I created a sphere, deleted the front and then welded it to the inner portion of the eyelid. For the mouth, I selected the edge-loop where the lips ended and extruded inwards to create the mouth cavity. I continued to extrude, making room for the gums and the teeth before finally taking the polygons downwards to create what would be a neck channel.
Posing the arm
Next I want to pose the character to my preferred default position. There is nothing wrong with the current pose, I just prefer to rig a character with the arms elevated to a 45 degree angle or so with some slight flexion in the fingers. I find it easier to place and orient the joints. If you wish to leave the character with the arms at the side or maybe in more of a T-pose, by all means do so. Each default pose has its pros and cons so have an experiment. By elevating the arms, we can also test out how the mesh will deform at this very early stage and fix any big issues in topology, should they arise.
To change the pose of a mesh, I like to use a combination of joints, lattice deformers and Soft Selection when pushing the vertices around. The joints used will be created very roughly to fulfill the task of posing the character. Should we be making an actual rig to be used for animation, the creation of the joints would be handed with a lot more care. To pose the arm, I first duplicated the entire mesh and then hid the original model. I then deleted all the faces of the duplicated geometry other than the arm, the shoulder and part of the chest. Switch to the Animation menu (F2) and go Skeleton > Joint Tool. In the front view, create a couple of joints to act as the spine. Still in the front view, create a 5-joint chain going from the clavicle to the shoulder region, then to the elbow, the wrist and ending at the tip of the hand. Check the placement of the joints from all angles, making sure they sit at the pivotal points where the articulation will occur from. I simply translate the joints into place at this stage. Anatomically, my joint chain for the arm is not correct but I'm not too concerned about that. I just want enough bones in place to quickly pose the arm.
Add a joint structure to aid in posing the arm
Select the root of the arm chain and parent it to the closest spine joint. Next, select the skeleton and the arm mesh and go Skin > Bind Skin > Smooth Bind (Options). Use the following settings: Bind To: Joint hierarchy. Bind Method: Closest distance. Skinning Method: Classic Linear. Normalize Weights: Interactive. Now rotate the arm into position and fix any problems areas using the Paint Skin Weight Tool, which you will find under Skin > Edit Smooth Skin. Once you have the arm posed, select the geometry and go Edit > Delete By Type > History. You can now delete the joint chain. Fix any problem areas by pushing the vertices around using Soft Selection and repeat the same procedure to relax the fingers slightly. It's worth having a play around with the Lattice deformer, which you will find under Create Deformers. This also aids in reposing or reshaping a mesh. The Lattice deformer is a bit like the Warp tool in Photoshop and again, when you are finished with it, select the mesh and delete the history on the model.
Check for N-gons
Once the model has been posed, let's have a check for any N-gons or triangles we can tidy up. Switch to the Polygons menu (F3), select the geometry and go Mesh > Cleanup. When the Cleanup Options window appears, in the Cleanup Effect tab, set the Operation to Select Matching Polygons. Set the Fix by Tessellation to 4-sided faces and hit Apply. This will highlight all the quads on the model. Now go Edit > Invert Selection (Ctrl+Shift+I) to highlight all the triangles and N-gons. Now it's just a case of finding those troublesome polygons and doing some housework. I tend to rely on the Split Polygon tool at this stage to cut into the model where necessary. A bit of work later and the model is all in quads. To be honest, I don't mind a few triangles here and there. It's the N-gons that I will always avoid: they tend to give me issues during the skinning/enveloping process.
Zero out center points
Up to this stage, I've mainly been working with one half of the model and using the Duplicate Special tool to create an instance for the opposite side. Now is the time to create a single unified mesh. Start by deleting the duplicated half. Next, in the Front view, select all the vertices that run down the center and in the Status Bar, set the Input line menu of operations to Absolute transform. With the vertices still selected, punch a 0 into the X channel for the Absolute transform. This should snap the vertices perfectly to the center line. Another quick way to select all the vertices on the center line is to double click an edge to select the entire loop, hold down the Ctrl+RMB and when the marking menu appears, select To Vertices.
Duplicate, mirror and invert the normals
Now to duplicate the model to the other side. First make sure the objects pivot is at the world center. If not, select the object and activate the Move tool (W). Then hit the Insert key on the keyboard to allow for editing the pivot location. Hold down the X key to enable Grid Snapping and drag it to the world origin. Hit Insert to come out of the pivot editing mode. You can also hold down the keyboard D key to edit the position of the pivot. With the pivot in the correct place, select the mesh and hit Ctrl+D to duplicate the model. In the Channel Box for the duplicated mesh, pop a -1 into the Scale X to flip the model to the other side.
With the duplicated mesh still selected, go Modify > Freeze Transforms to clean out the Channel Box. If you are using Maya 2014, the normals for the mesh will be inverted for you, which is what we want to happen. If you are using any version of Maya prior to 2014, select the duplicated mesh and in the Polygons Menu, go Normals > Reverse. You can view the normal of any object by selecting it and going Display > Polygons > Face Normals.
Merge center vertices and soften edges
Now select both halves of the model and go Mesh > Combine to create one mesh. The vertices down the center will now need to be merged together. Select them all using the previous method as described in step 6 and go Edit Mesh > Merge (Options). Set the Threshold to 0.0001 and hit Apply. You may notice a hard edge running down the mesh where the 2 halves have been merged. To get rid of this, select the model and go Normals > Soften Edge.
Scale to size and tidy up
We now want to scale our character to some real-world units. I am going to presume this fella is around 6-feet tall, which works out at around 182.88cm. Go Create > Measure Tools > Distance Tool and create 2 locators, one at the base and one at the tip of the head. The distanceDimension1 node should inform you of the height. Now take the second locator (positioned at the head) and translate it upwards until the distanceDimension1 node reads to a value of approximately 188cm. Then select the mesh and scale it uniformly to meet the locator and match the height. The last thing we need to do is select the model and go Edit > Delete By Type > History, followed by Modify > Freeze Transforms. The model should now be ready to move to the next department.
Top tip: Checking for inverted normals
Here is a quick way in Maya to check if any face normals are inverted. In the viewport menu, go to Lighting and disable Two Sided Lighting. If any faces turn black (inverted normal), select them and go Normals > Reverse.