Artifacts and distortions on a large scale mesh

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Arkinum

I’m having problems with a large scale 3D ‘terrain’ mesh, in that it gives me weird artifacts and distortions near the end edge of the mesh. Dark patches appear on the ground and the player character appears to sink below the mesh when arriving to the mesh boundaries, but if I move the camera around the problems disappears until I either move the character or camera.

The mesh is modelled and imported from Blender and seems to load right and the colliders work as expected, and no FPS drops.

I first had this problem on my dev rig using a Radeon graphics card and then tried to see if it was a problem with that rig and card itself, so I set up and recreated a simple project on my gaming rig that has a Nvidia card, and same issue. If I keep the mesh small I don’t have any issues, but when I scale up the ‘terrain’ mesh it produces the same artifacts as on my dev rig.

Here is a picture (assuming I uploaded it properly) of the problem.

Example of issue Clip-Problem hosted at ImgBB — ImgBB

I’ll include a mega link to the project I managed to recreate the problem in case it’s necessary for someone to look into it further.

To recreate the problem (assuming it’s not just some setting I’m missing):
-run the world.tscn
-use the typical WASD and mouse to control the character (esc key to exit)
-move character towards the edge/corner of the map

EDIT: As expected, I put a manual link to the picture…

:bust_in_silhouette: Reply From: putper

Thanks for providing the project!

Problem

Godot uses Mesh LOD. Basically when you import a mesh it creates low detailed versions of the mesh which it uses when it’s in the distance.
I think that, because you’re far from the center of the mesh, it loads in a lower detailed version that isn’t working well with the lighting.

Fix

  1. Double click Untitled.glb in your FileSystem it opens the Advanced Import settings.
  2. Select the mesh (Untitled_Plane) in the SceneTree.
  3. Set Generate LODs to Disable.
  4. Click Reimport.
    enter image description here

Real Fix

As described on the Mesh LOD wiki from Godot, it’s the most important method of improving performance. Depending on the scope of your game you might want to look into separating your map into smaller pieces for optimisation.

Thank you so much for the detailed explanation!

That did indeed fix my problem.

Arkinum | 2023-06-01 20:46