Hello everyone, I've been struggling since yesterday with a problem related to normal maps, and visual artifacts.
To keep things short:
I applied some normal maps to my geometry, funky stuff started happening, visual artifacts, visible banding of the geometry, visible seams of the normal textures.
Tried different approaches and setting.
-Applied Scale / Scale is set.
-Smooth shading is enabled.
-UV Islands are flat.
-No extra Attributes are applied to the mesh (No custom normals or the like)
-Textures are Linear, Non-Color 16 bit png's.
This had never happened before, and I still have no idea what is going on or how to solve this.
Attached are a series of slides, any help is greatly appreciated.
Thanks in advance!
-Alan.






Replies
How exactly was the normal map created? Was it baked from geometry, or converted from a bitmap? What software was used to make it?
This looks like a tangent-space normal map, not an object-space map, so I would disregard any preview using object space.
Looks like you are viewing this inside Blender, but targeting a glTF export, is that correct? Have you tried exporting to glTF, and viewing in a webGL renderer like glTF Sample Viewer? Important note is that glTF does not support 16bit textures, so you'll need to downsample to 8 bits per channel (24bit).
Also, glTF disregards the alpha channel in a normal map, so if you want to apply this as a decal then bake it down with the bottom layer normal map.
http://wiki.polycount.com/wiki/Normal_map#Blending_Normal_Maps_Together
or maybe even check out this.. :
https://blenderartists.org/t/normal-map-combiner/1592752
( Didn't checked this out yet myself
Fortunately all my Normal related issues have been solved, however I came across another issue related to transmission, I have already exported my model with all the textures properly set (I believe) yet the transmission visible on the gltf viewer is not working properly, I can't see the objects behind the glass element, I'm not sure if this is a limitation or a mistake on my end. Iv'e tried several approaches but still does not work.
I also noticed that in the sample viewer my "transparent material count" is 0. Putting aside the technicalities of transparency vs transmissive , is this something to double check?
Thanks in advance!
-Alan
The glTF Sample Viewer only shows the Transparent Material Count for materials using alphaMode:Blend (commonly known as alpha blending) and/or alphaMode:Mask (commonly known as alpha test).
Transmission is not actually transparent in a real-time renderer. It's up to the renderer to choose how to render it, but typically what they do is:
1. Hide the triangles that have Transmission in their materials.
2. Render the rest of the scene, to an offscreen buffer (a temporary texture, usually updated constantly).
3. Unhide everything.
4. Project this offscreen buffer texture onto the triangles that have Transmission, using camera-space UVs. Distort the texture according to the normals of the triangles, and normal maps if present, and IOR value if present, etc.
So it's not true transparency, it's pre-rendering the scene "behind" the Transmission surface, and using that as a projected texture. But it usually looks awesome!
To enable Transmission in a Blender glTF export, you can follow the setup steps here:
https://docs.blender.org/manual/en/4.2/addons/import_export/scene_gltf2.html#transmission
You can see that issue in action here, on the meshes in the third column.
https://github.khronos.org/glTF-Sample-Viewer-Release/?model=https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/TransmissionOrderTest/glTF-Binary/TransmissionOrderTest.glb
In a raytracer or pathtracer, the orange wouldn't show up inside the glass refraction. But a real-time renderer is taking shortcuts, simply to render things fast enough to stay interactive for the user.
Thanks for the support! Happy to report that separating the mesh and just enabling Transmission (Without using the Transmission texture) solved my problem!
Yes! That is correct, I have changed it now to full white. I hate to be a pain in the butt but I have unfortunately hit a roadblock related to the animation of the hands. (I know the bare in terms on animation, timeline , actions and so on)
So I have two hands, each with their "separate animation" , when exporting only one of them rotates and the other one is still, I looked into NLA and Actions, Baking them and so on (Those concepts are all new to me), and nothing seems to work properly, a quick research on google pointed to some threads related to this issue but no functional answer so far.
Once again, any help is greatly appreciated!
-Alan
Just recently, a former colleague recently wrote his own glTF extension to dynamically move the clock hands, according to the viewer's local time. Here's a demo: https://www.3dmf.com/editor?uid=822e042c1f2a This is very very new, so it has not been released yet AFAIK, but if you are interested I can get him connected with you.
https://github.khronos.org/glTF-Sample-Viewer-Release/?model=https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/ChronographWatch/glTF-Binary/ChronographWatch.glb
Yes! That would be amazing Eric