|Tutorial February 14, 2000|
Beauty is Only Skin Deep
Creating Skin for your Discreet 3D Studio MAX Characters.by Adnan Hussain
|Discreet 3D Studio MAX can be used to create skin textures and materials.|
|Figure 2: Texporter rollout.||Creating a convincing 3D surface for your model can be as important as the model itself, often more so. In particular, the subtleties of organic materials make them challenging. It's not enough to scan human skin and slap it onto a model. A good material must react to light, not remain static like a scanned image. In this tutorial, I will discuss how I created the textures and material used to make the skin in the opening image using Discreet 3D Studio MAX (www.ktx.com).|
The first step was to create a wireframe template to aid in the placement of details in the maps. For the head, I simply applied the UVW Map modifier (Figure 1), chose cylindrical map, adjusted the alignment axis, and hit the Fit button to size it properly. The purpose of the Fit button is to automatically resize the mapping gizmo to the model; however, sometimes it doesn't work. If this happens, adjust the length, width, and height spinners to encompass the model with the gizmo. Alternatively, you can also go into sub-object gizmo mode and scale it, but then the dimensions in the spinners are no longer accurate. Accurate dimensions come in handy when you create a template image using the freely available Texporter plug-in by Cuney Tozdas(www.cuneytozdas.com).
Once the mapping coordinates have been assigned, go to the Utility panel. Hit More and choose Texporter from the menu (Figure 2). Texporter takes your mapping coordinates and creates a bitmap of your wireframe. The UVW Map gizmo dimensions were as follows: length, 290; width, 260; and height, 360. Based on these values, for image size in the Texporter utility, I used a width of 550 (which is the gizmo's length and width added together); and a height of 360 (the height of the gizmo).
Naturally, if there are decimal values from the UVW Map gizmo, you should round them first. The numbers I entered for the image size gave me the correct ratio for height and width of the texture map. This way, the template will not be distorted. If the image size is too large or small, feel free to change it, so long as the correct ratio between height and width is maintained. I wanted to create a larger map, so I multiplied both values by two and entered a height of 720 and a width of 1100. Under Colorize By, I chose None and clicked on Pick Object to select the head model. A black and white image appeared of the model unwrapped. I saved the image and named it template.jpg.
|Figure 1: UVW Map rollout.|
|Next, I loaded the template image in Adobe Photoshop. I duplicated the layer and named the background copy layer "template." Next, I deleted the background layer and selected "template." With Image/Adjust/Invert, the lines became black and the background white. To get rid of the white, I pressed Select/Color Range and chose Highlights. This selected the white areas of the map. By hitting the delete key, I was left with only the black wireframe lines on a transparent (checkered) background (Figure 3). You can create an action for this process to repeat it with a simple button click. This layer remained at the top of all the other layers. It enabled me to paint other layers and still see the model's wireframe.|
It's a good idea to create a small text file listing RGB values of the colors you use in a texture map. This aids in creating maps for the rest of the body as well as adding changes later. For painting skin, I chose two colors and mixed them together. I created a base layer with the lighter color and a layer on top of that with the darker color. I adjusted the opacity of the darker color until it produced the color I wanted (Figure 4).
|Figure 3: Unwrapped wireframe.||Figure 4: Skin color opacity adjustment.|
|The next step is to create some variation. To create realism, you must re-create the subtle changes in light and dark on different parts of the face. For this, I used the Eraser tool, adjusting the opacity to 60 and lightening areas of the dark skin color layer. This allowed more of the base skin color to show through in some areas. You may want to use varying opacity and brush sizes on different parts of the face with the Eraser tool. Next, I used some Gaussian blur on the dark skin color layer to get rid of any hard edges. Subtle monochromatic noise set on Gaussian with Gaussian blur can create some nice additional detail in the light color layer.|
For darker areas like creases and under the eyes, I created an additional layer. Using a darker brown, I painted in some lines around the eyes with a thin airbrush. I used this same color with a large airbrush to darken the area under the eyes (Figure 5). I try to paint all these details on separate layers so that I can adjust the opacity of them individually. For the lips, in the same way as the skin, I created a base color (Figure 6) on one layer and a darker layer on top of that, blurring and adjusting the opacity as needed.
|Figure 5: Blemishes and darker area around eyes.||Figure 6: Lines around the eyes, lip base color, red in eyes.|
| I created additional layers with blemishes, using the airbrush tool to create small dots here and there. Another layer was created for the eyebrows, and the area inside the eyes was painted in a reddish color for any parts that may show on the inner edges of the eyelids. Some finer details such as blemishes were added with a small airbrush. Many of these details would only be noticeable in a close-up shot, but they are nonetheless important. Even if they cannot be discerned from a distance, the plainness that results from not creating them would be apparent in renderings.|
Another advantage to creating separate layers for each detail comes when it's time to make the bump and specularity maps. Bump maps help create the illusion of fine details such as wrinkles and blemishes. I created a copy of the Photoshop file and used Edit/Desaturate to remove all color from the layers. Then I went to each layer and adjusted the opacity and brightness as needed. The way to tell how much is needed is by rendering test images of the material applied to the model as you go. Some layers were even inverted. For example, the lips on the bump map needed to be raised slightly from the rest of the skin. For this, I removed the darker lip color layer and made the lips a light gray by inverting and brightening it. I removed the two skin color layers and replaced them with a 50% gray layer. I like to use this gray as a base color for bump maps when possible, because it works as a middle-ground for which other details can be raised or recessed. (Figures 7-9 show the finished color, bump, and specular maps).
|Figure 7: Color Map.||Figure 8: Bump Map.||Figure 9: Specular Map.|
|The realism of the skin has as much to do with the maps you paint as it does with the material you use them in. The Raytrace Material in 3D Studio MAX gives many options for creating very subtle effects, which help in making believable skin. If you were to place the textures in a Standard Material at this point, they would look decent, but not particularly realistic. Using these same maps in Raytrace Material yields far greater results (Figure 10).|
If you are familiar with the Standard Material options the first thing you will notice about the Raytrace Material is how much deeper it is. I chose Blinn shading for its soft highlights. Ambient, Reflect, Luminosity, and Transparency were set to black, which is the equivalent of not having any effect on the material. I made the Specular Color white and set Specular Level and Glossiness to zero, leaving Specular Soften at 0.1 (Figure 11). Under Extended Parameters, I set Fluorescent Bias to 0.7.
|Figure 10: The skin texture maps in a Standard and Raytraced Material.||Figure 11: Raytrace Material basic parameters.|
|Next I skipped down to the Maps rollout (Figure 12). I used my color map for Diffuse (100%), Diffusion (30%), and Fluorescence (30%). The Diffuse map allows you to set the color of the material, whereas diffusion can be used to dim or brighten the material to simulate the way that light is reflected off an object. I found that for skin, Fluorescence helps to give a sense of reflected light as well. I used my specularity map for the Specular Level (30%) and Glossiness (30%) slots. I used a Mix Map (100%) for the Bump slot. The reason for this is that I did not paint any skin pores on my bump map. Instead I decided to use Noise in the first slot of the Mix Map to create skin pores and mixed that with the bump map I painted in the second slot. The Noise settings I used for pores were as follows: color 1, black; color 2, white; Noise Type, regular; and Size, 1.0. To keep from having skin pores on the lips, I created a bitmap for the Mix Amount slot (Figure 13). This allowed me to determine how much of each map showed through on a given area. White was used for the eyebrows and lips so the painted bump map showed through 100%. A light gray (R: 204, G: 204, B: 204) was used for the rest of the map so that the pores showed through, but the effect was subtle.|
|Figure 12: Maps rollout.||Figure 13: A bitmap for the Mix Amount slot.|
|Finally, I placed some lights in the scene and a simple backdrop to create the rendering. |
For further information on the Raytrace Material or materials and maps in general, consult 3D Studio MAX's online help. It has some great tips on functionality and in many cases specific examples of where different options can come in handy.
Adnan Hussain is finishing up his final project in school at this very moment. He's a few months from graduating in May 2000 and would really like to hear what you think of his article. Of course, if you have a job to help ease his passage into the world of 3D animation and loan repayment he'd appreciate that too. (e-mail: [email protected])