Join Adam Crespi for an in-depth discussion in this video Creating materials and assigning shaders, part of Unity 4.3 Essential Training.
- View Offline
Materials and shaders are a huge part of a game. They give us the overall look and provide us a way to show our textures, adding detail and realism to our objects. We do a lot with material and texture because we're constrained in the number of polygons we can push around. And so we've gotta get the most we can out of each of those, material and texture, to really bring some realism or some stylization to our game. When we import our objects, materials do come across, at least where they're placed, and some of the properties come in.
But we need to adjust them and make sure all the materials are assigned and named correctly. What I've done is to open up the scene, 0601. And renamed the gallery mesh back to gallery. This way I'm using one mesh consistently and it won't reimport materials every time. Renaming an fbx causes a reimport, and if you've already changed a material or renamed, it may automatically reimport a material again. This gallery mesh, is part of the 0601 gallery pre-fat.
And it's perfectly fine to have different names there. In the gallery, what I'll do is select it and look at the inspector. And, I've got the scale factor at one and generate light map UV's on. When we scroll farther down, we have some material choices. Are we importing materials? If not, Unity will assign the default Unity white to everything. Because I've created and assigned materials in Maya for this object, I want those materials to come in. Because I've placed them on a polygon level. What I'll do is change that material naming. And instead of working by base texture name, I might choose from models material.
And how are we searching? Is it a recursive search? Are we looking project wide, or just in the local materials folder? I'll leave it alone as it is now, and click apply. Here's what Unity has done. It created some new materials on import for my objects, and put them in a materials folder in the mesh's folder. Now, I had already moved, previously, my materials over to the materials folder. So I need to do a little bit of syncing up here to make sure things work. One way to see what's applied in the material is to select that material and change it's properties.
I'll pick the brick for example and we can see when this material imported, it cam across as a Bump Diffuse. This is the equivalent in Maya of a lambert material with a bump in it. Unless we choose a specular shader in Unity, a diffuse material is a Default meaning it basically is a soft, powdery looking material that has no specular highlight. Because I had put maps or textures into the diffuse color and the normal or bump slot in Maya, those came across here. And because those textures were present in my textures folder in my assets, they were imported into this material and place automatically.
This may not alway happen depending on where we need the texture and how we've assigned things in our other program like 3DSMax or Maya. What I'll do, though, is select the main color of this brick, and put a red in there. What this lets me do, aside from giving me garish red walls and floors, is show were that material is assigned. I can always take that color out. What I've got here is brick on the patio and brick walls surrounding the building. And that looks like it and this is good.
So it's a good way to check and make sure things got assigned correctly. Especially if we are dealing in duplicated materials. We can see over here in the materials folder then that there's a brick c material. This came in without it's texture, and just as a diffuse shader. And so selecting the main color and putting in something different like a blue shows it's not assigned anywhere. I'll go through here, make sure I take out any duplicates. Check where the materials are assigned, and make sure the naming is correct as I want it. Then I can start assigning shaders and finally textures in my materials.
I'll pick brick C, and delete that actual material. It's not actually assigned anywhere in the scene. Then I'll go back to my materials and take my brick and pull it over to my materials folder. Next, I'll pick brushed bronze and this looks like it's a sign and used the same texture map or texture atlas that shows up on the white walls. It's got a small section in here for bronze and light fixture as well as a bit of a vent we can see on the wall. Again I'll take this material and tint it and see where it's applied here in green.
It's applied correctly. The brushed bronze shows up on the railings and some of the door handles. That means it's good and I can leave it alone. I'll make sure I pull that white out and move this one over to my materials folder. Here's my metal screen, this came in sort of correct. It's a metal screen material that goes on the perforated metal sections of the railings. It showed up as a transparent diffused shader because it is an alpha channel in that texture that came across, but it's not quite behaving as I'd like because that textures alpha channel Also covers shine, or specular highlights, as well as the cutout for the punched out sections.
I'll need to tune this one up later, but it looks like it's in a good place. And again I'll do my test with a color. When the railings are purple we can just see little bits of them showing up, so it's working nicely. Here's my white wall, my dark wood, and my wood flooring. I'll take these and pull them over, and dragging them into the materials folder shows me it's available. If there was a duplicate material in there, it wouldn't let me drag it across, so I don't have any duplicate names, at least. Now here in the materials. And I'll slide up this acid bar a little bit to be able to show all of them.
I can see I've got a couple of different things going. There's a wood flooring CS, and I think I can delete it. Here's also wood black in CS. And I'll do my color test one more time. When this is blue I don't see anything in blue. So I'm in good shape. Finally here's White Wall CS. And again that color test will tell me if things are working. When I put in that green, pull this project console bar down, and look around I don't see any green. So again this is a duplicate material I can take out. Next I'll tune up the names.
Waves here is a material that goes on one of my blocking walls that'll pop up and it got the name from it's texture when it came in. I'll rename this back to waves molded. And this is a molded wave material that's a wall cover on just a single polygon. ScreenCS, again, is an unused material. I've already got my metal screen that came in, so it looks like I'm in good shape. I'll delete that one. What I can also watch out for in deleting material is that things go bright purple. That means there is no material assigned.
So far everything is in good shape and I'm ready to take the red out of that wall and get the right shaders on. I'll pick one of my walls. And, we can see when we select one object that it's got its material listed here in the inspector. I'll pull that white out of my tan brick wall. And, now, I can start to change shaders. For this brick I'm going to drop down under Bump Diffuse and I have an array of materials available. A bump diffuse is a Lambert, essentially, with a bump or a normal map in it. I'm going to use a parallax specular. And the difference here is really that diffuse is a straight, flat color.
Bump specular and bump diffuse have a normal map, and the specular can shine. Parallax materials allow for an additional texture slot using an alpha channel for height. So I'll pick parallax specular, and I can see now that I've got a color, a normal map and a height map from an alpha from somewhere. That gives us material parallax, makes it look like it's really standing out, especially as we're close or oblique in the view. And that way, things don't flatten out as much, showing off that they're only textures. With my shaders in, I'm ready to start assigning textures.
If you need, you can always make a new material by right clicking, choosing create, and material. Make a new material, name it, and then start to put in other properties or change the shaders or even add textures. I'll call this new material dark iron and see if I have a place to use a dark iron color. For now, I'm going to make its main color nearly black. It'll be a deep, dark wrought iron that'll match in well with my scene. I'm ready to get some texture in and keep fine tuning the materials.
Remember that in Unity we can only assign material down to the object level and so by working by polygon needs to be done in another application such as 3DS Max or Maya. So get your materials assigned there, and keep in mind what comes across. Material placement, material names, and if there are color and normal textures assigned, those should show up. But you can always go put them in, once you're here in Unity.
- Designing the game
- Creating and transforming objects
- Importing and configuring models and textures
- Setting properties in the Inspector
- Creating the terrain geometry
- Building materials and adding shaders
- Creating GameObjects
- Exploring physics
- Animating objects
- Lighting the scene
- Creating 2D game elements
- Adding special effects