I am putting together a pretty quick demo and using alot of bought models from the Asset Store, to save time. These will in the end be replaced by custom models.
The problem I am having is that where some of the models look ok, many have very high levels of “bumpiness” from the normal maps. When I check the import settings, the map is set to normal map, but there is no “bumpiness” setting. UNTIL I REselect the drop-down, in which case the tick box to generate a normal map from greyscale is ticked, and THEN I CAN adjust the map bump.
The default bumpiness alwasy seems to be set to 0.25, but for it to look good in my game I must select every texture and reduce this setting down to 0.01 or less!
Is there a global bumpiness setting in Unity that I have set too high or something, because it seems like all the asset makers in the assets store can not be wrong, Im sure its me!
any help appreciated!
Well a normal map is not a bump map. These terms are mixed quite often, but you shoud first figure out what kind of map you actually have. A normal map contains surface normal vectors encoded in the 3 color channels. A bumpmap contains only height information. A bumpmapping shader usually have a parameter to scale the bumpiness, but i haven’t seen a normal map shader with such a parameter.
For some more information see this thread:
As far as i know Unity doesn’t even have a bumpmap shader, only normalmap shaders (even when they are called bumped)
Unity can import bumpmaps (grayscale maps) and convert them to normalmaps. During this process you can specify the bumpiness. See:
The way to do this is using an image editing software, rather than Unity. Although Unity can create a normal map from a greyscale image (ie. bumpmap) the bumpiness setting is basically a way of changing the contrast of that greyscale prior to converting it to a normal map. In your case this won’t really help. Although you could generate a normal map from an existing normal map’s greyscale, this won’t give correct results. This is what’s heppening when you reselect the normal map setting (drawing it from greyscale is the default setting).
In Photoshop, or whatever you use, just tweak the red and green channels and it should all look much less bumpy when you import it back into Unity as a normal map (ie. with the generate from greyscale thingy turned off). So yeah, I guess whoever made the assets just had somewhat different tastes in normal maps than you do.
Edit - The Blue channel in a normal map is white (ie 100%) all over. The variations are in the Red and Green channels. To reduce the other channels I don’t mean to set them to 0%, as the neutral values for these channels is actually 50% (because the angle of a surface can vary in either direction from the true normal). So yeah, move those two channels towards 50% in order to make it flatter. Getting a huge brush set to 50%, and applying it to only the Red and Green channels with a low Opacity is a quick and easy way to do this. Of course, this isn’t the only way, there are plenty more. For example, if you have the NVIDIA normal map plugin you can take your normal map, select ‘Convert to height’ and turn the normal map into a heightmap. Poke around with this as you please, change levels, contrast and so on, then use the filter to change the heightmap back into a normal map. You could even just use the filter’s built-in normal map settings to change the bumpiness as you convert it back. Hopefully that makes more sense now.