/** * Extracts the smallest LOD fragment that satisfies the given LOD criterion . * * @param crit * criterion that the LOD must satisfies * @param roi * @return smallest LOD that satisfies the given LOD criterion */ public List<MeshFragment> extractLODFragment( LODCriterion crit, ViewFrustum roi ) { return new SpatialSelection( this, crit, roi, 1.0f ).determineLODFragment(); }
/** * The new LOD is based on the current viewfrustum and the maximum size of any textures. * * @param glRenderContext * @param zScale * @param textureManagers */ private Set<RenderMeshFragment> getNewLOD( RenderContext glRenderContext, float zScale, TextureManager[] textureManagers ) { ViewParams params = glRenderContext.getViewParams(); ViewFrustum frustum = params.getViewFrustum(); ViewFrustumCrit crit = new ViewFrustumCrit( params, (float) maxPixelError, zScale, glRenderContext.getMaxTextureSize(), textureManagers, (float) maxProjectedTexelSize ); SpatialSelection lodAdaptor = new SpatialSelection( fragmentManager.getMultiresolutionMesh(), crit, frustum, zScale ); List<MeshFragment> fragments = lodAdaptor.determineLODFragment(); Set<RenderMeshFragment> fragmentIds = new HashSet<RenderMeshFragment>( fragments.size() ); for ( MeshFragment fragment : fragments ) { fragmentIds.add( fragmentManager.renderFragments[fragment.id] ); } return fragmentIds; }