根据视点距离地面的高度调整near、far的比率,避免距地面太近时看不到地面的东西。
viewer->getCamera()->addCullCallback( new osgEarth::Util::AutoClipPlaneCullCallback(mapNode) );
原理为:
osgEarthUtil/AutoClipPlaneHandler.cpp
GeoPoint loc;
if ( map )
{
loc.fromWorld( map->getSRS(), eye );
}
else
{
static osg::EllipsoidModel em;
osg::Vec3d t;
em.convertXYZToLatLongHeight( eye.x(), eye.y(), eye.z(), loc.y(), loc.x(), loc.z() );
}
//double hae = loc.z();
double hae = loc.z();
if (_mapNode.valid())
{