UV Spectrum

by NM-8 in Materials, Shaders, Textures

Mesh-based UV alignment

-For scratched, dirty, used, and aged materials
-Automated segmentation of your mesh
-Convexity masking or segment masking


Watched the video? there are more in the documentation... 



Why did I make this add-on?

Blender and Cycles have great tools to shade materials procedurally. But they lack a mesh-based shading system like in 3rd party tools (quixel or substance painter). On the other hand, using 3rd party tools is not very comfortable, as everything has to be converted to other formats.
UV Spectrum is a solution, that works directly in blender, which uses Blender's slim architecture efficiently. I used and improved it in the last year and it became a basic tool in my workflow.

Why would you buy it?

If you want to quickly achieve dirty scratched shading, color your mesh with a unique touch, this add-on is perfect for you.
If you are making a lot of assets, and want to reduce the texturework to the most individual details, uv-spectrum does the job.
If you love modeling and sculpting without minding uv-projection, UV-Spectrum will save you some time.
From simple GameAssets to detailed Hires-models, you can use uv-spectrum to enrich your shading.



How does it work?

Once the options are checked as wanted, you hit "map selected" and it analyses your selected meshes vertice per vertice and finds areas that would wear, scratch and pollute the most.
It analyses where dirt flows along the mesh, and in which direction scratches would be aligned most. The detailed structure of scratches and dirt can then be defined by the textures used with htese UVMaps.
All the data analysed is stored in UVMaps that are generated. These UVMaps are meant to be used in nodesetups as inputs
for masks and gradients, rather than mapping textures with them.
However if you use smooth textures like the 4point colorgradient shown on the right, you wont bother stretching using one of the UVMaps. This will help to shade your model with complex gradients, and achieve an aged look.


Furthermore there are Maps for segmentation, which allow you to quickly mask or color your mesh according to segments of convexity.

Finally it also generates Vertexgroups storing different convexity gradients for dynamic use with physics or modifiers.

Why not use pointiness for masking?

The pointiness node is a brilliant per-pixel-shadingparameter. As it represents the angle of curvature it has to be adjusted to the mesh manually to show contrast. Furthermore it is a onedimensional Parameter, so it cannot map a direction along the surface, in which scratches would occur. In flat areas, pointiness will (of course) give a single value (no grading). this applies to all areas in which pointiness doesnt change. But we want dirtmasks to run along flat areas also.


UV Spectrum precalculates the pointiness of the whole mesh and normalizes it from the most convex to the most concave area of the mesh. It gives 6 different 2dimensional UVMaps, giving direction along the Surface. And it gives smooth gradients for dirtflow even if the surface is flat, leading to more complex results. In the right image a displaced housewall is mapped with gradients using the "segments", "dirt" and "flow-gather" map. Though it is mainly flat areas, the add-on generates smooth gradients along them.
The only imagetexture used was the dispacement texture to model the wall.

This avoids the need to adjust anything to the model manually. Different models using the same shader will have the same look,
independent of their resolution or topology. Always covering one full gradient from concave to convex.


Ok, so wheres the downside?

There is none. Just dont mistake it with a texturemap, though it is using UVMaps to store the data for use in the node editor.
"Seams" is the only UVMap generated for unstretched texturemapping.  principle
The other Maps are used by noding them in the node editor mainly for masking and not for texturemapping.
"Texture" is a UVMap generated to map a Texture in the most unstretched manner possible, without seams, following the edgeflow.

So "Seams" has edges between segments to avoid stretching. And the other maps follow the change of pointness, which leads to quite strong stretching. Therefor its hard to map detailed textures without seams. But this is the case with all unwraps. Just think of the earthmap and its stretching at north and southpole.
UV Spectrum turns this projection from sphere to pointiness. making peaks northpoles, and valleys southpoles. You can imagine that the stretching is still present.
Nevertheless using smooth gradients or horizontal aligned textures (as described in the documentation) will help to cope this circumstance.

So it is a complex  and useful tool to grade your models without painting.


You can use simple textures that are folded onto the mesh without obvious tiling.


The UVMaps follow the edges according to convexity. For organic models it is possible to smoothen the maps.


The Texture-Map projects uv coordinates in the most unstretched way to place detailed textures for greeble or bump. Image Textures should be tileable along the vertical axis and have a gradient of detail from left to right of the image. left corresponds to convex areas, and right to concave areas.
No Need to adapt the unwrap solution, or to modify the texture in another software. So every model is using the same texture but mapped individually!

Included in the pack is a material library with 4 simple and 14 advanced shaders. they cover a basis from scratched metal, painted dirty metal, greebled and segmented metal plates, to organic shaders for wood, monster skin or leather.

01) segment gradient, 02) gather gradient, 03)copper  04) panel segments  05) mothership

06) metaldirt, 07)milleniumfalcon (greeble), 08)texturescratches, 09)seamed unstretched texture, 10) metalpanels

11)neonlights 12) thickglass, 13)stonebricks, 14)housewall1   15) housewall2

16)woodcut, 17)tree, 18)furniture wood, 19) leather, 20) monsterskin (inclusive cell-skin node!)