# lsdtools.lod reference
URL: https://lsd.tools/docs/sdk-lsdtools-lod
Updated: 2026-10-19

SDK distribution **1.0.0**; API contract **1.0**; generator **1.0.0**.

Product source digest: `170db6f659e9f79609ddaaec494ffad41f1d659a96001371132843e0c17a7e27`.

Generated from declared public exports and source syntax. Signatures and annotations are declaration spellings; decorators, factories and annotations are never executed. Class members below are declared members; base classes remain explicit. Source docstrings describe their owning implementation; they do not grant app permissions.

```text
Mesh detail and general per-consumer detail policies.

``prepare_family`` runs during asset preparation. Store ``MeshFamily.to_bytes()``
as a ``.meshfamily`` asset; runtime consumers only select its resident levels.

``DetailWorld`` shares camera measurements across independent ``DetailScheduler``
consumers. ``DetailDecision.tiers`` can select materials, lights, effects or any
owner-defined behavior; ``due`` optionally schedules periodic work. Owners apply
decisions and acknowledge successful work with ``commit``. No system is disabled
implicitly, and absent camera demand preserves full detail.
```


## `lsdtools.lod.CameraLODSettings`

Kind: class. Source: `core/lod/src/lsd_lod/model.py:100`.

Implementation alias: `lsd_lod.model.CameraLODSettings`.

### `lsdtools.lod.CameraLODSettings.lod`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:101`.

```python
lod: str
```


```python
lod = 'auto'
```


### `lsdtools.lod.CameraLODSettings.culling`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:102`.

```python
culling: str
```


```python
culling = 'frustum'
```


### `lsdtools.lod.CameraLODSettings.pixel_error`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:103`.

```python
pixel_error: float
```


```python
pixel_error = 1.0
```


### `lsdtools.lod.CameraLODSettings.hysteresis`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:104`.

```python
hysteresis: float
```


```python
hysteresis = 0.15
```


### `lsdtools.lod.CameraLODSettings.spatial`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:105`.

```python
spatial: str
```


```python
spatial = 'flat'
```


### `lsdtools.lod.CameraLODSettings.to_dict`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:117`.

```python
to_dict(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.CameraLODSettings.from_dict`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:121`.

```python
from_dict(cls, value)
```


```python
cls: (unannotated)
value: (unannotated)
```


## `lsdtools.lod.DetailCamera`

Kind: class. Source: `core/lod/src/lsd_lod/selector.py:95`.

Implementation alias: `lsd_lod.selector.Camera`.

### `lsdtools.lod.DetailCamera.position`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:96`.

```python
position: object
```


```python
position = (0.0, 0.0, 0.0)
```


### `lsdtools.lod.DetailCamera.rotation`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:97`.

```python
rotation: object
```


```python
rotation = ((1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0))
```


### `lsdtools.lod.DetailCamera.projection`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:98`.

```python
projection: str
```


```python
projection = 'perspective'
```


### `lsdtools.lod.DetailCamera.width`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:99`.

```python
width: int
```


```python
width = 1280
```


### `lsdtools.lod.DetailCamera.height`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:100`.

```python
height: int
```


```python
height = 720
```


### `lsdtools.lod.DetailCamera.fov_y_degrees`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:101`.

```python
fov_y_degrees: float
```


```python
fov_y_degrees = 60.0
```


### `lsdtools.lod.DetailCamera.ortho_height`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:102`.

```python
ortho_height: float
```


```python
ortho_height = 80.0
```


### `lsdtools.lod.DetailCamera.near`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:103`.

```python
near: float
```


```python
near = 0.1
```


### `lsdtools.lod.DetailCamera.far`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:104`.

```python
far: float
```


```python
far = 1000.0
```


### `lsdtools.lod.DetailCamera.pixel_error`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:105`.

```python
pixel_error: float
```


```python
pixel_error = 1.0
```


### `lsdtools.lod.DetailCamera.hysteresis`

Kind: attribute. Source: `core/lod/src/lsd_lod/selector.py:106`.

```python
hysteresis: float
```


```python
hysteresis = 0.15
```


### `lsdtools.lod.DetailCamera.native`

Kind: method. Source: `core/lod/src/lsd_lod/selector.py:108`.

```python
native(self)
```


```python
self: (unannotated)
```


## `lsdtools.lod.DetailDecision`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:374`.

Source docstring:

```text
Immutable stable-row work request. Commit only successfully performed rows.
```


Implementation alias: `lsd_lod.detail.DetailDecision`.

### `lsdtools.lod.DetailDecision.tick`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:377`.

```python
tick: int
```


### `lsdtools.lod.DetailDecision.tiers`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:378`.

```python
tiers: np.ndarray
```


### `lsdtools.lod.DetailDecision.period_ticks`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:379`.

```python
period_ticks: np.ndarray
```


### `lsdtools.lod.DetailDecision.paused`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:380`.

```python
paused: np.ndarray
```


### `lsdtools.lod.DetailDecision.changed`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:381`.

```python
changed: np.ndarray
```


### `lsdtools.lod.DetailDecision.due`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:382`.

```python
due: np.ndarray
```


### `lsdtools.lod.DetailDecision.elapsed_ticks`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:383`.

```python
elapsed_ticks: np.ndarray
```


### `lsdtools.lod.DetailDecision.visible`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:384`.

```python
visible: np.ndarray
```


### `lsdtools.lod.DetailDecision.known`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:385`.

```python
known: bool
```


### `lsdtools.lod.DetailDecision.incarnations`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:386`.

```python
incarnations: np.ndarray
```


## `lsdtools.lod.DetailMetrics`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:204`.

Source docstring:

```text
Immutable, complete stable-row camera measurements; stale snapshots reject.
```


Implementation alias: `lsd_lod.detail.DetailMetrics`.

### `lsdtools.lod.DetailMetrics.revision`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:207`.

```python
revision: int
```


### `lsdtools.lod.DetailMetrics.views`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:208`.

```python
views: Mapping[str, _ViewMetrics | None]
```


### `lsdtools.lod.DetailMetrics.importance`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:209`.

```python
importance: np.ndarray
```


### `lsdtools.lod.DetailMetrics.active`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:210`.

```python
active: np.ndarray
```


### `lsdtools.lod.DetailMetrics.incarnations`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:211`.

```python
incarnations: np.ndarray
```


### `lsdtools.lod.DetailMetrics.current`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:215`.

```python
current(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.DetailMetrics.population_id`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:219`.

```python
population_id(self)
```


```python
self: (unannotated)
```


## `lsdtools.lod.DetailPolicy`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:106`.

Source docstring:

```text
Explicit per-system policy; the default requests full work every tick.

Distance thresholds increase, pixel-diameter thresholds decrease. Tier zero
must be full and unpaused; coarser tiers cannot demand more frequent work.
Offscreen behavior is separately opt-in. Missing/unknown views fail open.
```


Implementation alias: `lsd_lod.detail.DetailPolicy`.

### `lsdtools.lod.DetailPolicy.metric`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:114`.

```python
metric: str
```


```python
metric = 'distance'
```


### `lsdtools.lod.DetailPolicy.thresholds`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:115`.

```python
thresholds: tuple[float, ...]
```


```python
thresholds = ()
```


### `lsdtools.lod.DetailPolicy.tiers`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:116`.

```python
tiers: tuple[DetailTier, ...]
```


```python
tiers = (DetailTier(),)
```


### `lsdtools.lod.DetailPolicy.offscreen_tier`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:117`.

```python
offscreen_tier: int | None
```


```python
offscreen_tier = None
```


### `lsdtools.lod.DetailPolicy.view_names`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:118`.

```python
view_names: tuple[str, ...] | None
```


```python
view_names = None
```


### `lsdtools.lod.DetailPolicy.hysteresis`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:119`.

```python
hysteresis: float
```


```python
hysteresis = 0.15
```


### `lsdtools.lod.DetailPolicy.to_dict`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:155`.

```python
to_dict(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.DetailPolicy.from_dict`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:162`.

```python
from_dict(cls, value)
```


```python
cls: (unannotated)
value: (unannotated)
```


## `lsdtools.lod.DetailScheduler`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:391`.

```python
DetailScheduler(self, count, *, policy=DetailPolicy(), max_bytes=128 << 20)
```


Source docstring:

```text
Independent policy/history for one optional animation, AI or other consumer.

Integer row phases distribute work without deadline drift. A skipped tick
yields one current update with its complete elapsed tick count, not a burst
of stale callbacks. Refinement, reveal from pause, replacement and explicit
dependency/dirty pins wake immediately. Authoritative simulation stays outside.
```


Implementation alias: `lsd_lod.detail.DetailScheduler`.

### `lsdtools.lod.DetailScheduler.__init__`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:400`.

```python
__init__(self, count, *, policy=DetailPolicy(), max_bytes=128 << 20)
```


```python
count: (unannotated)
max_bytes: (unannotated)
policy: (unannotated)
self: (unannotated)
```


### `lsdtools.lod.DetailScheduler.policy`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:422`.

```python
policy(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.DetailScheduler.set_policy`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:425`.

```python
set_policy(self, policy)
```


```python
policy: (unannotated)
self: (unannotated)
```


### `lsdtools.lod.DetailScheduler.evaluate`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:468`.

```python
evaluate(self, metrics, *, tick, required=None, dirty=None)
```


```python
dirty: (unannotated)
metrics: (unannotated)
required: (unannotated)
self: (unannotated)
tick: (unannotated)
```


Source docstring:

```text
Plan work; repeated unchanged calls before commit return the same value.
```


### `lsdtools.lod.DetailScheduler.commit`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:508`.

```python
commit(self, decision, rows=None, *, changed_rows=None)
```


```python
changed_rows: (unannotated)
decision: (unannotated)
rows: (unannotated)
self: (unannotated)
```


Source docstring:

```text
Acknowledge work and tier application independently, or successful subsets.

``rows`` defaults to all due optional work; ``changed_rows`` defaults to
all tier/paused transitions. Pass an empty integer list for a lane that
did no work. Paused materials/lights can therefore apply their new tier.
```


### `lsdtools.lod.DetailScheduler.reset`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:540`.

```python
reset(self)
```


```python
self: (unannotated)
```


Source docstring:

```text
Forget this consumer's history and population binding, retaining policy.
```


### `lsdtools.lod.DetailScheduler.capture`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:553`.

```python
capture(self)
```


```python
self: (unannotated)
```


Source docstring:

```text
Return owned JSON-data scheduling state; pending requests are not acknowledgements.

The owner also captures its authoritative population and consumer state.
Restore requires exactly matching population metadata/row incarnations.
Captures are explicit O(N) operations, outside the camera/tick fast path.
```


### `lsdtools.lod.DetailScheduler.restore`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:569`.

```python
restore(self, state, *, metrics)
```


```python
metrics: (unannotated)
self: (unannotated)
state: (unannotated)
```


Source docstring:

```text
Atomically restore a complete v1 capture into a matching current population.
```


### `lsdtools.lod.DetailScheduler.count`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:401`.

```python
count: (unannotated)
```


```python
count = _integer(count, 'count', 0, MAX_ROWS)
```


### `lsdtools.lod.DetailScheduler.byte_bound`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:403`.

```python
byte_bound: (unannotated)
```


```python
byte_bound = self.count * 192
```


## `lsdtools.lod.DetailTier`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:80`.

Source docstring:

```text
Generic tier metadata: optional work period in authoritative integer ticks.

``paused`` only describes this subscriber's optional work. It never means
global invisibility, disabling a light, or stopping authoritative simulation.
Consumers may use the tier index for their own material/light/quality choice.
```


Implementation alias: `lsd_lod.detail.DetailTier`.

### `lsdtools.lod.DetailTier.period_ticks`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:88`.

```python
period_ticks: int
```


```python
period_ticks = 1
```


### `lsdtools.lod.DetailTier.paused`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:89`.

```python
paused: bool
```


```python
paused = False
```


### `lsdtools.lod.DetailTier.to_dict`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:96`.

```python
to_dict(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.DetailTier.from_dict`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:100`.

```python
from_dict(cls, value)
```


```python
cls: (unannotated)
value: (unannotated)
```


## `lsdtools.lod.DetailView`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:173`.

Source docstring:

```text
Named complete view/pass input. ``camera=None`` explicitly means unknown.

An optional complete visible mask may come from a pass owner (for example,
shadow relevance). The mask never authorizes skipping required simulation.
Camera uses the shared selector's float64, positive-Z convention.
```


Implementation alias: `lsd_lod.detail.DetailView`.

### `lsdtools.lod.DetailView.name`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:181`.

```python
name: str
```


### `lsdtools.lod.DetailView.camera`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:182`.

```python
camera: Camera | None
```


### `lsdtools.lod.DetailView.visible`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:183`.

```python
visible: np.ndarray | None
```


```python
visible = None
```


## `lsdtools.lod.DetailWorld`

Kind: class. Source: `core/lod/src/lsd_lod/detail.py:223`.

```python
DetailWorld(self, centers, radii, *, importance=None, active=None, max_views=MAX_VIEWS, max_bytes=128 << 20, population_id=None)
```


Source docstring:

```text
Fixed-capacity owner shared by independent optional-work consumers.

``patch`` changes current object data. ``replace`` explicitly resets row
incarnations, including replacement while active. Publication is synchronous:
each measure call supplies the complete relevant view set. Unresolved views
must be included with camera=None, never represented by an old camera.
```


Implementation alias: `lsd_lod.detail.DetailWorld`.

### `lsdtools.lod.DetailWorld.__init__`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:232`.

```python
__init__(self, centers, radii, *, importance=None, active=None, max_views=MAX_VIEWS, max_bytes=128 << 20, population_id=None)
```


```python
active: (unannotated)
centers: (unannotated)
importance: (unannotated)
max_bytes: (unannotated)
max_views: (unannotated)
population_id: (unannotated)
radii: (unannotated)
self: (unannotated)
```


### `lsdtools.lod.DetailWorld.signature`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:260`.

```python
signature(self)
```


```python
self: (unannotated)
```


Source docstring:

```text
Exact metadata identity for deterministic owner-controlled restore.
```


### `lsdtools.lod.DetailWorld.patch`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:276`.

```python
patch(self, rows, *, centers=None, radii=None, importance=None, active=None)
```


```python
active: (unannotated)
centers: (unannotated)
importance: (unannotated)
radii: (unannotated)
rows: (unannotated)
self: (unannotated)
```


Source docstring:

```text
Atomically update rows. Retirement/reactivation resets their incarnations.
```


### `lsdtools.lod.DetailWorld.replace`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:280`.

```python
replace(self, rows, *, centers, radii, importance=None, active=None)
```


```python
active: (unannotated)
centers: (unannotated)
importance: (unannotated)
radii: (unannotated)
rows: (unannotated)
self: (unannotated)
```


Source docstring:

```text
Admit new objects into existing slots; no old scheduling debt is inherited.
```


### `lsdtools.lod.DetailWorld.measure`

Kind: method. Source: `core/lod/src/lsd_lod/detail.py:317`.

```python
measure(self, views)
```


```python
self: (unannotated)
views: (unannotated)
```


Source docstring:

```text
Measure changed camera/bounds inputs once; unchanged calls reuse snapshots.
```


### `lsdtools.lod.DetailWorld.count`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:237`.

```python
count: (unannotated)
```


```python
count = _integer(len(values), 'count', 0, MAX_ROWS)
```


### `lsdtools.lod.DetailWorld.max_views`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:238`.

```python
max_views: (unannotated)
```


```python
max_views = _integer(max_views, 'max_views', 1, MAX_VIEWS)
```


### `lsdtools.lod.DetailWorld.population_id`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:239`.

```python
population_id: (unannotated)
```


```python
population_id = _name(uuid.uuid4().hex if population_id is None else population_id)
```


### `lsdtools.lod.DetailWorld.byte_bound`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:243`.

```python
byte_bound: (unannotated)
```


```python
byte_bound = self.count * (192 + self.max_views * 64)
```


### `lsdtools.lod.DetailWorld.centers`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:247`.

```python
centers: (unannotated)
```


```python
centers = _frozen(_numbers(values, (n, 3), 'centers'))
```


### `lsdtools.lod.DetailWorld.radii`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:248`.

```python
radii: (unannotated)
```


```python
radii = _frozen(_numbers(radii, (n,), 'radii', nonnegative=True))
```


### `lsdtools.lod.DetailWorld.importance`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:249`.

```python
importance: (unannotated)
```


```python
importance = _frozen(np.ones(n) if importance is None else _numbers(importance, (n,), 'importance', positive=True))
```


### `lsdtools.lod.DetailWorld.active`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:251`.

```python
active: (unannotated)
```


```python
active = _frozen(np.ones(n, bool) if active is None else _mask(active, n, 'active'))
```


### `lsdtools.lod.DetailWorld.incarnations`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:252`.

```python
incarnations: (unannotated)
```


```python
incarnations = _frozen(np.ones(n, np.uint64))
```


### `lsdtools.lod.DetailWorld.revision`

Kind: attribute. Source: `core/lod/src/lsd_lod/detail.py:253`.

```python
revision: (unannotated)
```


```python
revision = 0
```


## `lsdtools.lod.INACTIVE_TIER`

Kind: value. Source: `core/lod/src/lsd_lod/detail.py:23`.

```python
INACTIVE_TIER = 255
```


Implementation alias: `lsd_lod.detail.INACTIVE_TIER`.

## `lsdtools.lod.MeshFamily`

Kind: class. Source: `core/lod/src/lsd_lod/model.py:186`.

Implementation alias: `lsd_lod.model.MeshFamily`.

### `lsdtools.lod.MeshFamily.levels`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:187`.

```python
levels: tuple[MeshLevel, ...]
```


### `lsdtools.lod.MeshFamily.settings`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:188`.

```python
settings: MeshLODSettings
```


```python
settings = field(default_factory=MeshLODSettings)
```


### `lsdtools.lod.MeshFamily.reason`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:189`.

```python
reason: str | None
```


```python
reason = None
```


### `lsdtools.lod.MeshFamily.provenance`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:190`.

```python
provenance: Mapping
```


```python
provenance = field(default_factory=dict)
```


### `lsdtools.lod.MeshFamily.center`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:191`.

```python
center: np.ndarray
```


```python
center = field(init=False)
```


### `lsdtools.lod.MeshFamily.radius`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:192`.

```python
radius: float
```


```python
radius = field(init=False)
```


### `lsdtools.lod.MeshFamily.errors`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:193`.

```python
errors: np.ndarray
```


```python
errors = field(init=False)
```


### `lsdtools.lod.MeshFamily.level_count`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:222`.

```python
level_count(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.MeshFamily.resident_bytes`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:226`.

```python
resident_bytes(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.MeshFamily.to_bytes`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:229`.

```python
to_bytes(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.MeshFamily.from_bytes`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:234`.

```python
from_bytes(cls, data)
```


```python
cls: (unannotated)
data: (unannotated)
```


### `lsdtools.lod.MeshFamily.digest`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:239`.

```python
digest(self)
```


```python
self: (unannotated)
```


## `lsdtools.lod.MeshLODSettings`

Kind: class. Source: `core/lod/src/lsd_lod/model.py:64`.

Implementation alias: `lsd_lod.model.MeshLODSettings`.

### `lsdtools.lod.MeshLODSettings.mode`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:65`.

```python
mode: str
```


```python
mode = 'auto'
```


### `lsdtools.lod.MeshLODSettings.max_levels`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:66`.

```python
max_levels: int
```


```python
max_levels = 4
```


### `lsdtools.lod.MeshLODSettings.min_source_triangles`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:67`.

```python
min_source_triangles: int
```


```python
min_source_triangles = 512
```


### `lsdtools.lod.MeshLODSettings.min_reduction_fraction`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:68`.

```python
min_reduction_fraction: float
```


```python
min_reduction_fraction = 0.25
```


### `lsdtools.lod.MeshLODSettings.min_triangles_saved`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:69`.

```python
min_triangles_saved: int
```


```python
min_triangles_saved = 128
```


### `lsdtools.lod.MeshLODSettings.ratios`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:70`.

```python
ratios: tuple[float, ...]
```


```python
ratios = (0.5, 0.25, 0.125)
```


### `lsdtools.lod.MeshLODSettings.max_family_bytes`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:71`.

```python
max_family_bytes: int
```


```python
max_family_bytes = 64 << 20
```


### `lsdtools.lod.MeshLODSettings.to_dict`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:91`.

```python
to_dict(self)
```


```python
self: (unannotated)
```


### `lsdtools.lod.MeshLODSettings.from_dict`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:95`.

```python
from_dict(cls, value)
```


```python
cls: (unannotated)
value: (unannotated)
```


## `lsdtools.lod.MeshLevel`

Kind: class. Source: `core/lod/src/lsd_lod/model.py:139`.

Implementation alias: `lsd_lod.model.MeshLevel`.

### `lsdtools.lod.MeshLevel.positions`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:140`.

```python
positions: np.ndarray
```


### `lsdtools.lod.MeshLevel.indices`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:141`.

```python
indices: np.ndarray
```


### `lsdtools.lod.MeshLevel.normals`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:142`.

```python
normals: np.ndarray | None
```


```python
normals = None
```


### `lsdtools.lod.MeshLevel.uv`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:143`.

```python
uv: np.ndarray | None
```


```python
uv = None
```


### `lsdtools.lod.MeshLevel.error`

Kind: attribute. Source: `core/lod/src/lsd_lod/model.py:144`.

```python
error: float
```


```python
error = 0.0
```


### `lsdtools.lod.MeshLevel.resident_bytes`

Kind: method. Source: `core/lod/src/lsd_lod/model.py:181`.

```python
resident_bytes(self)
```


```python
self: (unannotated)
```


## `lsdtools.lod.decode_families`

Kind: function. Source: `core/lod/src/lsd_lod/codec.py:146`.

```python
decode_families(data)
```


```python
data: (unannotated)
```


Implementation alias: `lsd_lod.codec.decode_families`.

## `lsdtools.lod.encode_families`

Kind: function. Source: `core/lod/src/lsd_lod/codec.py:125`.

```python
encode_families(families)
```


```python
families: (unannotated)
```


Source docstring:

```text
Encode ``mesh_id -> (MeshFamily, float64 world_origin[3])`` for delivery.
```


Implementation alias: `lsd_lod.codec.encode_families`.

## `lsdtools.lod.prepare_family`

Kind: function. Source: `core/lod/src/lsd_lod/prepare.py:11`.

```python
prepare_family(positions, indices, *, normals=None, uv=None, settings=None, eligible=True, unsupported_reason=None)
```


```python
eligible: (unannotated)
indices: (unannotated)
normals: (unannotated)
positions: (unannotated)
settings: (unannotated)
unsupported_reason: (unannotated)
uv: (unannotated)
```


Implementation alias: `lsd_lod.prepare.prepare_family`.
