WIP - 1.000 tris - Learning basics about map-types and baking

To get rid of the confusion with map-types, and how to treat them, I downloaded some premade maps (tif) for riverbed-pebbles.

  • NormalMap
  • RoughnessMap
  • HeightMap
  • AlbedoMap
  • AmbientOcclusionMap
Source

(You can get them through a free user-account at this source: Textures for 3D, graphic design and Photoshop!)

This post is a documentation of my learning experience. I hope it can help out people who are also confused about those map-types. Or for people who just find it interesting to read. Screenshots of my blender file in the details.

NormalMap

Just discovered it applies the normal mapping by simply plucking it into the ā€žnormalā€œ-Socket on a shader like principled bsdf. Doesnā€™t change mesh geometry but already changes how light bounces off the mesh-surface (like it would if the details had a height).

Wanted to bang my head against a wall because I seriously overcomplicated my experiments in the node editor with colorRamp, normalMap, Bump, Displacement nodes. Bang Bang! Roughness map, youā€™re next! (If I just need to pluck it into bsdf-ā€žroughnessā€œ, I get wild!)

RoughnessMap

Yup. Time to get wild. Put a Sun in the scene to observe the effect under lighting circumstances and also switched from Evee to Cycles. Zoomed near the plane. There was some light-reflection without connecting the map, but it looked weird, like everything was wet.


Plucked the Map in Roughness and instantly got a better result. Still not that great, but it got a little better after putting a ColorRamp between the map and the bsdf, this also gave me some control of the reflection intensity and spread.

Letā€™s see, if we can bring in some actual displacement with Heightmap ā€¦ but I guess I canā€™t pluck it into the bsdf. First save project and check if ā€žDisplacement and Bumpā€œ is enabled in the material settings.

HeightMap

So letā€™s just pluck this mf into Material Output Displacement. Well, this did something, but the geometry now seems to be weirdly squished into one direction.

Found really good Website, which explains how to treat different maps also with node-tree examples. (Helped me here but looks a little outdated - Link: How to use PBR Textures in Blender | cgbookcase.com). Pulled a Displacement-Node in and connected map with its height-socket. Worked.

Reflection Issues

But I donā€™t see any reflections from topdown-perspective at this point. I was able to correct that with placing a light over the plane but I noticed, that itā€™s just reflected in one direction, no matter where itā€™s placed. Shouldnā€™t pebbles shimmer from each angle, when the light comes from directly above? Must be the NormalMap, donā€™t know if its tangentSpace/ObjectSpace/WorldSpace!!! Wasnā€™t able to solve this yet -.- Until I find a solution ill have to adjust lighting and position as needed.

AlbedoMap

WTF means Albedo??? Now I know, itā€™s basically a simple texture map without shadows/highlights. Connect to color-socket for texturing. Easy. Riverbed pebbles got some colors now. But reflections look more odd again. Changed interpolation mode on ColorRamp (RoughnessMap) to ā€žB-Splineā€œ, toggled off the sun and implemented an hdri in the world background. Looks much smoother now.
Bildschirmfoto 2022-04-18 um 23.02.26

(Maybe the 1k resolution and partly low bit-depth of the premade maps are maybe also to blame for some weird effects - but for getting them basically for free at textures.com I wonā€™t moan). Iā€™m pretty satisfied at this point, but letā€™s also try out the AmbientOcclusionMap and see if we can get more depth!

AmbientOcclusionMap

Multiplied it with AlbedoMap, as I read in an article. Donā€™t see a huge improvement or change.
Bildschirmfoto 2022-04-18 um 23.13.33
Bildschirmfoto 2022-04-18 um 23.14.01
Amped it up with a math node but then I got results with everything getting brighter/darker, not only the shadows as wished. Iā€™ll leave it in my node tree so I can revisit later.

Thatā€™s it for today - havenā€™t really produced anything myself but now got a basic understanding of 5 different mapping types and know some fundamentals for implementing them. And a pretty nice seamless and detailed pebbleground asset for future projects which is baked on a plane of only 128 tris. By morning it was all just puzzling and frustrating, now I look forward to experiment the hell out of my new node-tree template :slight_smile:

tl;dr

NormalMap ā†’ Connect to Normal socket on bsdf
RoughnessMap ā†’ Connect to Roughness socket on bsdf ā†’ tweak with ColorRamp ā†’ smoother roughness (because of ā€žwashedā€œ pebbles) through b-spline interpolation
HeightMap ā†’ Connect to Displacement node height socket (MidLevel 0.0) and from there to Material Output Displacement
AlbedoMap ā†’ Connect to Base Color Socket on bsdf
AmbientOcclusionMap ā†’ Multiply with AlbedoMap

4 Likes

Very interesting to read your learning and perspective on these initially confusing topics! :grin:
Iā€™ve learned a few tips that could hopefully save you some time:

  • For the normal, it doesnā€™t actually look bad but I donā€™t think itā€™s shaded correctly. Blender needs a Vector Bump node to convert the normal information before it plugs into the BSDF:

Canā€™t quite see in the screenshot but also youā€™ll want to make sure the color space is set to non-color for normals.

  • For roughness, any PBR based workflow (including Blenders) treats darker values as shinier, and white as rougher. Prior to plugging in your map, the roughness slider is close to zero, which is why everything looks so shiny. The color map is the way to go for adjusting overall value there from your map :+1:

  • I still donā€™t know a ton about height and displacement, but you will want to at least make sure the color space is non-color, as it is calculating the displacement from a grayscale image.

  • Reflection: The reflection I think would be more related to the roughness, which simulates micro-surface detail. Normals are more for calculating the illusion of depth using light direction (I always use Tangent space, I donā€™t know what the others do :man_shrugging: ). Thereā€™s also something called the fresnel effect, which calculates reflection based on the angle of the viewer, but Iā€™m not sure if this has to added in Blender (maybe someone else knows?). But you wouldnā€™t see as much reflection from a top down view.

-AO: The only other thing I might try is switching the order of the inputs on the mix node. If thereā€™s still no difference I wonder if the AO map itself isnā€™t strong enough? :thinking:

Thereā€™s a great free series on YouTube that explains some of this in a high level but artist friendly way where I learned some of this:

PBR: A Guide to Understanding Textures and Physically-Based Rendering - YouTube

I hope some of this is helpful! :grinning:
And thanks for sharing!

1 Like

Hey there and thanks for taking the time, i really appreciate that! IĀ“ll directly implement your advice into the project and check out the video later. Especially to put the nodes to non-colour is something iĀ“ve completely overseen. Thought blender needs the red/blue colour-information as it was explained on another website ā€¦ so maybe itĀ“s just in colour for the human eye to understand and i got it wrong!? The AO indeed made a difference after amping it up with a math node, but for everything, not only the shadows as expected. My guess is that i have to somehow mask it with an alpha channel so only the dark part gets amplified and then mixed into the albedo. IĀ“ll update the post as i go forward.

Thanks again for you help and have a great day! :slight_smile:

UPDATE
HeightMap from sRGB to Non-Color ā†’ No Change
Bump-Node between NormalMap and BSDF ā†’ LIGHTBLAST!!! (when plucked into normal-socket - only deeper shadows when plucked in height as seen in your screenshot, maybe this made the AO kick in?)


Turning AO off through setting multiplication value to 0 ā†’ Nope, no effect :sweat_smile:
IĀ“ll leave AO turned off for now and take a deeper dive in this specific map later. It may corrupt my perception of other results, if it has some influences i just donĀ“t see. Also i think it should be the least important map in here - if i donĀ“t like the shadows, i can can influence them in many other ways ā€¦

Plucked the NormalMap back into BumpNode Normal and adjusted the Roughness-ColourRamp. This now looks about right. Real nice wet reflections on the upper rock surfaces. But mesh-updates take so much time now when doing changes. I think this version is already better than its predecessor! HereĀ“s a screenshot including the whole node-tree and render-settings. Thanks again, it gets better step by step :grinning:

And also have a Schnitzel!

2 Likes

Ah thank you sir I will enjoy my digital Schnitzel! :laughing:

1 Like

I think it depends on your input texture. If you have height map - you use bump node. If you have normal map - you use normal map node.

But if I would have height mapā€¦ I would plug it to displacement maybeā€¦ to generate real geometry, not fake one with normal input of the shader? :slight_smile:

Edit: While learning PBR I also recommend reading this: The PBR Guide - Part 1 on Substance 3D Tutorials (and the 2nd part)

Edit2: I try to avoid using AO maps nowadays. Esp. with cycles (or other ray tracers) it shouldnā€™t be needed. Itā€™s more for game engines (and maybe eevee) to fake some contact shadows (but there is always a drawback, that sometimes it might not look right)

3 Likes

Hi bOBaN,

thanks for your reply and advice. In this project i use a NormalMap (on bsdf Normal-Socket) as well as a HeightMap (on Displacement-Socket) as seen in the screenshots. Or does one map render the other map unuseful? I left the AO in the tree but turned it off for now, since it didnĀ“t really make a difference.

1 Like

If the maps are created well than displacement and normal should add information together. So using them together is OK.

I see from your node setup :
image

That you use ā€˜bumpā€™ node. Assuming that on the input is normal map - this will not use it fully. Bump node generates normal information from height values. So if you plug in normal map there you are effectively loosing some information (unless the bump node is doing some magic behind the scene, detects that you plugged in normal map there and calls a code of normal map nodeā€¦ which I doubt it does).

Edit: ah, and donā€™t take me wrong. Using AO map is not ā€œwrongā€. Itā€™s a part of PBR. Sometimes it can improve the renders. My thing is just to be mindful about using it and check if it adds value to your renders. Sometimes it can add much value, esp. if you want to emphesize the shadows or go for specific look. Sometimes it will do nothing. Most of the time Iā€™m just to lazy to bother with it when using path tracing, which is good enough at calculating AO from the actual scene.

1 Like

Ah I didnā€™t know that, good tip! Iā€™ve always used normal for normal and height for displacement.
Yes the author of those Substance PBR videos is really great, Iā€™ve gone through some of his stuff multiple times because thereā€™s so much information.

2 Likes

Cool, thanks again! Slowly i get a grip of how all that stuff works together, step by step!

1 Like

Privacy & Terms