simvx.core.mesh_lod¶
Mesh Level of Detail (LOD) system.
Provides automatic mesh decimation via vertex clustering and distance-based LOD selection for efficient rendering of 3D scenes.
Usage::
from simvx.core import Mesh, MeshLOD, generate_lods
mesh = Mesh.sphere(radius=1.0, rings=32, segments=32)
lod = generate_lods(mesh, levels=3, ratios=[1.0, 0.5, 0.25])
level = lod.select_lod(distance=25.0)
Module Contents¶
Classes¶
Functions¶
Generate a |
Data¶
API¶
- simvx.core.mesh_lod.__all__¶
[‘LODLevel’, ‘MeshLOD’, ‘generate_lods’]
- class simvx.core.mesh_lod.LODLevel[source]¶
A single level of detail.
Attributes: mesh: The mesh geometry for this LOD level. ratio: Decimation ratio (1.0 = original, 0.5 = half the triangles). max_distance: Maximum camera distance at which this level is used.
float('inf')for the coarsest level (always a fallback).- mesh: simvx.core.graphics.mesh.Mesh¶
None
- ratio: float¶
1.0
- max_distance: float¶
‘float(…)’
- class simvx.core.mesh_lod.MeshLOD(levels: list[simvx.core.mesh_lod.LODLevel] | None = None)[source]¶
Container for multiple LOD levels of a single mesh.
Levels are stored sorted by ascending
max_distanceso thatselect_lodcan do a simple linear scan.Initialization
- __slots__¶
(‘_levels’,)
- property levels: list[simvx.core.mesh_lod.LODLevel]¶
All LOD levels, ordered by max_distance (nearest first).
- property level_count: int¶
- add_level(level: simvx.core.mesh_lod.LODLevel) None[source]¶
Insert a level, maintaining sorted order.
- select_lod(distance: float, bias: float = 0.0) simvx.core.mesh_lod.LODLevel[source]¶
Return the appropriate LOD level for distance.
Args: distance: Camera-to-object distance (world units). bias: Additive bias applied to thresholds. Positive values push selection toward coarser levels (cheaper), negative toward finer (higher quality).
Returns: The best
LODLevelfor the given distance.Raises: ValueError: If no levels are registered.
- simvx.core.mesh_lod.generate_lods(mesh: simvx.core.graphics.mesh.Mesh, levels: int = 3, ratios: list[float] | None = None, distances: list[float] | None = None) simvx.core.mesh_lod.MeshLOD[source]¶
Generate a
MeshLODfrom mesh by decimating at each ratio.Args: mesh: Source mesh (highest quality). levels: Number of LOD levels to produce. ratios: Per-level decimation ratios (descending), e.g.
[1.0, 0.5, 0.25]. Defaults to evenly spaced ratios from 1.0 down to1/levels. distances: Per-level max-distance thresholds. Defaults to[10, 25, inf]style geometric progression.Returns: A
MeshLODcontaining the requested levels.