So I have had a strange happening that I can't figure out - its been a day and a half of me trying and so I though I would make a post to see if anyone had any insights.
Our team's artist has made several models in blender - lets just say a tile, a dwarf, a robot, and a bridge. When these items are rendered, the tile has light on the correct side and the other objects do not - they are lit in the back. My first reaction was to flip the normals on the objects and see if the light rendered on the correct side - it does. But - when I draw the normals they appear to be correct.. not sure whats going on. Here is an example - the first bridge is the normals before flipping, and the second is the normals after flipping. The light appears on the correct side after flipping.
So if the normals are simply incorrect - thats not a big deal. But the thing is that when I flip the normals by multiplying by negative 1 the result is not exactly correct either. I think that's because the normals need to be reflected over the model's vertical axis rather than flipped. If I do that then the specular lighting is correct. That is, if the normal is pointing from the model to the upper left like \, where the comma is the model, then the new orientation needs to be ,/ rather than '\ if that makes any sense at all.
I don't understand why blender would be exporting models with normals like this which makes me think it has to be a mistake in my code somewhere.
Could it have to do with the coordinate system of the normals? I use assimp for importing and generate normals when they aren't available, but all these models have normals available.
Any insights would be helpful, thanks