Library and Catalogs
Everything you place in a layout comes from a library. The library window lists the available sources as tabs, and which tabs you see is a deliberate choice rather than a side effect of the build: a catalog is either part of the project, shipped as the standard library, or explicitly attached by you.

Your project is the first library
Section titled “Your project is the first library”The project you are working in is the first tab and the default one. Everything you or the Editor saved into it is placeable straight away, with no publishing, registration or copying step in between.
The tab lists every document of the project, not just a designated library folder. Filter chips narrow it by where the document lives — scenes, models, library — but the folder is a place, not a type: any document can be placed.
Where a project document and a catalog entry are the same file, the project wins: the duplicate is hidden in the other tab, and a catalog tab left with nothing to show disappears from the list rather than sitting there empty.
The standard library
Section titled “The standard library”A standard parts library ships with every build and loads automatically at startup from the assets bundled with the deployment — not from any remote service. It appears as a catalog tab named realvirtual Library, and thumbnails for its entries are rendered as you browse.
Attaching your own catalogs
Section titled “Attaching your own catalogs”Additional catalogs are opt-in; none is loaded by default. Add one from the Catalog tab, or pass it on the URL (see below). Four kinds are supported:
| Source | What it is |
|---|---|
| Built-in | The catalogs bundled with the deployment, including the standard library. |
| Local Folder | A folder on your machine, picked once through the browser’s folder access. The planner scans library/ for .glb files and splats/ for .splat, .ksplat and .ply. |
| Remote URL | A catalog JSON hosted at a URL. |
| GitHub repository | A repository URL. The planner walks the repository tree through the public GitHub API, turns every .glb it finds into an entry, and needs no manifest file at all. |
Folders become filters
Section titled “Folders become filters”For a Local Folder catalog, subfolders become collection chips you can filter by. The first subfolder additionally maps to a category when it is one of conveyor, robot, machine, fixture or des. A GitHub scan does the same with the immediate parent folder of each file.
GitHub URL forms
Section titled “GitHub URL forms”https://github.com/<owner>/<repo>https://github.com/<owner>/<repo>/tree/<branch>https://github.com/<owner>/<repo>/tree/<branch>/<subfolder>
A URL pointing directly at a .json file, or at a /blob/ path, is treated as a catalog manifest or a single file rather than as a repository to scan.
Thumbnails
Section titled “Thumbnails”An entry without a supplied thumbnail gets one rendered from its GLB. For Local Folder catalogs the generated thumbnail is written back next to the source asset, so it does not have to be re-rendered on the next visit.
Attaching a catalog from the URL
Section titled “Attaching a catalog from the URL”?library=<url> appends a catalog source on top of the standard library. It is repeatable:
https://<your-deploy>/?mode=planner&library=<url-a>&library=<url-b>It accepts both catalog-JSON URLs and GitHub repository-scan URLs, which makes a prepared planning link a single address: the workspace, the document and the catalogs to plan with.
Pivots — where an object sits on the cursor
Section titled “Pivots — where an object sits on the cursor”The pivot decides where a placed object meets the floor and where the transform gizmo appears. It is recomputed when the object is loaded, in two steps:
- A
WebPivotmarker wins. If the asset carries one, its position becomes the object’s origin. Author it in Unity at the robot base, the flange or the corner you actually want to grab. - Otherwise: bottom-centre of the bounding box. The origin becomes the centre of the object’s bounding box, projected down to its floor — so a dropped object lands centred on the cursor with its lowest point on the ground.
The fallback uses the full bounding box, not the contact footprint. On an asymmetric object — a robot with a long overhanging arm, an L-shaped fixture — that puts the pivot over empty floor. That is predictable rather than clever; where you need it elsewhere, add a WebPivot.
Gaussian splat entries are excluded from the recalculation by default, since a splat has no meaningful bounding-box floor. A WebPivot marker still wins either way.
See also
Section titled “See also”- Layout Planner — the workspace and the planning workflow
- Snap points — how placed objects connect to each other
- Editor — authoring the objects you place
- Documents — projects, documents and how libraries are attached