Structure And Naming
Conventions For Materials
By Neil Blevins
Created On: Apr 7th 2014
Software: Any
So how you go about naming and structuring materials is a very
personal sort of thing, there's no right or wrong way, but there are
definitely advantages and disadvantages to how you decide to approach
this problem. In this tutorial I'll explain my preferred way of
handling this situation, and in doing so, hopefully it can shed some
light on the type of though you need to go through when structuring
your own materials in your own unique way.
It's helpful to read my How
Do I Shade / Texture Stuff?: Shading
Pipeline Overview tutorial before reading the material below.
Structuring Materials And Patterns
First off, a few definitions...
- Material: a Shader combined with maps.
- Material Tree: all of the nodes (maps and materials) that make up
your material.
- Material Channel: a channel is for example the Color of the
material, the Bump, the Specular Reflection
- Nodes: maps and materials, just visualized in a node editor like
3dsmax's Schematic Material Editor
- Map Chain: A set of connected maps that form a little chain. So
all the maps that are connected to plug into the Material's Bump
Channel are a map chain.
So a material could be metal, rust, dirt, cloth. Materials can also be
collections of materials like Dirty Cloth, Rusty Metal, etc.
I tend to
structure all of my materials like this...
So, at the right most in the diagram I have a Layered Material (this
could be a Blend Material in regular 3dsmax, or a VRayBlendMtl material
if using vray). It contains sub materials. For example, with Rusty
Metal, I'll have a Metal Material and a Rust Material as submaterials
of my final Layered Material (for more information on this technique,
please read my Layering
Materials lesson.)
Then each of the channels of the material I'll have a map chain. The
map chain will tend to contain patterns, each pattern is using some
placement method (uvs, XYZ Space, etc), the pattern is then Color
Corrected, then they are layered together, the layered result gets
color corrected, and then that result is plugged into the channel of
the material. Pretty much all materials I make are a variation of this
structure, even if the material seems very complex.
Naming Materials And Patterns
So the biggest controversy in naming material nodes is do you use
abbreviations or not. The advantage of abbreviating names is it takes
up less space, and so they're more easily read in a system where the
node name may not have a lot of space.
The disadvantage of abbreviating names is that you may forget what the
abbreviations mean. Or, if you hand the file to another artist, they
won't understand them.
As an example, say you have a node that is the color of a metal
using a brushed metal bitmap pattern that's color corrected. You could
name it "MetalColorBrushedMetalPatternColorCorrectedBitmap". That name
explains pretty much exactly what this node does, but its so long that
it won't fit easily on the screen. You could abbreviate this to
something like "cBshMtlTexCC", but then anyone else who saw this node
would probably be confused.
So my method is to have some things abbreviated, and some not. Here's
the basic pattern for how I name nodes...
Channel + Name + NodeType
So in my example above, my node would be called...
"cBrushedMetalTex"
- c stands for Color, which means that this pattern will be plugged
into the color of my material. If the node will plug into multiple
channels, I just don't include this.
- BrushedMetal explains its a brushed metal pattern. If I only have
1 pattern in the channel, I may even leave the name out.
- Tex explains what the node is doing. Instead of "NodeType" being
specifically saying what the node is, like a "Noise" or "Bitmap" or
"Gradient", it explains the intent of the node, which in this case is
to create a pattern using some method. Or another example, a CC node
doesn't have to be a ColorCorrect node, it could also be an Output map,
which has the same purpose, even though the controls are different.
Here are some common names I use for nodes in my materials...
Channels:
- c = color
- o = opacity
- d = bump
- s = specular
NodeTypes:
- Tex = any map that creates a pattern
- CC = ColorCorrection
- Mix = anything that mixes two maps/material together
- Var = A switcher, so something like the Multi-map or
VrayMultiSubTex
So here's some common node names I use: cTex, cCC, cMix, cVar, oTex,
dTex, dMix, dCC, sTex, sMix, sCC
And here's a material example...
Anyways, again, no right and wrong way about doing this stuff, but
here's how I name and structure my materials, and hopefully this gets
you thinking about the way you choose to do your own.