# lsdtools.camera reference
URL: https://lsd.tools/docs/sdk-lsdtools-camera
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
The camera-controller service's public contract for the package that authors controllers: lazy.

The lsd-camera-controller package's steps call ``build_cameras`` / ``build_actors`` and the two
layer payloads; its declarations name the feature namespaces, the timeline adapter and the
presentation the runtime publishes; its settings editor authors a camera's rig settings document
against ``RIG_PARAMETERS`` and its input contribution declares the actions the rig reads
(``ACTION_MAP`` and the ``*_ACTION`` refs). Importing this facade loads no driver and no view.
```


## `lsdtools.camera.ACTION_MAP`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:34`.

```python
ACTION_MAP = 'CameraController'
```


Implementation alias: `lsd_camera.rig.input.ACTION_MAP`.

## `lsdtools.camera.ACTORS_LAYER_KIND`

Kind: value. Source: `services/camera/src/lsd_camera/build.py:58`.

```python
ACTORS_LAYER_KIND: Final
```


```python
ACTORS_LAYER_KIND = 'actors'
```


Implementation alias: `lsd_camera.build.ACTORS_LAYER_KIND`.

## `lsdtools.camera.ACTOR_ARCHETYPE`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:53`.

```python
ACTOR_ARCHETYPE = 'actor'
```


Implementation alias: `lsd_camera.contracts.ACTOR_ARCHETYPE`.

## `lsdtools.camera.ACTOR_COLUMNS`

Kind: value. Source: `services/camera/src/lsd_camera/build.py:120`.

```python
ACTOR_COLUMNS: Final
```


```python
ACTOR_COLUMNS = ('eid', 'oid', 'controller_id', 'name', 'seat', 'device', 'target_entity_id', 'target_oid', 'target_eid', 'body_entity_id', 'body_oid', 'body_eid', 'move_action', 'jump_action', 'reset_action', 'speed', 'force_scale', 'jump_impulse', 'axis0', 'axis1', 'invert_second_axis', 'enabled')
```


Implementation alias: `lsd_camera.build.ACTOR_COLUMNS`.

## `lsdtools.camera.ACTOR_DEFAULTS`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:99`.

```python
ACTOR_DEFAULTS: dict[str, Any]
```


```python
ACTOR_DEFAULTS = {'seat': 0, 'device': None, 'move_action': 'Player/move', 'jump_action': 'Player/jump', 'reset_action': 'Player/reset', 'speed': 4.0, 'force_scale': 50.0, 'jump_impulse': 5.0, 'enabled': True}
```


Implementation alias: `lsd_camera.contracts.ACTOR_DEFAULTS`.

## `lsdtools.camera.ACTOR_NAMESPACE`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:55`.

```python
ACTOR_NAMESPACE = 'lsd-camera/actor@1'
```


Implementation alias: `lsd_camera.contracts.ACTOR_NAMESPACE`.

## `lsdtools.camera.BLEND_STYLES`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:61`.

```python
BLEND_STYLES = ('cut', 'linear', 'ease_in', 'ease_out', 'ease_in_out', 'hard_in', 'hard_out')
```


Implementation alias: `lsd_camera.rig.settings.BLEND_STYLES`.

## `lsdtools.camera.CAMERAS_LAYER_KIND`

Kind: value. Source: `services/camera/src/lsd_camera/build.py:57`.

```python
CAMERAS_LAYER_KIND: Final
```


```python
CAMERAS_LAYER_KIND = 'cameras'
```


Implementation alias: `lsd_camera.build.CAMERAS_LAYER_KIND`.

## `lsdtools.camera.CAMERA_ARCHETYPE`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:52`.

```python
CAMERA_ARCHETYPE = 'camera'
```


Implementation alias: `lsd_camera.contracts.CAMERA_ARCHETYPE`.

## `lsdtools.camera.CAMERA_COLUMNS`

Kind: value. Source: `services/camera/src/lsd_camera/build.py:62`.

```python
CAMERA_COLUMNS: Final
```


```python
CAMERA_COLUMNS = ('eid', 'oid', 'controller_id', 'name', 'mode', 'seat', 'target_entity_id', 'target_oid', 'target_eid', 'look_at_entity_id', 'look_at_oid', 'look_at_eid', 'x', 'y', 'z', 'qx', 'qy', 'qz', 'qw', 'ux', 'uy', 'uz', 'fov_deg', 'near', 'far', 'projection', 'orthographic_size', 'fx', 'fy', 'fz', 'tx', 'ty', 'tz', 'lx', 'ly', 'lz', 'settings', 'lod_settings')
```


Implementation alias: `lsd_camera.build.CAMERA_COLUMNS`.

## `lsdtools.camera.CAMERA_CONTROLLER_CONTRACT`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:46`.

```python
CAMERA_CONTROLLER_CONTRACT = 'lsd:camera-controller'
```


Implementation alias: `lsd_camera.contracts.CAMERA_CONTROLLER_CONTRACT`.

## `lsdtools.camera.CAMERA_DEFAULTS`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:72`.

```python
CAMERA_DEFAULTS: dict[str, Any]
```


```python
CAMERA_DEFAULTS = {'mode': 'free_fly', 'seat': None, 'x': 0.0, 'y': -36.0, 'z': 12.0, 'qx': 0.0, 'qy': 0.0, 'qz': 0.0, 'qw': 1.0, 'fov_deg': 60.0, 'near': 0.1, 'far': 500.0, 'projection': 'perspective', 'orthographic_size': 10.0, 'fx': 0.0, 'fy': -6.0, 'fz': 3.0, 'tx': 0.0, 'ty': 0.0, 'tz': 0.0, 'lx': 0.0, 'ly': 0.0, 'lz': 0.0, 'settings': '{}', 'lod_settings': canonical(CameraLODSettings().to_dict()).decode('utf-8')}
```


Implementation alias: `lsd_camera.contracts.CAMERA_DEFAULTS`.

## `lsdtools.camera.CAMERA_MODES`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:57`.

```python
CAMERA_MODES = ('free_fly', 'orbit', 'follow', 'third_person', 'first_person', 'rts', 'rail', 'fixed')
```


Implementation alias: `lsd_camera.contracts.CAMERA_MODES`.

## `lsdtools.camera.CAMERA_NAMESPACE`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:54`.

```python
CAMERA_NAMESPACE = 'lsd-camera/camera@1'
```


Implementation alias: `lsd_camera.contracts.CAMERA_NAMESPACE`.

## `lsdtools.camera.COLLISION_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:44`.

```python
COLLISION_ACTION = f'{ACTION_MAP}/collision'
```


Implementation alias: `lsd_camera.rig.input.COLLISION_ACTION`.

## `lsdtools.camera.CYCLE_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:43`.

```python
CYCLE_ACTION = f'{ACTION_MAP}/cycle'
```


Implementation alias: `lsd_camera.rig.input.CYCLE_ACTION`.

## `lsdtools.camera.CameraControllerAdapter`

Kind: class. Source: `services/camera/src/lsd_camera/timeline.py:139`.

```python
CameraControllerAdapter(self, context: Any) -> None
```


Source docstring:

```text
Endpoints over the live controller's free cameras; targets are camera eids.
```


Implementation alias: `lsd_camera.timeline.CameraControllerAdapter`.

### `lsdtools.camera.CameraControllerAdapter.seekable`

Kind: attribute. Source: `services/camera/src/lsd_camera/timeline.py:142`.

```python
seekable = True
```


### `lsdtools.camera.CameraControllerAdapter.__init__`

Kind: method. Source: `services/camera/src/lsd_camera/timeline.py:144`.

```python
__init__(self, context: Any) -> None
```


```python
context: Any
self: (unannotated)
```


### `lsdtools.camera.CameraControllerAdapter.bind`

Kind: method. Source: `services/camera/src/lsd_camera/timeline.py:158`.

```python
bind(self, spec: Any, target: Any) -> Endpoint
```


```python
self: (unannotated)
spec: Any
target: Any
```


### `lsdtools.camera.CameraControllerAdapter.release`

Kind: method. Source: `services/camera/src/lsd_camera/timeline.py:215`.

```python
release(self, key: Any) -> None
```


```python
key: Any
self: (unannotated)
```


### `lsdtools.camera.CameraControllerAdapter.claims`

Kind: method. Source: `services/camera/src/lsd_camera/timeline.py:220`.

```python
claims(self) -> tuple[int, ...]
```


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


### `lsdtools.camera.CameraControllerAdapter.states`

Kind: method. Source: `services/camera/src/lsd_camera/timeline.py:223`.

```python
states(self) -> Mapping[str, Any]
```


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


### `lsdtools.camera.CameraControllerAdapter.close`

Kind: method. Source: `services/camera/src/lsd_camera/timeline.py:226`.

```python
close(self) -> None
```


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


### `lsdtools.camera.CameraControllerAdapter.scene`

Kind: attribute. Source: `services/camera/src/lsd_camera/timeline.py:152`.

```python
scene: Any
```


```python
scene = context
```


### `lsdtools.camera.CameraControllerAdapter.system`

Kind: attribute. Source: `services/camera/src/lsd_camera/timeline.py:153`.

```python
system: (unannotated)
```


```python
system = system
```


## `lsdtools.camera.CameraError`

Kind: class. Source: `services/camera/src/lsd_camera/errors.py:6`.

Source docstring:

```text
Base class for the service's own failures.
```


Implementation alias: `lsd_camera.errors.CameraError`.

Declared bases: `Exception`.

### `lsdtools.camera.CameraError.code`

Kind: attribute. Source: `services/camera/src/lsd_camera/errors.py:9`.

```python
code = 'camera_error'
```


## `lsdtools.camera.ControllerError`

Kind: class. Source: `services/camera/src/lsd_camera/errors.py:18`.

Source docstring:

```text
The running controller refused something: a pose for a camera it does not own, an actor
whose body no system plays.
```


Implementation alias: `lsd_camera.errors.ControllerError`.

Declared bases: `CameraError`.

### `lsdtools.camera.ControllerError.code`

Kind: attribute. Source: `services/camera/src/lsd_camera/errors.py:22`.

```python
code = 'controller_error'
```


## `lsdtools.camera.ELEVATE_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:38`.

```python
ELEVATE_ACTION = f'{ACTION_MAP}/elevate'
```


Implementation alias: `lsd_camera.rig.input.ELEVATE_ACTION`.

## `lsdtools.camera.JUMP_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:39`.

```python
JUMP_ACTION = f'{ACTION_MAP}/jump'
```


Implementation alias: `lsd_camera.rig.input.JUMP_ACTION`.

## `lsdtools.camera.LOOK_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:36`.

```python
LOOK_ACTION = f'{ACTION_MAP}/look'
```


Implementation alias: `lsd_camera.rig.input.LOOK_ACTION`.

## `lsdtools.camera.MAX_SETTINGS_BYTES`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:65`.

```python
MAX_SETTINGS_BYTES = 256 * 1024
```


Implementation alias: `lsd_camera.rig.settings.MAX_SETTINGS_BYTES`.

## `lsdtools.camera.MOVE_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:35`.

```python
MOVE_ACTION = f'{ACTION_MAP}/move'
```


Implementation alias: `lsd_camera.rig.input.MOVE_ACTION`.

## `lsdtools.camera.PARTICIPANT`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:49`.

```python
PARTICIPANT = 'camera_controller'
```


Implementation alias: `lsd_camera.contracts.PARTICIPANT`.

## `lsdtools.camera.PARTICIPANT_PORTS`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:51`.

```python
PARTICIPANT_PORTS = {'cameras': 'table', 'actors': 'table'}
```


Implementation alias: `lsd_camera.contracts.PARTICIPANT_PORTS`.

## `lsdtools.camera.POSITION_CONTROLS`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:40`.

```python
POSITION_CONTROLS = ('preset', 'free_fly', 'follow', 'orbital_follow', 'third_person_follow', 'position_composer', 'hard_lock', 'spline_dolly', 'rts', 'fixed')
```


Implementation alias: `lsd_camera.rig.settings.POSITION_CONTROLS`.

## `lsdtools.camera.PRESENTATION`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:50`.

```python
PRESENTATION = 'camera_controller'
```


Implementation alias: `lsd_camera.contracts.PRESENTATION`.

## `lsdtools.camera.PROJECTIONS`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:69`.

```python
PROJECTIONS = ('perspective', 'orthographic')
```


Implementation alias: `lsd_camera.contracts.PROJECTIONS`.

## `lsdtools.camera.RAIL_INTERPOLATIONS`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:63`.

```python
RAIL_INTERPOLATIONS = ('linear', 'catmull_rom')
```


Implementation alias: `lsd_camera.rig.settings.RAIL_INTERPOLATIONS`.

## `lsdtools.camera.RAIL_WRAPS`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:64`.

```python
RAIL_WRAPS = ('clamp', 'loop', 'pingpong')
```


Implementation alias: `lsd_camera.rig.settings.RAIL_WRAPS`.

## `lsdtools.camera.RECENTER_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:42`.

```python
RECENTER_ACTION = f'{ACTION_MAP}/recenter'
```


Implementation alias: `lsd_camera.rig.input.RECENTER_ACTION`.

## `lsdtools.camera.RESET_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:41`.

```python
RESET_ACTION = f'{ACTION_MAP}/reset'
```


Implementation alias: `lsd_camera.rig.input.RESET_ACTION`.

## `lsdtools.camera.RIGS_STATE`

Kind: value. Source: `services/camera/src/lsd_camera/timeline.py:36`.

```python
RIGS_STATE = 'rigs'
```


Implementation alias: `lsd_camera.timeline.RIGS_STATE`.

## `lsdtools.camera.RIG_PARAMETERS`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:100`.

```python
RIG_PARAMETERS: dict[str, RigParameter]
```


```python
RIG_PARAMETERS = {'position_control': _choice('preset', POSITION_CONTROLS), 'rotation_control': _choice('preset', ROTATION_CONTROLS), 'enabled': RigParameter(True, bool), 'priority': _integer(0), 'output_channel': RigParameter('default', str), 'solo_rig': RigParameter('', str), 'rigs_json': _json_text('[]', list), 'custom_blends_json': _json_text('[]', list), 'default_blend_style': _choice('ease_in_out', BLEND_STYLES), 'default_blend_seconds': _number(0.35, 0.0, 30.0), 'standby_update': _choice('round_robin', STANDBY_UPDATES), 'target_actor_eid': _integer(0, 0), 'look_at_actor_eid': _integer(0, 0), 'target_group_json': _json_text('[]', list), 'distance': _number(6.0, 0.05, 10000.0), 'min_distance': _number(0.25, 0.01, 10000.0), 'max_distance': _number(100.0, 0.01, 1000000.0), 'damping': _number(0.0, 0.0, 1000.0), 'aim_damping': _number(0.0, 0.0, 1000.0), 'move_speed': _number(8.0, 0.0, 100000.0), 'look_speed': _number(2.2, 0.0, 1000.0), 'zoom_speed': _number(10.0, 0.0, 100000.0), 'sprint_multiplier': _number(3.0, 0.01, 100.0), 'yaw_degrees': RigParameter(None, float, minimum=-36000.0, maximum=36000.0), 'pitch_degrees': RigParameter(None, float, minimum=-89.0, maximum=89.0), 'min_pitch_degrees': _number(-85.0, -89.9, 89.9), 'max_pitch_degrees': _number(85.0, -89.9, 89.9), 'screen_x': _number(0.5, 0.0, 1.0), 'screen_y': _number(0.5, 0.0, 1.0), 'dead_zone_width': _number(0.0, 0.0, 1.0), 'dead_zone_height': _number(0.0, 0.0, 1.0), 'soft_zone_width': _number(0.8, 0.0, 2.0), 'soft_zone_height': _number(0.8, 0.0, 2.0), 'rail_points_json': _json_text('[]', list), 'rail_interpolation': _choice('catmull_rom', RAIL_INTERPOLATIONS), 'rail_wrap': _choice('clamp', RAIL_WRAPS), 'rail_progress': _number(0.0), 'rail_speed': _number(0.0, -1000.0, 1000.0), 'rail_look_ahead': _number(0.02, 0.0, 10.0), 'rail_playing': RigParameter(True, bool), 'dutch_degrees': _number(0.0, -180.0, 180.0), 'collision_enabled': RigParameter(False, bool), 'collision_radius': _number(0.2, 0.0, 100.0), 'collision_padding': _number(0.08, 0.0, 100.0), 'confiner_enabled': RigParameter(False, bool), 'confiner_min_json': _json_text('[-1000,-1000,-1000]', list), 'confiner_max_json': _json_text('[1000,1000,1000]', list), 'noise_amplitude': _number(0.0, 0.0, 1000.0), 'noise_frequency': _number(1.0, 0.0, 1000.0), 'noise_seed': _integer(0, 0, 2147483647), 'impulse_amplitude': _number(0.35, 0.0, 1000.0), 'impulse_duration': _number(0.3, 0.01, 60.0), 'impulse_frequency': _number(18.0, 0.0, 1000.0)}
```


Implementation alias: `lsd_camera.rig.settings.RIG_PARAMETERS`.

## `lsdtools.camera.ROTATION_CONTROLS`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:52`.

```python
ROTATION_CONTROLS = ('preset', 'none', 'hard_look_at', 'rotation_composer', 'pan_tilt', 'follow_target', 'path')
```


Implementation alias: `lsd_camera.rig.settings.ROTATION_CONTROLS`.

## `lsdtools.camera.ROW_OWNED_PARAMETERS`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:164`.

```python
ROW_OWNED_PARAMETERS = ('mode', 'field_of_view', 'fov_deg', 'seat', 'target_row', 'look_at_row', 'target', 'look_at', 'target_oid', 'look_at_oid', 'target_eid', 'look_at_eid', 'follow_offset_x', 'follow_offset_y', 'follow_offset_z', 'target_offset_x', 'target_offset_y', 'target_offset_z', 'look_offset_x', 'look_offset_y', 'look_offset_z', 'fixed_eye_x', 'fixed_eye_y', 'fixed_eye_z', 'fixed_target_x', 'fixed_target_y', 'fixed_target_z', 'projection', 'orthographic_size', 'near_clip', 'far_clip')
```


Implementation alias: `lsd_camera.rig.settings.ROW_OWNED_PARAMETERS`.

## `lsdtools.camera.RigParameter`

Kind: class. Source: `services/camera/src/lsd_camera/rig/settings.py:69`.

Source docstring:

```text
One settings parameter: its default and what values it takes.
```


Implementation alias: `lsd_camera.rig.settings.RigParameter`.

### `lsdtools.camera.RigParameter.default`

Kind: attribute. Source: `services/camera/src/lsd_camera/rig/settings.py:72`.

```python
default: Any
```


### `lsdtools.camera.RigParameter.kind`

Kind: attribute. Source: `services/camera/src/lsd_camera/rig/settings.py:73`.

```python
kind: type
```


### `lsdtools.camera.RigParameter.choices`

Kind: attribute. Source: `services/camera/src/lsd_camera/rig/settings.py:74`.

```python
choices: tuple[Any, ...]
```


```python
choices = ()
```


### `lsdtools.camera.RigParameter.minimum`

Kind: attribute. Source: `services/camera/src/lsd_camera/rig/settings.py:75`.

```python
minimum: float | None
```


```python
minimum = None
```


### `lsdtools.camera.RigParameter.maximum`

Kind: attribute. Source: `services/camera/src/lsd_camera/rig/settings.py:76`.

```python
maximum: float | None
```


```python
maximum = None
```


### `lsdtools.camera.RigParameter.json_container`

Kind: attribute. Source: `services/camera/src/lsd_camera/rig/settings.py:78`.

```python
json_container: type | None
```


```python
json_container = None
```


## `lsdtools.camera.SPRINT_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:40`.

```python
SPRINT_ACTION = f'{ACTION_MAP}/sprint'
```


Implementation alias: `lsd_camera.rig.input.SPRINT_ACTION`.

## `lsdtools.camera.STANDBY_UPDATES`

Kind: value. Source: `services/camera/src/lsd_camera/rig/settings.py:62`.

```python
STANDBY_UPDATES = ('never', 'always', 'round_robin')
```


Implementation alias: `lsd_camera.rig.settings.STANDBY_UPDATES`.

## `lsdtools.camera.SchemaError`

Kind: class. Source: `services/camera/src/lsd_camera/errors.py:12`.

Source docstring:

```text
An authored cameras or actors table (or the objects it references) is not what a build needs.
```


Implementation alias: `lsd_camera.errors.SchemaError`.

Declared bases: `CameraError`, `ValueError`.

### `lsdtools.camera.SchemaError.code`

Kind: attribute. Source: `services/camera/src/lsd_camera/errors.py:15`.

```python
code = 'schema_error'
```


## `lsdtools.camera.TRACKING_MODES`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:68`.

```python
TRACKING_MODES = ('orbit', 'follow', 'third_person', 'first_person', 'rail')
```


Implementation alias: `lsd_camera.contracts.TRACKING_MODES`.

## `lsdtools.camera.UP_AXES`

Kind: value. Source: `services/camera/src/lsd_camera/contracts.py:70`.

```python
UP_AXES = ('y', 'z')
```


Implementation alias: `lsd_camera.contracts.UP_AXES`.

## `lsdtools.camera.ZOOM_ACTION`

Kind: value. Source: `services/camera/src/lsd_camera/rig/input.py:37`.

```python
ZOOM_ACTION = f'{ACTION_MAP}/zoom'
```


Implementation alias: `lsd_camera.rig.input.ZOOM_ACTION`.

## `lsdtools.camera.actor_eid`

Kind: function. Source: `services/camera/src/lsd_camera/contracts.py:147`.

```python
actor_eid(controller_id: str, oid: str) -> int
```


```python
controller_id: str
oid: str
```


Source docstring:

```text
The identity of actor ``oid`` of controller ``controller_id``.
```


Implementation alias: `lsd_camera.contracts.actor_eid`.

## `lsdtools.camera.actor_feature_reference`

Kind: function. Source: `services/camera/src/lsd_camera/contracts.py:159`.

```python
actor_feature_reference() -> dict[str, Any]
```


Source docstring:

```text
Actors are picked by ``eid`` and reported by ``(controller_id, oid)``.
```


Implementation alias: `lsd_camera.contracts.actor_feature_reference`.

## `lsdtools.camera.actors_layer_payload`

Kind: function. Source: `services/camera/src/lsd_camera/build.py:582`.

```python
actors_layer_payload(authored: Any, actors: pa.Table) -> LayerPayload
```


```python
actors: pa.Table
authored: Any
```


Source docstring:

```text
The ``actors`` viewer layer (glyphs on the objects they drive) over the authored actors artifact.
```


Implementation alias: `lsd_camera.build.actors_layer_payload`.

## `lsdtools.camera.build_actors`

Kind: function. Source: `services/camera/src/lsd_camera/build.py:434`.

```python
build_actors(actors: pa.Table, objects: pa.Table, *, bodies: Optional[pa.Table]=None, up_axis: str='z', controller_id: str='controller', source_entity: Optional[str]=None, body_entity: Optional[str]=None) -> pa.Table
```


```python
actors: pa.Table
bodies: Optional[pa.Table]
body_entity: Optional[str]
controller_id: str
objects: pa.Table
source_entity: Optional[str]
up_axis: str
```


Source docstring:

```text
The controller's actors: the seat each reads and the object (or physics body) it drives.
```


Implementation alias: `lsd_camera.build.build_actors`.

## `lsdtools.camera.build_cameras`

Kind: function. Source: `services/camera/src/lsd_camera/build.py:307`.

```python
build_cameras(cameras: pa.Table, objects: pa.Table, *, up_axis: str='z', controller_id: str='controller', source_entity: Optional[str]=None) -> pa.Table
```


```python
cameras: pa.Table
controller_id: str
objects: pa.Table
source_entity: Optional[str]
up_axis: str
```


Source docstring:

```text
The controller's cameras: their modes, the objects they track and their own poses and lenses.
```


Implementation alias: `lsd_camera.build.build_cameras`.

## `lsdtools.camera.camera_eid`

Kind: function. Source: `services/camera/src/lsd_camera/contracts.py:142`.

```python
camera_eid(controller_id: str, oid: str) -> int
```


```python
controller_id: str
oid: str
```


Source docstring:

```text
The identity of camera ``oid`` of controller ``controller_id``.
```


Implementation alias: `lsd_camera.contracts.camera_eid`.

## `lsdtools.camera.camera_feature_reference`

Kind: function. Source: `services/camera/src/lsd_camera/contracts.py:152`.

```python
camera_feature_reference() -> dict[str, Any]
```


Source docstring:

```text
Cameras are picked by ``eid`` and reported by ``(controller_id, oid)``.
```


Implementation alias: `lsd_camera.contracts.camera_feature_reference`.

## `lsdtools.camera.camera_timeline_spec`

Kind: function. Source: `services/camera/src/lsd_camera/timeline.py:42`.

```python
camera_timeline_spec(owner: str='lsd-camera-controller')
```


```python
owner: str
```


Source docstring:

```text
The declaration the lsd-camera-controller package contributes; inspecting it creates no controller.
```


Implementation alias: `lsd_camera.timeline.camera_timeline_spec`.

## `lsdtools.camera.cameras_layer_payload`

Kind: function. Source: `services/camera/src/lsd_camera/build.py:570`.

```python
cameras_layer_payload(authored: Any, cameras: pa.Table) -> LayerPayload
```


```python
authored: Any
cameras: pa.Table
```


Source docstring:

```text
The ``cameras`` viewer layer (frustum glyphs) over the authored cameras artifact, built rows beside it.
```


Implementation alias: `lsd_camera.build.cameras_layer_payload`.

## `lsdtools.camera.controller_id_for`

Kind: function. Source: `services/camera/src/lsd_camera/contracts.py:126`.

```python
controller_id_for(entity_id: Any, explicit: str='') -> str
```


```python
entity_id: Any
explicit: str
```


Source docstring:

```text
The controller id: the explicit parameter when set, else derived from the owning entity id.
```


Implementation alias: `lsd_camera.contracts.controller_id_for`.

## `lsdtools.camera.controller_settings`

Kind: function. Source: `services/camera/src/lsd_camera/build.py:185`.

```python
controller_settings(table: Any) -> dict[str, Any]
```


```python
table: Any
```


Source docstring:

```text
The controller settings a build stamped on a built table (``controller_id``, ``up_axis``), or ``{}``.
```


Implementation alias: `lsd_camera.build.controller_settings`.

## `lsdtools.camera.custom_parameters`

Kind: function. Source: `services/camera/src/lsd_camera/rig/settings.py:267`.

```python
custom_parameters(parameters: Mapping[str, Any]) -> tuple[str, ...]
```


```python
parameters: Mapping[str, Any]
```


Source docstring:

```text
The names of the parameters a validated settings document sets away from the plain defaults.

A camera with none is *plain*: its rig reproduces the row's facts exactly (the pose
``tracking_pose`` computes for follow and first-person cameras), which is what the native
player lowers; anything else is the rig's own behaviour.
```


Implementation alias: `lsd_camera.rig.settings.custom_parameters`.

## `lsdtools.camera.parse_settings`

Kind: function. Source: `services/camera/src/lsd_camera/rig/settings.py:282`.

```python
parse_settings(text: Any) -> dict[str, Any]
```


```python
text: Any
```


Source docstring:

```text
The validated parameters of a settings column value (JSON text, ``None`` or empty = plain).
```


Implementation alias: `lsd_camera.rig.settings.parse_settings`.

## `lsdtools.camera.up_axis_defaults`

Kind: function. Source: `services/camera/src/lsd_camera/contracts.py:118`.

```python
up_axis_defaults(up_axis: str) -> dict[str, Any]
```


```python
up_axis: str
```


Source docstring:

```text
The camera ``up`` vector and the actor drive axes a world with this up axis defaults to.
```


Implementation alias: `lsd_camera.contracts.up_axis_defaults`.

## `lsdtools.camera.validate_rig_settings`

Kind: function. Source: `services/camera/src/lsd_camera/rig/settings.py:245`.

```python
validate_rig_settings(parameters: Mapping[str, Any] | None) -> dict[str, Any]
```


```python
parameters: Mapping[str, Any] | None
```


Source docstring:

```text
The parameters of one settings document, each validated; refuses unknown and row-owned keys.
```


Implementation alias: `lsd_camera.rig.settings.validate_rig_settings`.
