NURBS Multipatch Modeling

So far in this chapter, you have been modeling several kinds of basic NURBS shapes to create the skin of your character with as few NURBS surfaces as possible. This approach minimizes the seams between surfaces, but often lacks tangency in areas where an open NURBS edge branches off the center of a closed NURBS surface. This occurs on your character's head where the eye patches connect to the main head, where the limbs branch off the torso, and where the fingers and toes branch off the hands and feet. Unless your character models were designed to incorporate seams whenever a limb branches off a main surface for instance, if clothing items have similar seams this method of modeling will always have tangency problems. In each of these problem areas, the underlying geometry prevents you from ultimately creating a seamless skin. In this section, you use a different NURBS modeling approach to create a skin with more surface continuity in these problem areas, called a NURBS multipatch skin. This involves cutting up your NURBS character into many smaller rectangular patches so that you can remove overlapping geometry and create open edges on the head and torso to better line up with similar open edges on the eyelids and limbs. Using multipatch modeling techniques, you can create a character skin with smooth transitions between body parts (see Figure 2.45). Multipatch skin enables you to take your character model to the next stage of the modeling process, which is a seamless polygon skin. Keep in mind, however, that there is not one right way to multipatch model a character. The methods shown in this section are just a few examples of how to approach such a task.

2.45. Using multipatch modeling techniques, you can create a character skin with good surface continuity between the eyelids and head surface, and between the limbs and the torso (character model by Nick Miulli).

graphics/02fig45.jpg

Converting a Radial Head to a Patch Head

The best place to begin converting your NURBS character skin into a multipatch skin is the head. Currently, your character's head is composed of a main radial head, two radial eye patches, and two radial ear patches. Most popular methods for multipatching the head keep this same basic structure, so that the mouth, eyes, and ears remain radial structures. The radial mouth is already part of the main head, so it should remain as is. To make the eyes and ears fit into the main head, you must cut out rectangular holes in the eye and ear areas. This is only possible if you cut the entire head into many pieces, so that the seams contour around each eye and ear. You can then delete the surfaces under the eyes and ears and make the edges of each eye and ear patch line up with the open edges. To create full tangency between all surfaces, you must detach each eye and ear patch at the corners into four separate but continuous pieces.

The goal when multipatch modeling is to take advantage of using separate patches to change the orientations of isoparms on each surface, while still achieving continuity across all the surfaces. On a head, you ideally want the isoparms on the patches to contour the muscles and wrinkles of the face. The appearance of a continuous surface requires that you keep tangency between all adjacent patches. You can achieve this only if the patches have the right number of subdivisions so that the isoparms line up perfectly across each seam. Hopefully, your basic radial NURBS head and eye patches are not too complex, but only have the minimum isoparms necessary to define the facial features. You should continue to do this when converting your head to a multipatch model. You can add details later to the NURBS patches if necessary, or better still, after the surfaces are converted to a single polygon object. For instance, it is much easier to carve out good nostrils on a polygon than it is on a NURBS model.

Keep in mind that if your face is symmetrical, you can cut your head in half again and only work on multipatching one side. If you made important asymmetrical features on your character's face, however, you will have to multipatch both sides of the head. Before going to the next step of cutting your head into many pieces, duplicate your current head and eye patches. Then convert all the duplicated pieces into polygon objects and combine them. You can use this single polygon head as a live guide object when working with your multipatch NURBS head. For now, assign the polygon guide head to a new layer named HeadGuideLayer, and hide the layer until you need to use it.

You begin the process by checking the structure of your main head surface to determine whether the isoparms are oriented in such a way that they form a rectangle around the eye patch. You can add isoparms if necessary, and you should move CVs to contour the edge of the eye patch as much as possible. The rectangular hole you want to create should be rounded outward slightly, so that it fits well with the radial eye patch. Because the corners of each rectangle must match up with isoparms on each eye patch, you need to determine which isoparms on the four corners of the eye patch you are going to use. These isoparms will be where you detach the eye patch into four pieces. If the isoparms on your eye patches are not in the right place, insert new ones and delete old ones as needed.

When you are satisfied with the isoparm placement on your main head, the next step is to select the isoparms that form the rectangle around the eye patch and detach the surfaces. This creates many separate patches and enables you to select and delete the rectangular area under the eye patch (see Figure 2.46). In addition, you must select the isoparms at the corners of each eye patch and detach them to create four separate patches. After doing this, select all the patches and display the Surface Origins, which will show the U and V orientations of the patches. You want the eye patches to have the same orientation as the other head patches, with all the normals facing outward. Swap or reverse the directions as needed by choosing Edit NURBS, Reverse Surface Direction graphics/shadebox1.gif. You then need to make sure all the isoparms and edges line up from patch to patch. Do this by rebuilding patches as Uniform surfaces with the correct number of subdivisions by choosing Edit NURBS, Rebuild Surfaces graphics/shadebox1.gif. Starting with the eye patches, select each patch and rebuild it as needed to have the same number of subdivisions in U and V as the adjacent patches with which it is lined up. Rebuild the patches as needed to make all the isoparms line up. To get perfect tangency between all the head patches, however, you may need to rebuild each patch as Uniform in both directions, because surface parameterization can affect the tangency.

2.46. Detach four isoparms on your head that contour the eye patch, and delete the underlying surface afterward.

graphics/02fig46.jpg

If many of the isoparms on your radial head are not going in the right directions for cutting up the head correctly, you need to create new patches for these areas. First, select the isoparms around the mouth area of your main head surface, choose Edit Surfaces, Detach, and discard the cheek and forehead patches. You should be left with a radial mouth, part of the nose, and the eye patches. You want to keep some of the original surface to use as a source for establishing tangency when you create new patches. Cut the mouth and eye surfaces into several sections to facilitate the new patches (see Figure 2.47). Then unhide your polygon head to use as a guide, and make it a live surface. You want to start making patches on the cheek where you have three edges of the patch already created by the nose, lower eye, and upper mouth patches. Duplicate the isoparm on the nose edge to create the fourth edge of the patch, translating it to the other side. Then in component mode, move EPs on the curve to line it up on the live polygon head. Avoid snapping CVs to the live polygon head, because CVs are not on the curve and will not produce an accurate result. At both ends of the curve, snap the end EPs to the corner CVs on the eye and mouth patches. It is important to make sure all the endpoints of the curves and isoparms that make up the edges of the new patch are snapped together; otherwise, the square command may fail. After creating the boundaries of your new patch, you can use the Square tool to create the new NURBS patch.

2.47. If the isoparms on your main head are not conducive to creating a good eye hole, you can discard that area of the head in order to re-make the patches manually using your polygon guide head.

graphics/02fig47.gif

To use the Square tool to create a new patch for your character's head, switch to component mode, and Shift-select the edge isoparms on the three patches that border the new patch. Then Shift-select the curve you created on the last side of the new patch and choose Surfaces, Square graphics/shadebox1.gif. This feature has a Tangent option for the Continuity Type that should be turned on. This option creates tangency with the nose, mouth, and eye patches. The number of Curve Fit Checkpoints will add isoparms for a setting above 2. Higher settings may give you a more accurate result, however, and you can always rebuild the surface after creating the patch. Set a .1 value for the Local End Point Tolerance option, and make sure you are creating a NURBS surface. It is usually not necessary to use the Rebuild curves option if you have been working with cubic NURBS surfaces and curves. After correctly setting these options, click the Square Surface button to create the new patch (see Figure 2.48). Keep in mind that this will create a NURBS patch that is accurate on its border edges, but not necessarily accurate in the middle of the patch. To make sure the middle of the patch has the same shape as your original head surface, you must copy out the curves to manipulate their EPs on the live surface and then reloft the surface from the adjusted curves.

2.48. Create curves on the live guide head, and use the Square tool to create new patches that are tangent with existing patches.

graphics/02fig48.jpg

When creating your multipatch head, work outwards from the center of your character's face. As you create each patch using the square command, rebuild each patch to have the same number of subdivisions as the other patches on its UV borders. Simply check the number of subdivisions in the Attribute editor, and specify the correct amount of subdivisions in the Uniform rebuild options box. Make sure that you are rebuilding both the U and the V directions on each surface, and set the Parameter Range for each patch from 0 to 1. Also, as your building your patch head, you might find that tangency is maintained in some areas, while others lose tangency. To achieve tangency between two NURBS patches, you must not only line up the edges and isoparms, but also the CVs that border each edge. Tangency is created between two surfaces by creating a straight line between the two overlapping edge points and the next row of points on each surface. This row of points is not associated with any particular isoparm, but are used specifically for creating tangency with other surface edges. Sometimes it helps to manually move the points so they line up as much as possible before using other tangency techniques.

Another simple way to create more tangency is to attach and detach patches. To do this, select the overlapping edge isoparms on two adjacent patches and choose Edit NURBS, Attach graphics/shadebox1.gif. The Blend option with a low bias value creates the most tangency between two patches, but moves points on the surfaces. This can separate the attached patches from other patches. The Connect option will not change the shape of the patches as much, but will also not create as smooth a connection. Sometimes it is best to use the Remove Multiple Knots option. Extra isoparms may still be added where the two surfaces were attached. Rebuild the surface to have the correct number of subdivisions when this happens. After attaching two patches in one direction, select the isoparm where the patches were attached, and detach the surface again by choosing Edit Surfaces, Detach. You can then do the same attach-detach procedure on two adjacent patches in the other direction.

As you are creating your patch head, notice that tangency is easier to create between any four patches that line up together than in areas where five patches come together. There will always be areas like this on a multipatch skin, called a star junction, where tangency problems usually occur (see Figure 2.49). To make this area as continuous as possible, try to avoid stretching or pinching the corners of any one patch too much. Another way to try and fix tangency problems is to stitch the surfaces together. As you are building your patch head, you can use the Stitch Edges tool to create tangency between any two patches. Then stitch surface points to fix any problems at star junctions where the points do not come together correctly. Finally, you can run a global stitch on all the head patches to fix any remaining surface-continuity problems.

2.49. It is always difficult to achieve perfect tangency in areas on a head where five NURBS edges come together, called a star junction.

graphics/02fig49.jpg

To stitch an edge, choose Edit NURBS, Stitch, Stitch Edges Tool graphics/shadebox1.gif. Set the Blending options to stitch both the Position and Tangent. If the surface edges are offset, set the Weighting Factor options for which border edge you want to move to the other. This option is based on the order of selection, with a value of 1 fixing the points on a surface, and a value of 0 moving the points on a surface. To move both edges equally toward each other, set both options to a .5 value. If you have carefully snapped edge points together, however, the surfaces should not move much at all. Make sure the Cascade Stitch Nodes option is turned on, keep the Sampling option low, and do not keep the original surfaces. Then click the adjacent border edges of the two surfaces you want to stitch. A blue edge manipulator will appear, enabling you to adjust whether the stitch will occur across the entire edge of both surfaces or to a particular isoparm to do a partial stitch (see Figure 2.50). Hold the V key down to snap it to an isoparm if you need to stitch a partial edge. Because you have cut your head into equally sized patches, however, it should not be necessary to adjust this manipulator. Just press the Enter key to complete the edge stitch. You can use the Stitch Edges Tool to stitch all adjacent edges on your multipatch head.

2.50. Use the Stitch Edges Tool to create tangency between any two open edges. Use the blue manipulator to stitch a partial edge if necessary.

graphics/02fig50.jpg

Use the stitch surface points command to pull together all the points involved in a star junction. If there is a point that is in the position where you want the star junction to be located, select it first. Then Shift-select all the other points, and choose Edit NURBS, Stitch, Stitch Surface Points graphics/shadebox1.gif. In the resulting options box, turn the Assign Equal Weights option off, and make sure the Cascade Stitch Node is turned on. Do not keep the original surface. Clicking the Stitch Points button should pull all the points on top of the first selected point, and close the star junction.

The last command for stitching surfaces is global stitch. This command can be used periodically while you build the multipatch head, or can be done after all the patches are completed. To do a global stitch, you must select all the patches involved in creating tangency on the patches, and then choose Edit NURBS, Stitch, Global Stitch graphics/shadebox1.gif. For a multipatch skin, always choose the Closest Knot and Equal Params options, which will line up the edges and isoparms on all the patches (see Figure 2.51). You also should set the Stitch Smoothness option to Tangents, and turn the Stitch Partial Edges option to off. The Max Separation and the Modification Resistance options work together to determine how much the surfaces will be altered during the stitch operation by setting how much the points will move.

2.51. When global stitching your skins, always choose the Closest Knot and Equal Params options, which will ensure that the edges and isoparms line up.

graphics/02fig51.jpg

When you are doing a global stitch, it is important that the edges of all the surfaces involved are equal distance from each other. Preferably, you have already snapped all the edges together before doing the stitch. If there are some larger spaces than others between the edges, you have to increase the Max Separation value to pull them together, which causes the points closer to each other to bunch up. You can reduce this problem by turning on the Lock Surface option in the Attribute Editor for the patches that are bunching up; this option keeps the locked surfaces from being altered by the stitch operation. However, it is better to avoid this by making sure all the patch edges are equal distances from each other before doing the global stitch. After clicking the Global Stitch button, in the Channel Box you can modify the Max Separation and Modification Resistance values to improve the stitch result. Increase the Max Separation value to close any holes between patches, and increase the Modification Resistance value to reduce any wrinkling or bunching at patch edges.

You can continue modeling with stitch nodes on your skin patches. The surfaces should remain together, and keep continuity, but be aware that points close to the border edges that are involved in the stitch operation can no longer be moved independently from one another. The stitch operation is continuously recomputing the tangency between patches, which will noticeably slow down your system. Because of this, just like fillets, it is best to use stitching as a modeling technique and not leave it on your surfaces during animation. When your surfaces are tangent, select them all and delete history to remove the stitch nodes.

Using Patch Modeling to Connect Limbs

Converting the rest of your character to a multipatch NURBS skin is done in the same way as the head. To make the open edge of an arm that has been lofted off a closed vertical torso fit together with the chest as tangent multipatches, you must cut a rectangular hole in the shoulder area by detaching isoparms. This creates eight patches on the torso, with four bordering the hole where the arm should be connected (see Figure 2.52). You also must cut the length of the limb into four patches to fit with the four open edges on the cut torso. Again, it is best to create the opening well into the torso surface, so the seams will not sit directly on the shoulder joint. Then use all the techniques described in the previous section for creating tangency between all the patches. When finished multipatching the arm, do the same in the leg area. You can even use the same technique for multipatching the hands and feet. If your character is wearing clothes, you can separate patches at the natural seams in the fabric. Just create the patches in the same way that the clothes would be made.

2.52. Multipatch the rest of your body parts in the same way you did the head. On a torso, for instance, detach a hole in the torso to create tangency with the arms.

graphics/02fig52.jpg

As mentioned earlier, there is no single way of multipatching a NURBS character. Using the principles described in the previous section, such as separating your character's body parts into rectangular patches that have the seams placed slightly off the joints, you should be able to create a multipatch structure that works best for your character. One useful way of preplanning how you will cut up the surfaces is to draw the seams on top of copies of your character designs.

Exercise 2.3
Create a NURBS Multipatch Skin

In this exercise, you begin converting your current NURBS skin to a multipatch NURBS skin. This process involves cutting your surfaces into many pieces to line up the edges on adjacent patches. You begin the process at the head and work your way down through the torso and limbs. After you learn the basic techniques and principles, you should be able to multipatch model all the parts of your character's skin.

  1. First, delete history on all your NURBS surfaces that so there are no history connections to any creation curves. Then you need to detach isoparms on the main head surface to create rectangular eye holes. Before doing this, however, select the head and eye patches and convert them to polygons using the same Standard Fit and Quad options settings. Combine the head polygons and delete history on the result. Name the polygon head HeadGuide, and place it on a layer named HeadGuideLayer to hide it for now. You will use this polygon head later to make sure all your multipatch surfaces have the same proportions as your radial head. Also, make sure the isoparms that border your character's eye patches are oriented to create a rounded rectangle. You can do this only to a limited degree at this point, so don't worry if it is not perfect. To begin separating your radial head into multiple patches, right-click the surface to select the same isoparms and choose Edit NURBS, Detach Surfaces to begin separating the head into pieces. Continue detaching isoparms until you can select the rectangles under each eye patch, and delete them. Also, detach the corner isoparms on the radial eye patches that line up with the open edges of the separate head pieces. After detaching the surfaces, you should have only one edge on each head patch lining up with only one edge on the four eye patches.

    Count the U and V subdivisions on each head patch that is directly adjacent to an eye patch, or open each head patch in the Attribute editor to check the number of spans, and rebuild the eye patches to have the same number of spans in the appropriate direction. If two adjacent patches have different numbers of spans, then rebuild to the minimum amount that is required to not lose important details on either surface. Keep in mind that you can only achieve tangency between patches if they have the exact same number of spans, and the parameterization is the same. Choose Edit NURBS, Rebuild Surfaces graphics/shadebox1.gif, and set the options to Uniform, 0 to 1, and make sure you are rebuilding both directions with the correct number of spans (see Figure 2.53). To ensure all the isoparms line up across the surfaces, rebuild all the patches to uniform with the correct number of spans.

    2.53. After detaching the head and eye patches, rebuild them to make the parameterization and spans match in each direction.

    graphics/02fig53.jpg

    With all the pieces of the head separated, you can now more easily modify the head patches so that they more closely contour the circular eye patches. The reason for this is that the separated patches have multiple rows of points next to their edges that are used for specifying the direction of each edge (see Figure 2.54). Modifying this second row of points enables you to achieve surface continuity across edges. To get a rough continuity between the surfaces, you can hold down the V key, and snap the edge points on the eye patches to the edge points of the head patches. If any patches appear to be bunching up at the edge, move CVs on the second row of points to smooth them out. Also, snapping together the extra points at the corners should bring together the seams. Adjust overlapping points on the patches to make the isoparm transitions across the seams as straight as possible. Avoid sharp changes of direction from one edge to another.

    2.54. Manipulate the second row of points next to an edge to adjust the continuity between surfaces.

    graphics/02fig54.jpg

    One technique you can use to increase the tangency between patches is just to attach adjacent surfaces and then immediately detach them (see Figure 2.55). This is a way of forcing tangency in problem areas of the face. Although doing this creates tangency in one direction, it may reduce tangency in the other direction to some degree if you use the Blend attach option. Although the tangency created is usually less in the direction you are attaching, in some cases it is best to use the Connect and Keep Multiple Knots options, which will keep the surfaces from separating from other adjacent patches. You can even try using the same procedure with the Align option, rather than the Attach option. The Align option has both Attach and Tangency options that you can turn on. Another tangency technique involves duplicating out the curves for each patch and grouping them. You can then unhide your polygon guide head to make it live and move EPs on the grouped curves to line them up as much as possible. Loft the curves to re-create each patch, and then modify the patches as needed through the history connection to the curves. When you are done, delete history on all the patches and discard the curves.

    2.55. Attach and detach adjacent patches to increase tangency in that direction on the surface.

    graphics/02fig55.jpg

    Finally, you can use the stitching procedures shown in the previous section to finish creating tangency between all the patches. Use the Stitch Edges Tool to fix tangency between two patches, and use the Stitch Points command to stitch together star junctions. For an overall stitch of the entire head, run the Global Stitch command. When the head is as tangent as you can make it, remove the stitch nodes by deleting history on all your surfaces.

  2. You can use the multipatching process you used on the head on all the other parts of your character's body. Converting your vertical torso with lofted arms to a multipatch torso increases the surface continuity in the shoulder area. The problem with lofted limbs from a closed NURBS surface is their structures are very different, which prevents them from ever deforming in the exact same manner. Multipatching the torso and arms involves first creating a rectangular hole in the torso by detaching isoparms. Because it is always best not to place your seams directly on joints, avoid detaching isoparms that are directly on the shoulder joint. Then detach four isoparms running down the arm to line up the edges with the torso edges. Use the same techniques and tools you used on the head to achieve tangency between all the patches.

    Keep in mind while multipatching your character that you must have the same number of spans on all patches across an area of your character that is continuous, such as across the skin of the face. But anytime the surface changes to a different type, such as at a seam on clothing, you can change the number of spans as needed (see Figure 2.56). Because there is a natural seam between the two areas, it is not necessary to use tangency techniques to make them appear continuous. Keep in mind that these areas of differing levels of detail will not ever be merged into a single object, even at the polygon level. These areas remain separate skins, and you are shown how to bind these surfaces as separate objects later in the book.

    2.56. Areas of the character that are not meant to be continuous, such as when skin turns to clothing, do not need to have matching spans and edges (character model by Jeff Unay).

    graphics/02fig56.jpg

    Continue multipatching your torso by detaching isoparms around the hips to create a rectangular opening, and line up the legs by detaching them into four sections (see Figure 2.57). You also can create rectangular holes on the hand to create continuity with the fingers, and the same can be used to multipatch a foot and toes. Remember to delete all stitch nodes by deleting history when all your multipatch skins are as tangent as possible. Stitching will not be required on the bound skins, and will unnecessarily slow down your computer system. Group all the patches for your character under nodes according to whether they are continuous. For instance, group all the head patches under a group node named HeadPatches. This will make it easy to select the appropriate skins that will be merged as a single polygon object in the next section.

    2.57. Continue using the same techniques to multipatch model your character, such as separating the legs into four patches that line up with an opening you create in the lower torso.

    graphics/02fig57.jpg



Maya Character Creation. Modeling and Animation Controls
Maya Character Creation: Modeling and Animation Controls
ISBN: 0735713448
EAN: 2147483647
Year: 2003
Pages: 75
Authors: Chris Maraffi

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net