If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

What The Fesnel? (inconsistenr Fresnel effect on my object's materials)

Hi folks. I have an object that has (slightly too) perfectly aligned geometry, but even though the faces of some its parts are perfectly aligned with other faces, the fresnel effect is totally dominant on some suraces, but apparently absent on on other faces with identical orientation. I take it I've done something wrong, but I have no idea what that might be.

As you can see in my test render (cycles) the reflection totally dominates the side and doors, but is not dominant on the small faces just above and below the faces where the reflections are dominant.

It is a single object comprised of smaller meshes that each have a single-user instance of the material, where each instance has various rotations applied to the material instance's texture co-ordinates, however the fresnel in each instance remains identical. Perhaps the most obvious inconsistency is between the faces of the doors and the faces of the plank of wood that make the base of the bookshelf.

This is my first attempt at making a model I want to keep and use elsewhere, so any advice about why this is happening and how to avoid it it in the future would be greatly appreciated.

An image of your node setup would help - in particular how you have used the Fresnel node and what it's value is set at.

However you have to remember that the Fresnel effect is based on the viewing angle to the surface in question - so even if two surfaces are aligned in your mesh. Due to the position of the camera relative to those surfaces and perspective - your viewing angle of those surfaces and therefore the Fresnel effect will likely be different.

Your scene doesn't look very well setup to see the fresnel effect either - there isn't a great deal in your scene for your reflective surfaces to reflect - aside from the object itself and the floor. You could do with putting the object inside a room or adding a background environment map.

Activate node wrangler addon and preview the output from the fresnel node. As you rotate the view, fresnel effect should go toward white the more grazing the angle is, with a more darker output for the normals facing you. Map this also to a single plane - one side should give the correct result (normal toward you) and the backside would have an erroneous result (for this).

So, unify your normals (all pointing outwards) and you should have the correct result. If something is still wrong, you need to identify the underlying cause for normals to be wrongly aligned (non manifold can cause it, sometimes you may even need to reconstruct faces for no understandable reason).

The Fresnel effect is an inherent property of all reflective surfaces where the refractive indices of the materials are different (e.g. air and wood).

As such it's correct to apply it to most surfaces that have glossy reflections - especially ones simulating transparent materials (e.g. water, glass, polished or lacquered wood, car paint with a clear coat etc).

The glass shader already has a Fresnel component built in - so you only really need to use it when mixing glossy shaders with another underlying shader like diffuse or refraction.

You can of course use the 'layer weight - fresnel/facing' node too in order to achieve a similar effect given the correct settings, however the Fresnel node is set up to use the IOR of the transparent top coat - whereas the layer weight node uses a factor between 0 and 1 for both facing and fresnel components.

Personally I prefer to use the Fresnel node for applications like this.

As the saying goes - "everything has fresnel". Lacquer on wood would be a topcoat layer with its own fresnel, but wood itself would also have one, except here the glossy would tend to be very rough rather than polished smooth. That said, I will knowingly drop glossy and fresnel completely for rough surfaces, realizing I'm trading in realism for speed and noise handling.

Wow. Thanks for all the suggestions, folks. It turned out that all I deeded to do was just select all verticies in edit mode and recalculate the normals; once I'd done that, it all started to look more like I was expecting. The surfaces still look a bit too much like they've been sanded by a mathematician with OCD, but at least it's much closer now. I've been trying to replicate the wood texture Bartek Skoroupa creates in this video, but it didn't turn out quite as well as I'd hoped. The bumpiness that he creates seems absent from my attempt to replicate it, and I had to drop the scale of one of the noise textures to 1, because If I didn't, it just looked stupid. I'm fairly sure it's a functionally identical material, but it just doesn't seem to have any bumps and looks like a mess if I put the scale of the noise texture back up to 6.

I would have added my blend file, but I just assumed that, because I'm a new user, I wouldn't have the privilege to upload them.

Consider separating the various boards into separate objects. Then use the random input to offset the coordinate input. Currently it looks a bit like its carved out of a single piece of wood, whereas normally different panes comes from different boards and have their own slightly unique look as in this example.

Using image textures, the problem is reducing seams, repeats, and memory requirements.
Using procedurals, the problem is reducing seams (only in some cases), uniformity, and keeping it good enough whilst efficient.

Keep in mind that he setup the procedural texture for flexibility and control, then bake it out for rendering efficiency sacrificing memory usage (key when rendering on CUDA).

Thanks for the tips. Although it is a single object,each plank of wood is its own seperate mesh with a single-instance copy of the material applied to it with various (manually added) rotations and offsets. The z axis offset for the material is randomly generated, but because they're meshes within the object rather than seperate objects (just to keep it simple) the automatically generated Z offset is the same for each mesh.I added manual offsets and rotation co-ordinates to the material instances of each mesh, but I found it wierdly difficult to stop the grain pattern to stop matching up and looking like it was carved from a single block of wood, as you say.

With your last comment about CUDA rendering, are you saying it is better to offload what I can unto RAM/GPU memory? I noticed that when I did some test renders whilst I was just trying to get the basics of baking, that what took a few minutes to render without baking took ~6 seconds with a baked texture. It was just a suzanne with blue diffuse and white gloss effect hovering above a diffuse plane with something like 1024 or 2048 samples. That was going to be a thread for the future: what to bake for animations? Baking reflections obviously can't be done for animation, but I realized I can at least bake the spec map. No idea about sub surf scattering, though. Should I not look for information about somehow baking it because it's effects are dynamic like reflections are?

Multiple mesh within a single object doesn't make a difference when using the random input. If multiple mesh within single object is required, consider UV unwrapping, than assigning some random color to each mesh. You can then add this color (or scaled up factor of it) to the coordinates, and that might generate enough randomness. If they UVs are not supposed to be used for anything else (like baking or assigning stuff from) they can be as messy and overlapping as you wish without causing any issues.

I've not tried the following myself since I'm not into this. But for gaming style reflections, try rendering out the scene from a camera in the shelf location (incl the shelf) using a 360° camera. Instead of adding a glossy node for reflections you could apply this map using environment texture using reflected coordinates into an emission shader (possibly mixed in with other baked info). Obviously you won't get realistic reflections (each shelf and top would show the same), but it might work "good enough". It's pretty much the same as setting up a reflection sphere in game engines I guess.

Thanks. I know the randomly generated offset will be the same for each mesh when they comprise the same object, but I made sure to leasve inputs on my material node that allows for addition to the co-ordinates. So I can take the initial co-ordinates of, for example, (X, Y, Z = 0, 0, 72) for the entire object, and then add co-ordinates like (X,Y, Z = 0.3, -0.1, -37) and various rotations, on a per-mesh basis. The additional co-ordinates for each mesh have to be entered manually, but it seems like a reasonable compromise in order to keep things simple and require a minimum of effort to use. The aim tis to get the material looking as well as I can, and then bake as much as possible; things like diffuse textures, specular maps, bump makps and so on.

Thanks for the tip about the 360° camera. I've never heard of that before, so I'll have to go and learn a bit about it to fully understand your suggestion, but blender seems nothing but an uphill battle to learn an ever increasing number of concepts.

It's basically fresnel used to mix:
Emission referring to baked diffuse info.
Emission referring to environment map using reflected coords (reflectence probe/hdri, try with premade or make your own using 360*° camera).
This isn't something I do myself, as I don't have time to mess with UVs (required for bake) in my typical work.