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

LODLevel

A single level of detail.

MeshLOD

Container for multiple LOD levels of a single mesh.

Functions

generate_lods

Generate a MeshLOD from mesh by decimating at each ratio.

Data

API

simvx.core.mesh_lod.__all__

[‘LODLevel’, ‘MeshLOD’, ‘generate_lods’]

simvx.core.mesh_lod.log[source]

‘getLogger(…)’

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_distance so that select_lod can 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 LODLevel for 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 MeshLOD from 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 to 1/levels. distances: Per-level max-distance thresholds. Defaults to [10, 25, inf] style geometric progression.

Returns: A MeshLOD containing the requested levels.