Google 3DTiles do not cast shadows

Having fun playing with the Google 3DTiles in the world, but I noticed that dynamic shadowing doesn’t seem to work properly with it.

I tried plugin versions 1.25.1 and 1.26 on UE 5.0.3.

The Google 3D Tiles use the glTF “unlit” extension, because they already have lighting baked in. But you can ignore this and rendering them with UE lighting anyway by setting the “Ignore KHR_materials_unlit” property on the Cesium3DTileset.

4 Likes

@Kevin_Ring what would you suggest if the “Ignore KHR_materials_unlit” property on the Cesium3DTileset isn’t visible?

@bradshales It should be visible regardless of the Cesium3DTileset. The setting will appear under the Rendering menu.

image

If it doesn’t show up for you, maybe something is wrong with the UI in the plugin? Can you share the combination of Unreal Engine and Cesium versions you’re using?

Hi @janine , thanks for getting back to me. I’m using Cesium 1.22.0 and UE5.1.1. below is a screenshot of available settings. Any guidance on this would be greatly appreciated. Cheers.

The option was added in v1.24.0:

you legend :slight_smile:

Thank you , omg i’m doing my first ever attempt, noob at unreal and cesium and my goodness I was staring at this setting when i read this and this saved me hours of looking thanks.

Ive got Ignore KHR_materials_unlit Ticked but I noticed theirs shadows being cast between tiles, anyone know how to fix this? This is UE 5.2

I think turning off “Generate Smooth Normals” may help. But in general it’s not fixable, short of turning unlit mode back on.

The Google tileset doesn’t include normals, so Cesium for Unreal generates them. When Generate Smooth Normals is enabled, per-vertex normals are computed in the normal fashion by a weighted average of the normal at each face that is connected to that vertex. But because the tiles include skirts at the edges in order to hide gaps between tiles, and because these skirt faces aren’t distinguishable from normal geometry, we end up averaging in a normal that is perpendicular to the “real” geometry and we get these dark lines on the edges.

When Generate Smooth Normals is disabled, vertices are duplicated as necessary so that every face is rendered with a normal that actually represents the direction that face… err… faces. That should reduce the shadowing, but when those skirt faces are visible in the gaps between tiles, they will have a very different color from the others, so it still won’t be 100% artifact free.

In short, the Google Photorealistic 3D Tiles are designed to be rendered in unlit mode, that’s why they have the KHR_materials_unlit extension. Turning it off creates some unavoidable artifacts.

Hi clicking ignore KHR_materials_unlit does not seem to change anything in my scene it looks exactly the same, everything behind the light is still bright help?

Hi clicking ignore KHR_materials_unlit does not seem to change anything in my scene it looks exactly the same, everything behind the light is still bright help?

You might have a different problem. Start a new thread, and include as much detail as you can, including screenshots. That “ignore” checkbox will only make a different for tilesets that actually use the KHR_materials_unlit extension.