These docs describe unreleased changes on main. See the latest release.

rlmesh.FrameSources

classfrom rlmesh import FrameSources[source]

The frame sources one connected env offers, in display order.

FrameSources(
    roles: tuple[str, ...],
    render_label: str | None,
    render: Callable[[], object] | None,
)

The single discovery result shared by the live viewer and the recorder, so the same env always yields the same camera vocabulary in the viewer HUD and in an exported bundle.

roles

attribute[source]
roles: tuple[str, ...]

The env’s declared image observation roles.

render_label

attribute[source]
render_label: str | None

Label for the env render() source, or None when the env exposes no rgb render mode. "render()" when a declared role is itself named render (the role keeps the plain name).

render

attribute[source]
render: Callable[[], object] | None

Zero-arg thunk returning the render() frame, or None.

labels

property[source]
property labels: tuple[str, ...]

Every source label, render first – the selector/camera vocabulary.

default_label

property[source]
property default_label: str | None

The source a viewer shows first: the first declared image role.

A role is read off the observation the step already returned, while the render() source costs one more env round trip per drawn frame, so render() is the default only for an env that declares no image role. None when the env offers no source at all.