Normal Map inverted when Merging Geograft using Geometry Node
Hi there!
I noticed a strange artifact, one of the normal map channels gets inverted when using geometry node for merging meshes.
I attach a GIF that shows the issue.
Thanks :)
Comments (19)
-
-
reporter Mmm I guess it’s not something related to the material, I’m using my own material on blender, it looks like the geometry node merge changes the mesh normals in some way.
-
reporter - attached blender_U3e0Zmo8At.mp4
<div class="preview-container wiki-content"><!-- loaded via ajax --></div> <div class="mask"></div> </div>
</div> </form>
-
reporter - attached GeoNodeNM.blend
-
I tested your scene and here it seems it’s a viewport artifact, if you render the scene it looks fine. Let me know if you can confirm.
-
reporter I tried rendering in cycles (I usually use eevee) and I get this :(
-
Yes I get the same behavior with cycles. It seems the join geometry node loses the normal map, if we bypass the join the bump works fine. No idea why sorry, may be this is a bug with geometry nodes in blender 3.3.1, but I never use geometry nodes myself so I’m definitely not an expert here.
May be @Thomas or @Midnight can help better.
note. My previous test render was with eevee where I get the same result if I enable/disable the geonode for the viewport. So eevee delivers different results than cycles, that could be a clue for a blender bug.
-
reporter Mmm strange, with eevee I get a different behavious, what blender version are you using? I’m on 3.3.1
Anyway it’s not a problem of inverted normal, I tried inverting it manually and I get a different result, I think it’s more a problem of mesh normals/tangents
-
I’m on 3.3.1 too. Yes with eevee it’s different and that’s the first test I did above. I can confirm your results, it seems somehow the join geometry node doubles the bump with eevee and clears the bump with cycles. Don’t know if this is a bug or some settings/nodes that have to be added.
-
UPDATE. SOLUTION (for Thomas to fix)
daz studio 4.21.0.5, blender 3.3.1, diffeomorphic 1.7.0.1286
Ok I believe I got it. Please note that I’m no expert at all on geonodes so I found this fix just by tweaking around and have no idea how/why it works. But the fix is simple, we just have to set all the object info nodes “as instance“, this way the normal maps are preserved.
Test scene included geo-bump.duf, it’s G8F with the Headlights geograft by Meipe.
https://www.renderotica.com/store/sku/57579_Headlights-For-Genesis-8-Female
steps:
- import the test scene geo-bump.duf and merge rigs
- merge geografts with geometry nodes, with or without “merge to new mesh“
Below there’s the fix applied to the test scene, works fine with cycles and eevee, also with the “merge to new mesh“ option.
From the blender documentation, please note that there are limits on what the join node can do, for example it can’t work with multiple volumes so the volumetric skin may not work fine. In general I believe geometry nodes are inefficient and not to be used for figures anyway, I don’t use them myself.
https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/geometry/join_geometry.html
The node cannot handle the case when more than one geometry input has a volume component.
note. This may also help
, since using instances should improve the viewport performance.#635 -
- attached geo-bump.duf
test scene for geonode bumps
-
- attached Gravel_001_Normal.jpg
.. and texture
-
reporter Believe me or not but I tried that instance flag too… but probably not all at the same time ^_^'!
Thanks a lot Alessandro for your time and help! -
@Thomas If you can fix this we can close as resolved. You have to set “as instance“ in all the object info nodes as shown above. Or please let us know if there’s any reason for not to fix this.
-
reporter Hi Alessandro, I only had time now to better control the scene, and it looks like using the “as instance” flag doesn’t merge the geografts anymore :(
-
reporter Adding a realize instances node after the join node fixes the merge problem, but brings back the normal issue.
I found this post with a similar problem, not sure if it can help in some way
https://blender.stackexchange.com/questions/254610/realizing-instances-in-geometry-nodes-changes-normals-how-to-repair -
Well I’ve no more ideas but I know very little of geonodes and don’t use them myself, not for figures anyway. So more experienced guys as @Thomas or @Midnight may help better. It may also be that this is a geonode bug.
edit. note. Here the geografts appear as merged when rendering, as shown in my image above, though in the viewport doesn’t seem so.
-
diffeomorphic 1.7.3, blender 3.6 and 4.0
This is fixed in blender 3.6.7 LTS and 4.0.2 with diffeomorphic 1.7.3. Below the results with the test scene geo-bump.duf it’s the same in iray and cycles/eevee. So probably this was a geonode bug in blender 3.3.1.
Closing as resolved.
-
- changed status to resolved
- Log in to comment
Normal maps are usually inverted in iray when used with translucency, this is because the translucency effect inverts the normal map itself being it viewed from backlight. If this is the case you’re reporting then it’s not a bug but the correct behavior.
If you have nothing to add I’ll mark as invalid.