Godot Version
Godot 4.2.1
Question
Hey folks! I’ve made a model in Blender and imported it into Godot. Before you ask, I’m aware of the bug where lighting units aren’t the same and the lights are way way too bright in Godot, and I’ve already worked around that. This one is trickier, I think. The main issue is that first of all lights don’t appear to be blocked by geometry (including collision geometry), and then even besides that the reflections are weird and inconsistent between faces. Here’s a picture of Godot:
And here’s roughly that same area in blender:
So it kinda looks to me like a flipped normal situation, but in blender I can turn on face orientation, turn on visible normals, and turn on matcap and they all look right to me:
So everything looks right in blender.
What’s especially weird to me is that the lights in this scene are upstairs and in another room. There’s, like, 3 to 5 faces in between this wall and the light it appears to be showing. And what’s more, the light is actually through the wall, above but behind it in the way the camera is looking. So it doesn’t appear to be reflecting the light at all, but rather almost lensing it? If I turn on x-ray mode in Blender so I can see through the geometry it looks like this:
So I’d expect to be seeing the reflection of lights sort of behind and to the left of my camera, where I’ve drawn the dashed line, but there are no lights there. The lights it’s reacting to are the ones you can see behind the wall in the distance. If anything, I think it’s actually the dark faces on the wall and floor that are the accurate ones. There are currently no lights to illuminate those surfaces, but I think some of the faces appear to have decided differently?
Anyway, it doesn’t seem like Godot has as-rich tooling for debugging a mesh. Does Godot store some kind of per-face cache somewhere of which lights illuminate which face, which may be cleared somehow? I’ve turned the visibility of the lights on and off, and the environment, and while they react when the lights go out, they look the same as now when the lights come back on. I’m not currently using any kind of Global Illumination node or anything, just straight meshes, triplanar derived collision shapes, and omni lights.
Does anyone have any thoughts here?