IDMapper - create ID-maps the easy way
IDMapper is a Blender add-on that lets you create a vertex color layer that can be used as an ID-map by texture paint tools like Substance Painter.
When creating textures for models you often want to reduce the actual number of textures, for example because your GPU can only handle a limited number of textures or maybe simply because juggling a large number of textures for a single model is such a hassle.
Whatever your motivation, texture painting software lets you apply different materials to a texture with ease but you still need to identify areas. An ID-map makes it very simple to apply a material to faces that have a certain color, often by letting you pick a color from the ID-map with an eye-dropper tool.
You will still need to create the vertex color layer that can be used as an ID-map and that's where IDMapper can help.
The first thing it offers are powerful heuristics to assign a unique vertex color to regions consisting of related faces. What is considered related can be tweaked interactively and any resulting distinct regions with very similar geometry can still be assign the same vertex color, simplifying for example the assignment of colors in hard-ops modelling in situations where your mesh contains repeated features like handles or bolts.
The second feature is an operator that acts like a new face paint mode. Instead of applying blended colors to vertices in a painterly manner as with Blender's vertex paint mode, this operator keeps colors uniform across a face, something often desirable when assign materials to mesh parts. It also lets you assign new colors to colored regions and resize or smooth these regions interactively.
And finally it offers some convenience functions to combine different vertex color layers and copy vertex color layers from one mesh to another, probably more high poly, mesh.
A short video showcasing the main features is available on Youtube:
IDMapper is available in my Blender Market shop
Blender conference discount at Blender Market
it's becoming a tradition and it is a good one: many products on Blender Market will carry a discount of 20% during the Blender Conference [28 - 30 October].
Of course I will participate all my products so if your were thinking of getting some nice asset or add-on this might be the perfect time.
NodeSet: tiny update might save even some more time
NodeSet is now also available in a Pro version. Read all about it in this article or check out my BlenderMarket shop if you are interested.
In a previous article I showed a small add-on that lets you import a set of textures with a common base name (like the ones typically exported by Substance Painter). It not only groups them in a frame but also gives the individual textures proper labels and sets the non color data attribute accordingly. On top of that you only have to select one textures from a set and all corresponding textures will be loaded anyway.This should save you quite a lot of time but I found that in real life a complex model or scene can easily have several tens of texture sets, maybe even a hundred or so and multiplied by 5 textures in a typical PBR Metal Rough export (BaseCOlor, Metallic, Height, Normal and Roughness) this results in hundreds of textures and a very cluttered file selector.
Now becuase you only need to select one of them to load the whole set, I made a small change the set the default filter to *Color* so that the file selector will only show the base color files (which happen to be the most distinct ones when you are looking at thumbnails). This reduces the list of files greatly, making it easier to pick the texture set you need (because as sais, clicking just BaseColor will load the others just the same). You can of course always uncheck the filter icon (at the top of the file selector) if necessary.
Code availability
The update is available from GitHubCheck the previous article for info on how to use the add-on. It includes a small tutorial video.
NodeSet: import Substance Painter textures into Blender
NodeSet is now also available in a Pro version. Read all about it in this article or check out my BlenderMarket shop if you are interested.
I recently bought Substance Painter because i really liked the product. But when i started working in ernest on a complex model with a large number of materials, the repetative work necessary to import the relevant textures quickly got tedious.Of course with Node Wrangler you can import multiple textures at a time but i still had to switch most textures to non color data and the labels on the image texture nodes reflected the filenames which are too long to act as a readable label.
So i decided to create a small add-on that sort of does what Node Wrangler's multiple images does but in a neater way. The add-on is called NodeSet and when you select its menu entry from the node editor (
Add->Texture->Set of images) it will:- open a file dialog where you can select a texture (you only have to select one from the set of textures)
- add this texture as an image texture node
- set the non color data flag if it is not a color texture (i.e. not a BaseColor nor a Diffuse map)
- automatically try to load all other textures with the same base name (for example Roughness and Metallic). It will ignore textures that are not present
- give all nodes a descriptive name (BaseColor, Normal, Specular, ...)
- group all those nodes into a frame with a label that reflects the basename of the texture set
- order the nodes alphabetically (BaseColor will always be located above Metallic, regardless of the number of textures in the set or the loading order)
The result looks neat and descriptive:
A small tutorial on how to use it is available as well:
This all works because textures exported by Substance Painter normally follow a strict naming convention where each texture in a set has the same basename (typically the meshname followed by the material name) and a different suffix depending on the type of texture (_Normal or _BaseColor for example)
You can change these suffixes when you export so although NodeSet is configured with the Substance Painter defaults for both the metal/roughness and glossiness workflows (i.e. in Substance Painter you can select Export Textures en select either PBR MetalRough or SpecGloss (non PBR)), you can configure the suffixes it will look for in the User preferences -> Addons . If you leave one empty it will not try to load it. There is of course nothing Substance Painter specific in this setup so it should work for every program that is able the produce texture sets with a common basename and a different suffix for each map.
Currently it will look for png, jpg/jpeg, hdr and exr textures.
Availability
The add-on is available from GitHub. Download it and then select it fromFile -> User preferences -> Add-ons -> install from file. Don't forget to check the enable checkbox.
Creating Add-ons for Blender on Blender Market
(click on the image to go to the shop where you can read the description and download a sample chapter)
Open Shading Language for Blender on BlenderMarket
Open Shading Language for Blender is now also available on BlenderMarket:
(click on the image to go to the shop where you can read the description and download a sample chapter)



