Skip to content

Model viewer

The model viewer, Tools.ModelViewer, opens glTF, GLB, FBX and OBJ files straight from disk, with no project. Use it to look at models and play their animations, to browse a large collection such as a store pack or a folder of hundreds of FBX files, and to keep the models you pick in a library of collections, names and tags.

Run it with files to open, or with none and browse:

./Tools.ModelViewer [model files...] [--rest] [--skeleton]

--rest opens models in their rest pose with no clip playing; --skeleton starts with the bones drawn.

The window has a row of tabs. Browse and Library always come first, followed by a tab for each open model.

Each model opens in a tab of its own. Pass files on the command line, drop them on the window, or use the Open button (Ctrl+O), which takes several files at once. The Recent button beside it lists the models opened and the folders browsed lately. Opening a file that is open already goes to its tab.

Close a tab with its x or Ctrl+W, and drag tabs to reorder them. Ctrl+Tab and Ctrl+Shift+Tab step through the tabs.

The first time a model opens, it is cooked into the viewer’s cache, which takes a moment for a large file. After that it opens at once, until the file changes.

The view has the editor’s camera: Alt-drag orbits, right-drag looks around and WASD flies, middle-drag pans, the wheel zooms, and F frames the model. Each tab remembers where its camera was left.

The bar above the view has these buttons:

  • Frame the model (F).
  • Screenshot saves the 3D view, without the panels, as a PNG. By default it asks where to save each one; the preferences can send them all to one folder instead.
  • Grid shows or hides the ground grid.
  • Skeleton draws the bones over the model.
  • Turntable turns the model slowly about its middle.
  • Light sets the Exposure, the Ambient fill and the Sky’s brightness.
  • The last button shows or hides the side panel.

The side panel shows the model’s file and its numbers: meshes, vertices, triangles, materials, textures, bones, clips and its size in each axis. Below them are its materials and textures, and its place in the library (see The library).

A model with animations has a bar under the view: the clip that plays, play/pause (Space), stop (back to the start, paused), a frame back or forward (the Left and Right arrows), a scrub bar to drag through the clip, Loop, and the playback speed.

The Browse tab shows a folder: choose one with Choose folder, then pick a subfolder in the tree. Every model under the chosen folder appears as a thumbnail. Click a tile to see its details beside the grid, and double-click it, or choose Open in its details, to open it in a tab. The viewer remembers the folder.

Thumbnails are drawn in the background, one model at a time, and kept, so a folder opens with its pictures the next time. A model is cooked as it is drawn, so the window may pause briefly per model while a large folder is drawn for the first time.

Filter the grid by name (Ctrl+F goes to the filter), or to Rigged or Animated models (known once a model has been drawn), or to models already In library. The size control beside the grid makes the tiles small, medium or large.

Select several tiles with Ctrl+click, Shift+click or Ctrl+A. Right-click the selection to add it to a collection, or drag it onto a collection in the Library tab.

The library keeps the models you pick, in collections that can nest: a game, its levels, a list of props. A model can be in any number of collections. In each one it has a name, the id a game will know it by (hero, crate_small); a name is unique across a top-level collection and everything inside it, so two games can each have a hero. A model can also have tags (boss, low poly) and a note.

A model’s side panel (or its details in Browse and Library) has a Library section:

  • In lists the collections the model is in, each with its name there. Type a name and press Enter to set it; the x takes the model out of that collection.
  • Add to picks a collection, and the button beside it puts the model in.
  • Tags: type a tag and press Enter to add it; click a tag to remove it.
  • Note: any text about the model.

The Library tab shows the library. On the left is the tree: All models, Unsorted (the models in no collection), then the collections. The + above it makes a new collection inside the one chosen, or at the top, and the undo button steps back over the last change to the library, yours or an agent’s.

Right-click a collection for New collection inside, Rename, Export CSV…, Copy Files to Folder… and Delete. Deleting a collection deletes the collections inside it too, but its models stay in the library.

  • Export CSV… writes the collection as a spreadsheet: a row per model, with the collection, its name there, the file, its tags and its note.
  • Copy Files to Folder… copies the collection’s model files into a folder, a subfolder per collection inside it, each file renamed to the model’s name there and copied with the images and buffers it needs. A file that is already there and differs is never overwritten.

Under the tree, the Tags show every tag with how many models have it. Click a tag to show its models, and again to turn it off; several can be on at once, and Clear turns them all off. Right-click a tag to rename it or delete it from every model.

The search field (Ctrl+F) finds models whose every term matches:

  • a word matches a model’s name, its file’s name, its note or a tag;
  • tag:boss, or tag:"low poly" for a tag with a space;
  • collection:act1: a model in that collection or one inside it;
  • rigged, animated: what the viewer counted when it drew the model;
  • missing: the file is no longer where the library says.

The search looks in the collection chosen in the tree; Everywhere searches the whole library, and Sub-collections includes the models of the collections inside the chosen one.

Right-click a model in the grid to open it, add it to a collection, take it out of the collection shown, copy its path, show it in its folder, or remove it from the library. A model whose file has moved offers Relink… to point it at the file’s new place.

Every change is saved at once. Only one viewer at a time can change the library: a second viewer opened while one is running shows the library but cannot change it.

The Preferences button opens the viewer’s preferences, in three tabs:

  • General: where screenshots go (by default a ModelViewer folder in your Pictures folder), whether to ask where to save each one, and how they are named ({model}, {clip} and {time} stand for the model, the clip playing and a time stamp). Also the interface’s density, and how many recent models and folders to keep.
  • View: whether clips start looping; Look for loose textures beside the file (on by default); whether to draw the grid; the turntable’s speed; and the light the view starts with. Loose textures help with models whose texture links were lost on export, which is common with FBX files from packs: a material takes the image beside the model that has the material’s name, else the model’s, else the first one there. The setting applies to models opened after it is changed.
  • Cache: the size thumbnails are drawn at (96, 128 or 192 pixels, from the next start), the cache’s folder and size, and Clear cache.

Under the user data folder (~/.local/share/assiduousengine on Linux, %LOCALAPPDATA%\assiduousengine on Windows), model-viewer/ holds the library (library.xml), the preferences and recent items (settings.txt) and, unless the preferences name another folder, the cache of cooked models and thumbnails. Clearing the cache is safe: each model and thumbnail is made again when it is next needed.

Started with --mcp (or --mcp-port <port>), the viewer serves its commands to an AI agent over MCP at http://127.0.0.1:7406/mcp, with the same token as the editor (see Connecting an agent). --headless serves them over standard input and output with no window, for organising a library from a terminal. Every control in the window is one of these commands, so an agent can do what you can: open models, take screenshots, and build and search the library while you watch. Its manual is the guide the viewer serves, docs://ModelViewerGuide.md.