Source code for unilab.visualization.playback
"""Playback rendering compatibility entrypoint."""
from __future__ import annotations
from pathlib import Path
from typing import Any, Callable, TypeVar, cast
import numpy as np
from unilab.base.backend.mujoco.playback import (
materialize_visual_playback_model as _materialize_visual_playback_model,
)
from unilab.base.backend.mujoco.playback import (
resolve_render_play_model_files as _resolve_render_play_model_files,
)
ObsT = TypeVar("ObsT")
[docs]
def render_play_mode(
env,
*,
sim_backend: str,
initialize: Callable[[], ObsT],
step: Callable[[ObsT], ObsT],
num_steps: int | None,
output_video: str | Path | None = None,
render_spacing: float | None = None,
render_offset_mode: str | None = None,
headless: bool | None = None,
record_video: bool | None = None,
frame_state_getter: Callable[[], np.ndarray] | None = None,
camera_kwargs: dict[str, Any] | None = None,
extra_data_getter: Callable[[], np.ndarray | None] | None = None,
) -> str | None:
"""Run playback through the env/backend playback contract.
``sim_backend`` is retained for older call sites; backend selection now
belongs to ``env.run_playback()`` and concrete backend implementations.
"""
del sim_backend
return cast(
str | None,
env.run_playback(
initialize=initialize,
step=step,
num_steps=num_steps,
output_video=output_video,
render_spacing=render_spacing,
render_offset_mode=render_offset_mode,
headless=headless,
record_video=record_video,
frame_state_getter=frame_state_getter,
camera_kwargs=camera_kwargs,
extra_data_getter=extra_data_getter,
),
)
__all__ = [
"render_play_mode",
"_materialize_visual_playback_model",
"_resolve_render_play_model_files",
]