Page MenuHome

Archmesh: Lights go through walls, doors or whatever
Closed, ArchivedPublic

Description

System Information
Operating system: Linux KDE Neon
Graphics card: Intel HD Graphics 5000

Blender Version
Blender 2.80 Beta

In Archmesh, although the walls are well defined at a height of 0, the lights pass through the walls, ceilings or floor. This causes the reflections of light from the continuous floor to be reflected in the room on the side. It is logical that this happens in doors and windows, but not in walls, floor and ceiling.

Details

Type
Bug

Event Timeline

Jacques Lucke (JacquesLucke) triaged this task as Needs Information from User priority.

You are only talking about Eevee, right?
@Clément Foucault (fclem) should know, if there is something you can do about it.

In any case, please upload the .blend file so that we can reproduce the issue.

Yes, the error appears when using the Eevee motor. It seems to me that the problem is in Archimesh, and possibly it's because the ceiling is a flat object just like the floor. I attach the file with the error.

It's not an error, it's a bad setup of the Exponential Shadow Map. Bumping the shadow exponent fixes the leaks.

See https://docs.blender.org/manual/en/dev/render/eevee/shadows.html for more info on shadow maps in Eevee.

Then the default configuration of the Archmesh material is misconfigured and the exponential shadow map has to be reduced. Because I haven't touched any of the default settings of Blender and Archmesh.

I still think it's a bug. If a light is blocked with a solid object, the rays should not pass to the other side. Because it has no atomic space for reflection and is supposed to bounce off the object. If I turn on the light in my room and go to the kitchen, I don't see the beam of light coming into the kitchen through the walls and reflecting off the floor, no matter how much the floor has reflection parameters. Then it should take the solid object that blocks the light. Also, if I supposedly give the height of the wall equal to the height of the ceiling, it is supposed to be a closed space and there is not even a millimeter through which the reflection of light passes. It seems to me that the light is not making a calculation of the objects that block the beam, and tells the material in the adjoining room that it should not reflect the light that is blocked by the opposing material.

The default shadow settings are more on the side of speed than precision. Use ESM shadows with more exponent or use VSM shadows with high bitdepth and 0 bias, make sure walls are thick (double sided), and adjust the Clip Start of the shadows. You should not get any light leaks with this.

It's not that your reasoning is wrong, is that Eevee is a real time engine and as such it uses real time game techniques that by definition can't be as accurate as ray tracing. The point of Eevee IS those limitations, the point of Eevee IS those approximations, to get fast speeds. Otherwise, you'd use Cycles.

I solved the problem of light reflections by using an initial shadow cutout at a value of 0.1 m. I had previously put a large exponential of 500.0 and an initial shadow cut of 1.0m. Now using the 0.1m measurement and the 24.000 exponential, the lights are no longer reflected in the continuous rooms.