Texturing the MUDR, a process demo, part 2

As you can see from the intervening posts, I've progressed quite a ways in the texturing of my robot, but I'm going to stick to just talking about the head for now. Upon review of my concept description, I saw that I had missed a bit of detail: oxidation on the sun-exposed areas. My previous textures were either taken from various places on the Internet or painted by hand. My oxidation texture is from some photographic reference I shot myself. Since I have full rights in this texture, I'll post it here at full resolution. This image carries a Creative Commons Attribution 3.0 License Creative Commons License
.:

Oxidized Paint Texture

"Oxidized Paint Texture" by Bryan Ray is licensed under a Creative Commons Attribution 3.0 Unported License.
Permissions beyond the scope of this license may be available from xa_bryan@sbcglobal.net

I defined a new pattern with this texture and flood filled an entire layer with it, then put a completely black layer mask on it. Then I used a large soft brush to paint white on the mask where I wanted the texture to show up, notably on the top-facing surfaces of the head. I then added an adjustment layer and copied the mask information onto it so I could integrate the oxidation better with the rest of the paint. A little tweaking of the opacity finished that process, and now it's time for the bump map.

Some people simply desaturate their color map and use that as a bump, but that is certainly the wrong way to go about things with this texture. For instance, the flaked off paint is white, but white is high in a bump map, so the scratches need to be inverted. Once that's done, they'll probably be far too dark, and therefore too deep in the bump; that can be fixed by adjusting their opacity. Since the scratches are taking their height information from the scratch layer, there is no need for the layer mask on the paint layer, so that gets deleted. Finally, I sharpen the oxidation layer a bit and adjust its opacity so that the variation is a little bit less than that of the scratches.

I mentioned earlier that I was going to put a little bit of a ridge on the nose cone to help disguise a seam, so I painted that in by hand; you can see it in the lower right-hand corner. Also, I adjusted the levels on the weld a bit to get it that ridged look.

Bump Map

Some bits of elevation are more dramatic than can be handled by a bump map. In this case, the weld doesn't pop up enough. Unlike other maps, there isn't an obvious place to insert a displacement map, so I do it through the Hypershade. First, here's the map, and as before the lighter areas are higher:

Displacement Map

I open the Hypershade (Window > Rendering Editors > Hypershade), find my HeadM material and middle-mouse drag it into the lower pane. Then I make a new file texture, load the displacement map, and middle-mouse drag the texture onto the material. In the pop-up, I choose Displacement Map. A new Displacement node is automatically added between the file and the ShaderGroup node. Unlike the Bump Map node, though, the Displacement node has no useful controls. If you need to adjust the depth of the displacement (and you almost certainly will), the simplest way I know of to do it is to load the file node in the Attribute Editor and adjust the Alpha Gain under Color Balance. In this case, I had to take the Alpha Gain clear down to .02 to get this, which has some visible problems:

Render with displacement

It took some experimentation, but I figured out that some of the problem was the lack of resolution in my mesh. I added two levels of divisions and rerendered to get this:

Higher Resolution displacement render

This introduces some unwelcome faceting of the mesh, but it closes up those odd seams and smooths out the ridges in the displacement.

You can also see here that I've added the glowing lights by saving them to a file of their own which I added to both the incandescence and glow intensity channels. An adjustment of the alpha gain of the file controls the amount of glow that appears. Mine is currently set at .08.

That's about as far as I'll take the head texturing, but I can now use the Photoshop file to set up for all of the rest of the robot. Since most of the details will be similar, I can keep my layer structure, brushes, and colors. I simply save a copy of the file under the name TextureTemplate. In the new file, I erase all of the details I've painted in, leaving only the base colors and solid masks, so the file is ready to receive a new UV layout and ambient occlusion map. Since everything is set up in this way, further texturing tasks go much more swiftly.

Another texturing update

Here's another update on my progress. I spent a lot of time getting the displacement on the torso just right so that the little sensor spheres were the right shape and the rivets looked good. I also spent a good deal of time on the rocket pod. The way my UVs are laid out made it difficult to get the soot looking good—it tends to curve toward the front. I think there's a way to make a separate set of UVs with a different projection, but I don't have the time to learn about it at the moment. I am already behind schedule.

I anticipate that I'll have the entire right arm done tomorrow, and probably the small utility arm. If I'm really industrious, I'll also make progress on the handgun, which I anticipate will be among the most difficult pieces.

The current render time is a little under 3 minutes, which isn't too bad. If I can keep it under five minutes per frame I shouldn't have any trouble when it comes time to render entire shots.
Robot. Now with rivets!

More progress on the texturing process

As I mentioned in the process demo, turning on the physical sun & sky does wonders for the look of the texturing. I've also subdivided the geometry to get better results from the displacement maps. There's still some work to be done on the reflections and specular highlights, but I'm feeling confident that I'll be able to get the level of detail and realism that I desire for this project.

MUDR robot texturing sample

I intend to make another entry to the process demo on Monday evening.

Texturing the MUDR, a process demo, part 1

I thought it might be of interest to describe the process I am following as I texture the Modular Urban Defense Robot. Bear in mind that I am in no way a skilled texture painter. I'm sort of learning the process as I go along, and there are still dozens of things I still haven't figured out. I won't cover the modeling or UV processes here—those are each quite deep topics on their own, but they're already finished for this robot. On to the work!

I'm going to talk through the process of texturing the robot's head. Here's my starting point, the untextured head with a lambert material:

render with default lambert material

I am using Mental Ray's physical sun and sky at default settings for light. Having a somewhat realistic lighting setup makes a huge difference. Here, you can see that the lambert material has picked up the blue color of the sky, and the shadows are quite convincing; it's a huge improvement over Maya's default lighting, but it does come with a hefty price. This frame took 1:35 to render, where a render with the default lights takes mere seconds. Most of the time I do work with the default lights and only turn on the physical sun system occasionally. One thing to take note of is that the physical sun will put you into a linear workflow. Others have written on that topic more cogently than I can, so I will simply refer you to Floze's excellent tutorials.

So then, the first step is to determine how exactly I want this thing to look. The director asked for it to look like old industry—heavy machinery—so I chose a sort of rust-colored paint, poorly primed. The paint will flake off in many places and be cracked and dusty where it's exposed to the sun. It will also be very dirty and be covered in old grease in places. Some parts will have exposed welds to cover seams that cause me difficulty.

The robot is made out of metal, and although it won't be terribly shiny due to its age, there may be surfaces that will still have some degree of gloss. I change the material to a blinn, name it headM, and reduce the reflectivity to around .2. I've spent a lot of time laying out UVs already, so I'll go ahead an export a UV map:

UV map

The head is pretty complex, and I wasn't able to sew seams in as many places as I'd like. It also has an issue of having way too many surfaces, and I expect to need a close-up, so I made the map 4096 x 4096—the image above is greatly reduced in size. The UV layout shows me where my surfaces are, but there's a little bit more information I'd like to have: an ambient occlusion map. A 4k AO texture with decent quality takes quite a while to bake;  I unwisely decided to do it while I was awake and watched two episodes of Lost while I was waiting. Future AO maps will be baked while I sleep. The AO map looks like this:

Ambient Occlusion map

Both of these maps go into Photoshop as layers in the texture building file. The UV map goes on top, I change its blend mode to screen, and the AO map's mode to multiply. Every other layer will go beneath these. Game artists will use the AO map in the final texture to save rendering time, but for film and video it's merely a guide, making it easy to see where the grooves and sheltered parts of the model are and therefore where there should be more grime or less weathering.

Next: a base texture. I grabbed several pieces of bare metal a while back from CGTextures.com. Their license prohibits me from simply posting that texture here, but they're all free with registration. I put the base texture at the bottom of the layer stack. It will likely contribute only a few pixels to the finished texture, but it's a place to start. Above that, I fill a layer with my chosen paint color, a dull red, and set its blend mode so that some of the base texture shows through—darken in this case. Then I go in and start painting details. The grills on the panels, a few lights, change the paint color of the two domes and the end of the nose-cone. I don't think I'm anywhere near done with details like these, but I've run short of inspiration, so I moved on to scraping the paint off of corners and exposed areas.

I added a layer mask to the paint color layer and found a texture of flaking paint from which I made my brush:

grunge brush settings

This image shows the source image at the top, which I defined as a custom brush, and the brush settings that produced the stroke at the bottom. Start with any image that has a sort of grungy pattern, crop out a piece of it, desaturate and play with curves or levels to get some nice contrast, and edit > define brush preset… The new brush will appear in your brushes palette.

I use this brush on the paint layer's mask, hitting the corners of the geometry and a few random other places. Hit anywhere that the paint might have gotten enough wear to start flaking off, but don't  make it too uniform. Some spots might be completely scoured while others will be completely intact. Most places will have a little wear. Once you've got plenty of nice scrapes, ctrl-click the layer mask to make it a selection and choose the secondary paint color layer (in my case, the yellow for the nose cone and domes).  Make a layer mask; since you have a selection made from your previous mask, the new mask will be identical to it.

I've linked my photoshop file to the color input of the blinn shader. Here's the current color texture with the UV and AO maps turned off, and a render of the robot to this point:

Initial color map

MUDR head render with color map

The reflectivity is clearly too high, and I don't care much for how my panel details appear here. The one is easy to fix, but the other might take a bit more thought. We'll see how it looks later in the process. Incidentally, my intent was for those yellow bits to be self-illuminated, but they're on the same layer as the other panel details, so I'll have to jump them to their own layer prior to making the incandescence map. Since I'm not very far along in the process, this is a good time to do that. Simply select by color range (select > color range) and click on the yellow. Once you have a selection, choose the layer the lights are on and ctrl-j to make a new layer with a copy of only those pixels.

Alright, I've reduced the reflectivity of my shader to .05 (this, by the way, is merely a preview issue—later on, reflectivity will be controlled by yet another map, and I'll dial it in more precisely at that time),  and now I'm going to start adding some grunge. I'll start with a soft scattering brush made by Dave Nagel for painting skin. That brush pack is fairly useful and can be found here: Nagel Series 20. New layer, and I spray a dark brown dirt color willy-nilly across the entire color map. Since this is merely the first layer of dirt, I paint the surface fairly uniformly. There may be a few holes and a few places of greater density, but the objective is to not leave any indication that this dirt was painted on—zig-zagging lines and the like. Once that's done, I find a brush that makes denser, textured blobs, and I start working some dirt into the crevices and corners. This is where that AO map really helps. The darker areas are where the surfaces are close to other surfaces and are therefore more sheltered from wind and rain. Thus, those are the spots that will accumulate more dirt. I occasionally go back to Maya to see where particular surfaces actually are in order to give myself a better idea of where the dirt is going.

Once that's done, I add a layer mask to the dirt layer and load my custom grunge brush again. I then paint out a few spots of the dirt, indicating places where maybe it built up and flaked off or got partially washed away by rainwater or contact with other objects or people. Another test render shows me that I do indeed have a problem that I was anticipating: textures that break along seams that I couldn't sew. Notice where the large sphere meets the nose cone, in the brightly lit area on top. And, indeed, the seam along the center of the head, which was certainly a large mistake on my part. That seam should have been made on the side, where it would be hidden by the rocket pod. It's too late to fix that now, though, so I will have to simply disguise it. I will hide both of those discontinuities with an ugly weld. A similar one at the end of the nose cone, where the yellow begins, will be hidden with an apparent bevel created in the bump map later on.

For now, I scoured the Internet for images of welds and learned that the only ones with reasonable licensing are far too small in resolution for my needs, so I pulled a weld from an auto repair website, cut it out from its environment, and straightened it out:

Weld texture

Now I put several copies of it along that border and use the liquify filter to push it to where I want it to be:

Weld applied to color map

I've left the UV and AO maps on here so you can see how I used them to guide me on where to put the weld. While I was at it, I put down some dirty grease in a few places. My layer stack is now thus, from bottom to top:

base texture, base paint (darken), paint details, weld, panel details, panel details2, lights, dirt (72% opacity), grease, ambient occlusion (hidden), UVTemplate (hidden).

I'm going to wrap it up for now. Keep an eye out for part 2, where I'll start on the bump and displacement maps. For now, here's my color map to this point and a render:

Color map with dirt, grease and weld

Rendered head with weld and grease

Robot texturing progress

I spent most of the interterm break laying out UVs on my robot. That's finally done, so now I can start laying down the textures. The head will get a few more painted-on details, and then I'll grunge it up more with dirt and grease in the crevices. There's also more bump and shader work to be done, but here's where it stands right now.

Tutorials at The Cartographers' Guild

I am a frequent contributor to the forums at The Cartographers' Guild. In the course of my time there, I have written several tutorials and guides. Here is a complete list:

Creating a local-scale tree texture in Photoshop
This tutorial was adapted from a technique at the Cartotalk forums, but the original was very difficult to understand. I clarified it and provided illustrations.

An Introduction to Image Export Formats
Many beginning artists have never learned the differences between the various image formats available to them and sometimes pick a final filetype that is suboptimal in terms of compression ratio or visual quality. Here, I have attempted to provide information about all of the common formats and when to use each one.

Using Channels to Separate an Object from its Background in Photoshop
I see a lot of inexperienced artists try to cut an object off of its background by painting a mask, using the pen tool, or even the eraser! This is a much easier method that aims to preserve the detail of the subject's edges. Also, since it does not rely on hand-painting, it can be used on video footage. It is, in fact, the basis behind the process of chroma keying.

Using Photoshop's Clone Stamp tool for better brush work
Many cartographers use brushes to put down mountains and trees, but anywhere the brush strokes overlap, the "white" parts are revealed to be transparent. The Clone Stamp tool, while not as elegant as the Brush tool, can be used to counteract this behavior.

Essential River Guidelines for Mapping
The Cartographers' Guild has a small cadre of self-styled "River Police" who examine maps for unrealistic water behavior. This guide collects their wisdom into a single place and cross-indexes other river-related discussions.

Create an isometric medieval tower icon in Illustrator
A simple Illustrator exercise that demonstrates how to make small icons for fantasy maps.

Miscellaneous robot design

I took a mechanicals design class this evening, and during the exercises I came up with this robot design, which I quite like:

Nazca-inspired robot
Nazca-inspired robot

The head shape is inspired by the skull manipulations practiced by certain Mesoamerican tribes, specifically the Nazca, whom I have been researching for my portfolio project. I'm looking forward to finding out what the rest of this robot looks like. It may feature into the port project eventually, although I'll have to really change up my concept in order to make it fit.

In other news, the Ai Colorado student SIGGRAPH chapter (of which I am the founding president) is looking into recording and publishing some of the workshops and tutorials taught by Art Institute students. Proceeds will go to fund AiCO SIGGRAPH activities and projects.

Modular Urban Defense Robot

This is the base model for the Modular Urban Defense Robot I am developing for Breach. A variety of different arm and weapon configurations will be available, enabling the 'bot to be outfitted for many roles. This robot will also be turned in for my Visual Effects Field Production class, so it may appear in several other students' reels and projects.

MUDR
MUDR

Robot leg model

I've finished the base model for the robots' legs. Much of the detail will come from texture maps, so if I'm lucky I won't have to do any more sculpting on this part of the 'bot. Colin said he wants a heavy industry look to the overall piece, so I chose a segmented plating look, reminiscent of medieval plate armor, and made sure some big pistons were exposed.

robot_leg_model_front

robot_leg_model_rear

robot_model_foot_detail