i read the manual and reference on LODNode. they say LODNode consider node distance from camera.
but when camera FOV is reduced ( such as from 60 to 10 deg ), a far away node will appear large on screen and the LOD would be too low.
then i saw that, there is setLodScale, i could use it to compensate for FOV.
this can solve my problem if i have only one display region.
but when i have multiple display regions and each region has different FOV. then i have to call setLodScale for each display region.
assuming i could (best case scenario) use callback to make the call to setLODScale for each region, then i still have to make a call on every LODNode - in Python.
if i have 100 LODNode and 3 display region, then i call setLodScale 300 times per frame.
wouldn’t it be better if LODNode internally multiply distance and FOV ?

There is also a setLodScale on the camera which was added to handle this specific case.
The scale on the camera and LODNode are multiplied together.
Use the one on the camera to compensate for FOV, and set the one on the LODNode for the case where you want one thing to be higher or lower detail for some reason.

Here is some example code to adjust the scale based on FOV (adjust the 0.5 multiplier to get the right scale at your default FOV):

camera.node().setLodScale(math.tan(math.radians(current_fov * 0.5)))

i didn’t see setLodScale method in Camera class (Panda 1.81)
what version of Panda has it?

I think you will need 1.9.0 for this feature.