Utilities » Magnum Player

Advanced app for loading and playing back scene and image files.


This app is built if MAGNUM_WITH_PLAYER is enabled when building Magnum Extras. To use this app with CMake, you need to request the player component of the MagnumExtras package and use the MagnumExtras::player target for example in a custom command:

find_package(MagnumExtras REQUIRED player)

add_custom_command(OUTPUT ... COMMAND MagnumExtras::player ...)

On desktop, a file is supplied via a command-line argument. In the WebAssembly build, files can be opened via drag & drop. The player supports any scene or image file that can be opened with plugns derived from Trade::AbstractImporter.


  • Space plays or pauses the animation
  • arrow keys seek the animation forward or backward
  • mouse drag rotates the scene around the cursor
  • Shift mouse drag pans the scene at depth of the cursor
  • mouse wheel zooms in/out relative to cursor position
  • right mouse button selects and highlights mesh under cursor, showing stats for it
  • Num 1 / Ctrl Num 1 switches to a front / back view
  • Num 3 / Ctrl Num 3 switches to a right / left view
  • Num 7 / Ctrl Num 7 switches to a top / bottom view
  • Num 0 resets the camera back to the original view
  • + / Num + or - / Num - increases or decreases lighting brightness
  • Ctrl mouse wheel adjusts length of TBN visualization lines
  • F5 re-imports currently loaded file (desktop version only, on the web drop a file again for equivalent behavior)
  • P toggles profiling output in the console (see also the --profile command-line option below)
  • Esc toggles UI rendering


magnum-player [--magnum-...] [-h|--help] [-I|--importer IMPORTER]
    [-i|--importer-options key=val,key2=val2,…] [--id ID]
    [--no-merge-animations] [--msaa N] [--profile VALUES] [-v|--verbose] [--]


  • file — file to load
  • -h, --help — display this help message and exit
  • -I, --importer IMPORTER — importer plugin to use (default: AnySceneImporter, with a fallback to AnyImageImporter when an image file is supplied)
  • -i, --importer-options key=val,key2=val2,… — configuration options to pass to the importer
  • --id ID — image or scene ID to import
  • --no-merge-animations — don't merge glTF animations into a single clip
  • --msaa N — MSAA level to use (if not set, defaults to 8x or 2x for HiDPI)
  • --profile VALUES — profile the rendering (default: FrameTime CpuDuration GpuDuration)
  • -v, --verbose — verbose output from importer plugins
  • --magnum-... — engine-specific options (see Command-line options for details)

The -i / --importer-options argument accepts a comma-separated list of key/value pairs to set in the importer plugin configuration. If the = character is omitted, it's equivalent to saying key=true; you can specify configuration subgroups using a slash.

The --profile option accepts a space-separated list of measured values. Available values correspond to DebugTools::FrameProfilerGL::Value names.


The screenshot was made using the Littlest Tokyo model by Glen Fox, licensed under the CC 4.0 Attribution license. The app makes use of the Adobe Source Sans Pro font through the Ui library, see its documentation for license information.