diff --git a/panda/src/pgraph/config_pgraph.cxx b/panda/src/pgraph/config_pgraph.cxx index 4ee0609856..6906d6cdbf 100644 --- a/panda/src/pgraph/config_pgraph.cxx +++ b/panda/src/pgraph/config_pgraph.cxx @@ -220,7 +220,7 @@ ConfigVariableDouble lod_fade_time "transitions between its different levels.")); ConfigVariableBool verify_lods -("verify-lods", false, +("verify-lods", true, PRC_DESC("When this is true, LODNodes will test when they are rendered to " "ensure that each child's geometry fits entirely within the radius " "defined by its switch-out distance. When it is false, LODNodes " diff --git a/panda/src/pgraph/lodNode.cxx b/panda/src/pgraph/lodNode.cxx index bedae1dc9e..9c61850c4b 100644 --- a/panda/src/pgraph/lodNode.cxx +++ b/panda/src/pgraph/lodNode.cxx @@ -586,6 +586,7 @@ do_verify_child_bounds(const LODNode::CData *cdata, int index, if (flags == 0) { // This child's radius doesn't even come close to containing // its volume. + nassertr(!gbv->is_infinite(), false); sphere.extend_by(gbv); suggested_radius = sphere.get_radius(); return false; @@ -621,9 +622,13 @@ do_verify_child_bounds(const LODNode::CData *cdata, int index, // So if any part of this inscribed sphere is outside of the // radius, then the radius is bad. flags = sphere.contains(&box_sphere); - if (flags != BoundingVolume::IF_all) { + if ((flags & BoundingVolume::IF_all) == 0) { // No good. - sphere.extend_by(gbv); + if (gbv->is_infinite()) { + sphere.extend_by(&box_sphere); + } else { + sphere.extend_by(gbv); + } suggested_radius = sphere.get_radius(); return false; }