GLB meshes seeming to lose definition at not much distance.

Godot Version

4.2

Question

I’m still very much a learner in Godot so feel like the problem might be an obvious one to somebody with more experience: So I’ve recently introduced a visual issue into my game whereby at certain camera distances and/or angles the detail on the meshes I’m using for my level map seems to disappear (see screenshots). The two main changes I’ve made since this problem appeared are:

  1. I’ve switched from cobbling my map together with a ton of 3x3 scenes utilising .fxb meshes to using Gridmap instead, aiming for a more scalable solution to allow me to potentially build more maps with less work (also because I only just found out Gridmap was a thing).

  2. My new gridmap uses a mesh library of GLB assets. I made this change for two reasons: a) I’d read that GLB is the more standard format used in Godot and also had hoped it would alleviate another visual issue I was seeing where black lines would flicker across the horizontal axis, and b) I can’t seem to get .fxb assets to work in a mesh library.

I’m using Git for version control so can easily skip back to before this was a problem. I’m 99% certain there are no changes in the project, camera or world environment settings between before and after this problem became apparent.


Also, wanted to upload a video to better show this problem but doesn’t seem possible (with .mov anyway).

It looks like it’s triggering the LOD. I had a similar thing happen. Apparently it works very strangely, but it’s something that needs to be looked into more.

1 Like

Yes! This must be it. Found this in the LOD docs:

“However, mesh LOD generation does not automatically happen for imported 3D meshes (OBJ). This is because OBJ files are not imported as full 3D scenes by default, but only as individual mesh resources to load into a MeshInstance3D node (or GPUParticles3D, CPUParticles3D, …).”

As mentioned I was using OBJ up until this point. I’ll see what I can do to tinker with the LOD settings later and report back.

Thanks tomcat, I wouldn’t have found that on my own - I didn’t know about the automatic LOD.

For anyone that runs into the same issue in the future, the fix in the end was to go into Project Settings > Rendering > Mesh LOD and to set the project-wide LOD Change > Threshold pixels value from 1 to 0.1.

I also tried to changing the mesh-lovel LOD Bias property on my floor meshes, but both the minimum and maximum allowed values applied to them seemed to make no difference at all.

1 Like

LOD works pretty strangely in Godot. In my case, reducing Threshold Pixels didn’t help, I had to completely disable it.