Projects and Scenes

Last validated: 2026-05-05

Use this page when you need to understand what is stored in an Oden project, how to edit a Streamer or Player project, and where the old reference-style settings now fit.

Project files

Oden projects are .vproj files using libconfig syntax. They store scenes, entities, inputs, output settings, network links, plugin paths, and project-specific view settings.

Project Typical owner Common path

Streamer project

Vehicle computer or Fleet Streamer service

/opt/oden-streamer/oden-vehicle-config.vproj

Player project

Operator station or fleet-assigned Player profile

Project-specific path chosen from File  Open…​

Application config

Local application instance

Windows: %LOCALAPPDATA%\oden\oden.conf; Linux: $HOME/.config/oden/oden.conf

Prefer editing projects through the GUI. Edit .vproj files directly only for repeatable deployment changes that you can validate in Oden before shipping.

Edit a Streamer service project

When Oden Fleet Streamer runs as oden-streamer.service, stop the service before editing the same project in the GUI.

sudo systemctl stop oden-streamer.service
sudo oden-streamer /opt/oden-streamer/oden-vehicle-config.vproj
sudo systemctl start oden-streamer.service

The service runs as root, so the project file may be owned by root. If saving fails, check ownership and reopen with the required permissions.

To edit a headless Streamer remotely, run Streamer with the configurator mode enabled and connect from a Player project that contains both a Remote Streamer entity and a Streamer Configurator entity. The configurator streams the Streamer GUI to the Player so the project can be edited without a monitor on the vehicle computer.

Remote configurator workflow:

  1. Start the Streamer with --headless --configurator and the project you want to edit.

  2. Start the Player and connect to the vehicle.

  3. Add a Streamer Configurator entity to the Player scene.

  4. Select the entity and press the connect button in its Remote Streamer section.

  5. Edit the Streamer GUI in the streamed configurator window.

  6. Save the Streamer project and restart the service when the edited project is used by oden-streamer.service.

Some keyboard shortcuts may not work through the Streamer Configurator window.

GUI areas

Top menu

Use File to open, save, import, and export project material. Use Edit to undo, redo, copy, paste, add, and delete entities. By default, Paste Entity replaces pasted video inputs with clone streams to the original inputs. Use Ctrl+Shift+V when you intentionally want to copy the original inputs instead. Use Window for fullscreen behavior. Use Help for license activation, license info, changelog, manual, and About.

Common menu entries:

Menu Use

File

Open, save, and reopen recent projects. Import or export scenes, cameras, and templates when part of a project should be reused. Close the current project or exit the application.

Edit

Cut, copy, paste, add child entities, and delete selected entities. Many actions show their current keyboard shortcut in the menu.

Window

Control display mode and fullscreen behavior where the current application exposes those actions.

Help

Open the changelog, this manual, About, license entry, license information, and license revocation actions. For license workflow details, see Activate Licenses.

Sidebar

Root Entity holds the active scene graph. Scenes lists scenes in the project. Raw Recording records runtime video and scene data for later playback or support. Network and Output appear on Streamer. Plugins, Com Channels, Statistics, Project Settings, and Application Settings are shared concepts. The Player also exposes Player-specific settings such as HMD options when those features are available.

3D viewport

Hold the left mouse button and use W, A, S, and D to move the viewport camera. Use Q and E to move down and up. Use the home icon or Ctrl+Q to return to the origin. Oden uses a right-handed coordinate system: -Z is forward, +Y is up, and +X is right. Entity positions use meters, rotations use degrees, and scale is unitless.

Scenes and entities

A scene is a tree of entities. The root entity holds child entities such as 2D video, text, models, output alignment, webview-facing video layout, Remote Streamer, and Streamer Configurator entities. Add entities by selecting the intended parent and using Add Child. Drag entities in the tree to rearrange them. Parent position, rotation, and scale are applied to child entities, so an empty Entity is useful as a grouping node, pivot, or shared transform. For stable projects, place related siblings under a clear shared parent instead of creating deep trees only to move several items together.

Common entity choices:

Entity Use

2D Video

Show a video input or a received stream in a Player scene. Configure placement, size, curvature, stereo eye visibility, border, chroma key, matte key, and input source.

2D Image

Place a static image in the scene.

Text

Place labels, debug values, or operator hints in a native scene.

Model

Load and inspect a 3D model. Use collision mesh settings only when the project requires interaction or physics-like picking behavior.

Flexbox / Flexbox Group

Lay out child entities in rows or columns using web-style flex concepts. Use it for native multi-camera layouts when a webview is not controlling placement.

Remote Streamer

Receive video, audio, network stats, and Streamer feedback from a vehicle. Configure network links, audio receive/send, video codec expectations, reorder behavior, and stream diagnostics here.

Streamer Configurator

Open the Streamer GUI from the Player side. Useful for headless Streamer setup and service deployments.

Output Alignment

Map Streamer-side video sources into the encoded output. Use it when the Streamer output is composed from several video sources or when alignment must be controlled before encoding.

External Scene

Loads a .vscene file into the project. Use it when a shared scene should be imported, saved separately, or updated outside the main project file.

Video Composition

Creates one clonable texture from several video sources. Use it when several sources should be combined before another entity displays or clones them.

Scene Mirror

Mirrors the content of another scene. Use it to reuse shared scene content, such as a dashboard or common overlay, without duplicating the original entities.

Useful entity details:

2D Image

Loads static scene graphics from .png, .jpg, or .jpeg files. Alpha is supported for formats that carry transparency. Convert unsupported image formats before importing them.

Text

Exposes text content, color, glow, glow size, glow color, font, font height, and resolution settings. Use it for in-scene labels and instrumentation that should stay native to Oden rather than inside a webview.

Model

Loads glTF models. Use Clone Model or instanced rendering when a project needs several copies of the same model. Open loads the model file. Environment lighting can improve reflections but increases GPU work. Inspect Model is for temporary inspection; changes made there are not saved back to the source asset. Collision meshes are mainly for plugin interaction and project-specific picking workflows.

External Scene

Keeps scene content in a separate .vscene file. Use it for version-controlled shared scenes, reusable camera rigs, or scenes that several projects import. Child entities remain editable in Oden. Save Scene writes the .vscene file, and Auto Save keeps the external scene updated when the parent project is saved.

Streamer Configurator

Connects a Player-side configurator window to a Streamer GUI. Use direct server address entry when discovery cannot find the Streamer. Automatic discovery works best on the same local network. Use Bind Address or Bind IP when the computer has several interfaces and the configurator should use a specific one. The configurator UI scale follows the Player-side setting, the top-right controls set maximum width and height, and the bottom-right handle resizes the streamed window.

For camera/source configuration, see Camera Inputs. For Player layout details, see Player Layout.

Project settings

Project settings are saved inside the .vproj file. Use them for behavior that should travel with the project rather than the local computer.

Important settings:

Startup Scene

Scene opened when the project starts.

Background

Default background mode or color. Use Default, Default, Only For Orbit Camera, or Color when available. Set Background Color when the project should render against a fixed color.

Camera Eye

Which eye the monitor viewport shows when stereo/HMD output is configured.

Show Grid and Grid Height

Viewport grid display and height.

Force Feedback

Enables force feedback for supported joysticks.

Auto Video Packing

Automatically packs visible video into the encoded Streamer output. Use per-megapixel bitrate in stream settings when output resolution changes dynamically.

View

Field of view, position, rotation, project-default view, and saved states. Use Reset View To Project Default to return to the saved view. Use Set View As Project Default after positioning the viewport for the production layout. Save Current State records a named view state, and Clear All Saved States removes the saved list.

Save the project after changing project settings. For production projects, reopen the project and verify that the selected startup scene and saved view are still correct.

Application settings

Application settings are local to the computer and application config file. Use them for display and interaction behavior that should not necessarily travel with every project file.

Window Mode

Windowed uses a normal resizable window. Windowed Fullscreen fills the screen without native fullscreen. Fullscreen gives the lowest display latency on one monitor. Spanning Fullscreen is windowed fullscreen across multiple screens.

Monitor

Selects the display used by fullscreen and windowed-fullscreen modes when several monitors are attached.

Hide GUI on Startup

Starts the Player with commissioning controls hidden. The GUI can still be toggled with the configured shortcut, normally Ctrl+H.

Inhibit Mouse Look

Prevents mouse motion from moving the viewport camera. Enable this for operator stations where the mouse is part of an external UI.

VSync

Disable VSync for lowest latency unless a project-specific display setup needs it.

MSAA

Multisample anti-aliasing. Enable only when the visual quality benefit is worth the extra GPU cost.

Rendering Mode

Selects display projection behavior such as single projection, separate projection, spanning fullscreen, cylindrical, or dome-specific projection modes where available. Use normal single-display modes unless the deployment has a measured multi-projector or dome requirement.

Auto Template

Path to a .vtemplate file applied to loaded projects. Use it for repeatable deployment defaults, not for ad-hoc project edits.

Camera Calibration

Path to stored .camera calibration presets. The path may contain environment variables and must end with a slash, for example C:/dev/Cameras/.

Shrink View When GUI Visible

When enabled, Oden uses only the visible viewport while the GUI is shown. When disabled, Oden uses the full window as the viewport even behind the GUI, so entities do not move when the GUI is hidden.

Keyboard shortcuts

Many menu actions show their shortcut in the menu. Keep shortcut changes documented for operator stations. Each shortcut uses a key plus optional Ctrl, Shift, Alt, or Super modifiers. Modifiers can be combined. Set a shortcut to [Inactive] when the action must not be available from the keyboard.

Additional local behavior settings can include scroll mode, inverted mouse, GUI color mode, full project files, no prompt on exit, and only-show-exit-dialog. Use these as deployment controls for the local workstation, not as project behavior that should follow the .vproj to another machine.

Local files and directories

Application config, licenses, dome data, and global plugins are local to the machine. Do not assume they travel with a .vproj project file.

Data Typical location

Application config

Windows: %LOCALAPPDATA%\oden\oden.conf; Linux: $HOME/.config/oden/oden.conf

License data

Stored under the per-application Oden data root for the activated user. Typical roots are Windows C:\ProgramData\OdenVR\, C:\ProgramData\Oden Streamer\, C:\ProgramData\Oden Dome Player\; Linux $HOME/.config/oden/OdenVR/, $HOME/.config/oden/Oden_Streamer/, $HOME/.config/oden/Oden_Dome_Player/. For root-run services, activate with sudo so the service account can read key.conf and license2.lic.

Project plugins

Project file directory or configured Project Plugins Path.

Global plugins

Directory beside the Player or Streamer executable.

Dome and calibration assets

Project-specific path or configured calibration preset directory.

Launch modes

Use command-line flags in service files, startup scripts, or troubleshooting sessions.

Flag Use

--headless

Linux Streamer mode where the GUI is not rendered. Use it for services, vehicle computers, and embedded platforms.

--configurator

Allows a Player Streamer Configurator entity to connect to and configure a Streamer even without an active Remote Streamer connection.

--windowless

Runs the Player with the window hidden. Toggle with Ctrl+Shift+H.

--multiple-streamers

Allows more than one Streamer instance on the same computer. Use only when ports, project files, licenses, and capture devices are intentionally separated.

--plugin-param <key> <value>

Passes plugin-specific parameters from the launcher instead of storing them in the project.

For service deployment, see Deployment.