Starting from version 133 normal map creates artifacts on my scene with the GLTF model with SkinnedMesh, with morph targets and MeshPhysical material. Interesting fact that on version 135 it looks correct, and from 136+ (including the latest at this moment 156.1) with artifacts again. Can somebody tell me what can cause this and how I can fix it? The only thing I changed in the setup during testing is the three.js version.
This is how it looks on versions 131-132 and 135:
Versions 133-134, 136+:
Some sort of gamma/color space issue.
Have you tried running BufferGeometry.computeTangents on the geometry of the skinned mesh? There were a couple of threads on this topic in the past few months that address a couple of different causes of this issue and fixes for each, ill try to dig them up if the above doesn’t solve…
computeTangets only creates additional light artifacts. Forgot to mention that I have spot light and ambient light on the scene.
where did you export the model from was it Blender? any chance you can make a minimal live reproduction in codepen / js fiddle / codesandbox and or share the model here?
here’s a minimal boilerplate if you need…
Compare changed of versions or ask at Mugen
Here is the reproducible demo:
If I change three versions to 135 or <133 it works fine. The same when removing normalMap.
The problem seems to be with setting sRGBEncoding encoding of the normal map texture.
normalMapTexture.encoding = THREE.sRGBEncoding;
add this at Line 73:
normalMapTexture.encoding = THREE.LinearEncoding;
Seem sRGB is not used/required for normal map.
maybe it’s converted automatically with recent versions, messing with the normals.
or just comment it out. the default encoding works which i think is LinearEncoding anyway…