Viewport

HoloOcean simulations are run in a pop-up window known as the “viewport”.

Hotkeys

There are a few hotkeys you can use to control the viewport when the window is open and the environment is being ticked (with calls to tick() or step()).

The “AgentFollower”, or the camera that the viewport displays, can be manipulated as follows:

Key

Action

Description

c

Toggle camera mode

Toggles the camera from a chase camera and perspective camera, which shows what the agent’s camera sensor sees.

v

Toggle spectator mode

Toggles spectator mode, which allows you to free-cam around the world with the mouse or WASD commands.

w a s d

Move camera

Move the viewport camera around when in spectator/free-cam mode.

q ctrl

Descend

For spectator/free-cam mode

e space

Ascend

For spectator/free-cam mode

shift

Turbo

Move faster when in spectator/free-cam

tab

Cycle through agents

When not in spectator/free-cam mode, cycles through the agents in the world

h

Toggle HUD

The HUD displays the name and location of the agent the viewport is following, or the location of the camera if the viewport is detached (spectator mode)

Note that this will interfere with the ViewportCapture sensor

Opening Console

Pressing ~ will open Unreal Engine 5’s developer console, which has a few useful commands. See the Unreal Docs for a complete list of commands.

Useful Commands

  • stat fps Prints the frames per second on the screen.

Using HoloOcean Headless

On Linux, HoloOcean can run headless without opening a viewport window. This can happen automatically, or you can force it to not appear.

Headless Mode vs Disabling Viewport Rendering

These are two different features.

Disabling Viewport Rendering is calling the (should_render_viewport()) method on a HoloOceanEnvironment. This can be done at runtime. It will appear as if the image being rendered in the viewport has frozen, but cameras other sensors will still update correctly.

Headless Mode is when the viewport window does not appear. If Headless Mode is manually enabled, it will also disable viewport rendering automatically.

Forcing Headless Mode

In holoocean.make(), set show_viewport to False.

Note

This will also disable viewport rendering (should_render_viewport())

If you still want to render the viewport (ie for the ViewportCapture) when running headless, simply set (should_render_viewport()) to True

Automatic Headless Mode

If the engine does not detect the DISPLAY environment variable, it will not open a window. This will happen automatically if HoloOcean is run from a SSH session.

Note

This will not disable viewport rendering, meaning the simulaito nwill still be generating the displayed images, but they will not be displayed. When running over an SSH session, be sure to manually disable viewport rendering to avoid wasting resources.