Is there any material changes when the blend shapes are tweened, like some blended normal maps, etc?
If not I would say that most likely the blend shape you are tweening to has slightly different vertex normals in some way, so then the normal map when applied will draw differently when you tween to the secondary blend shape.
In your modelling app, can you compare the vert normals and see if they all match in the areas that do not move at all in the blend shape?
Hi @roc4u1000 thanks a lot for your answer, I didn’t check any of that but unfortunately that’s not the issue either. There’s no material changes in Godot when I change the value of the blend shape, and here’s how it looks in Blender. You can see that all normals stay in place, nothing is moving but the lids of the dinosaur:
It’s hard to tell in that screenshot, are you showing vert normals or face normals?
You might want to make a quick shader that only takes the vertex normals and draws them in RGB, wondering if you’d see any changes to those values when changing the blend shape.
example image, then the shader code after you can try, the idea with the shader is it really ‘should’ only show what the vert normals are doing when you tween the blend shapes, you’d want to look for any color changes. Also doing this in godot will see if there is possibly an import issue.
Yeah, that seems fine there, that would point to something material related like you were mentioning. I wonder if you’d see the same thing if you plugged in a normal map texture that was just that default normal blue.
Or if possible show some images of the normal texture as it’s shown in the godot inspector window when you have it selected, and it’s import settings. Then the material you are using and it’s settings.
Also as further testing, export the asset as a non-rigged mesh, and maybe even as two separate non-rigged meshes, one for each blend shape, to see them side by side in godot.
That was a very good idea! I put a GradientTexture1D in the normal map and the error is still there, so it’s definitely a problem with the normal maps.
Here’s the result:
This is the normal map image. I’ve tried both a PNG and a WEBP format.
If i remember correctly this is a blender problem not a godot problem. Havent worked with shapekeys in awhile but believe theres a setting when making them that preserves normals. Either that or a problem with how normals are being exported. Try messing with the settings in your exporter as well.
Wish i could be more specific, but ive run into this before in unreal. Problem was elsewhere
I already tried messing with that, this is a screenshot of the shape keys section in the gltf exporter in Blender:
I’ve tried all variations fo those 4 checkboxes, always with same results, but if you had this problem in Unreal maybe it is a Blender problem as you suggest. I will try searching the Blender forums.
Looking at it, it does seen to be related to the mesh tangents but not sure where it falls short, I do know that when I change the Blend Shape Mode from Normalized to Relative using the blend shapes will show that going from 1 to -1 in the sliders, the model inverts it’s scale, so I wonder if you have some odd transform differences on the different blend shapes in blender.
Apparently it’s the same problem. I’m using the compatibility renderer, which uses GLES3, in fact, when changing the test project to any of the other two rendereres, the issue is gone (even though the tangents are also modified by the blend shape, Godot renders the normals just fine).
In the issue they mention to export only deformation bones. I did so and the issue persisted. I just commented on the issue to see if someone can explain to me how it was solved, but I think it was not.
I think in unreal it had to do with normals import options. By default it gets set to “compute” as opposed to imported. Not sure if there’s an equivalent in godot, still new to the engine…