Null LOD and isVisible

So I’m kind of wondering why when a mesh is hidden by a null lod level that it still evaluates out to isVisible === true? I understand isEnabled === true because yes it still needs its matrices updated and to be evaluated as an active mesh, but why isVisible still true? If its at a null LOD step its obviously not visible.

It leads to interesting situations like this:

Where there is no visible element but it still has pointer observables firing on it and hover cursor effects. Rather interesting.

Right now to fix it I have a predicate override that checks the meshes current LOD level. Which works but ideally isVisible would just respect the LOD null and then none of that would be necessary.

isVisible is an user set data. The engine does not control it

It is for the user to hide (but still have the geometry in the pipeline for collisions, etc…)

Oh ok, for some reason I used to think that it was a getter also for if it was culled or something, so that was my misunderstanding. What about the adt pointer events still being able to be triggered even though the mesh is not really there?

Is my only option to do the mesh.getLOD(camera) in the predicate? That seems kind of intensive.

Technically the lod has a rendering only. For all the operations like picking, physics or collisions or anything geometry related the system uses the root mesh.

Long story short: yes for predicate :slight_smile: