3dCMS Knowledge Base
Open the editor
Importing & Assets

The Asset Library

Your account-wide media library for images, 3D models, audio, and HDRIs: upload once, use across every site.

Open in the interactive manual →

The interactive version has full-text search, a table of contents, and light/dark themes.


The Asset Library (Windows ▸ Asset Library) is your media closet: images, 3D models, audio, and HDRIs, stored on your account and shared across all your sites. Upload once, reuse everywhere.

Uploading

Drag and drop files onto the panel (several at once), or click Upload. Accepted types: png, jpg, webp, avif, gif, svg, glb, gltf, mp3, wav, ogg, m4a, hdr, exr.

LimitValue
Per fileup to 36 MB
Per account500 MB and 1,000 files

Your uploads are private to you. If you hit a limit, 3dCMS tells you clearly: the per-file figure is the largest file that can actually reach the server, so an over-size file is refused up front with a readable message rather than failing halfway through the upload.

Browsing & filtering

Filter with the chip row: All · Images · Cut-out · Texture · 3D · Audio · HDRI · Heavy · Personal · Public · Trash. Image assets show thumbnails; 3D models show a triangle-count badge and weight tier. AI-generated assets carry an AI badge with their prompt.

ChipShows
Cut-outOnly images with a transparent background (a detected alpha channel): the decals, logos, and foliage that become alpha-cutout planes.
TextureOnly complete PBR texture sets. A folder of channel-named maps (albedo + normal + ORMH) collapses into a single card (badged PBR) instead of cluttering the grid with four separate images. Placing it drops a plane carrying the whole material.
HeavyOnly the assets that cost a visitor real money to load. See below. The chip carries a count, so Heavy (4) tells you how many there are before you click it.
PersonalJust your own uploads (hides anything you've made public).

Which assets are heavy

A 67 MB model and a 5 KB one look identical on the shelf, so the library marks the expensive half. An asset is heavy when it carries 32 MB or more of textures or 25,000 triangles or more. Heavy cards show a small kettlebell beside their triangle count, and hovering it (or reading it with a screen reader) says which of the two numbers tripped. That's worth knowing, because shrinking maps does nothing for a dense mesh and decimating does nothing for heavy maps.

It's a weight, not a grade. A heavy asset isn't a mistake: plenty of scenes want exactly one hero model at that size. It just tells you that every visitor pays for it, which is the thing you can't see from a thumbnail. The judgement is made on the full-size original, not on the pre-shrunk copy a phone might receive: the card says what the asset is, since a desktop visitor gets the master. Assets uploaded before 3dCMS measured models carry no numbers at all, and those are left unmarked rather than vouched for as light.

An empty Heavy view is the good outcome, and it says so, "Nothing in your library is heavy" rather than pretending your filters found nothing. When something is in there, Decimate, a smaller texture, or a low-poly substitute are the three ways out; scene weight is where you see what it costs once placed.

Deleting an asset

Deleting from your library is a move to Trash, reversible from the Trash chip for 30 days. The confirmation first tells you who would notice: "Used by 3 of your scenes, 1 of them published and live." That count is the difference between tidying up and quietly breaking a page, and it isn't visible from a thumbnail.

When the 30 days run out, the sweep holds back any file a published scene still points at rather than deleting it, so a live page never turns into a placeholder box on a day nobody did anything. That is a safety net, not a lock: Delete forever inside the Trash is an explicit decision and removes the file either way. If you meant it, republish the scene without the asset first.

Search & keyword tags

The search box matches on both file names and keyword tags. Every asset carries tags built automatically from its name plus, for images, its dominant colours, so searching "blue", "wood", "fabric", or "flooring" surfaces the right assets even when the word isn't in the filename (material-category synonyms map common words onto tagged surfaces). As you type, matching tags auto-complete from a suggestion list.

To curate a card's tags yourself, click its 🏷 tag button: a little editor opens where you type tags (commit each with Enter or a comma), remove one with its × or Backspace, and Save. Good tags make a big library searchable in seconds.

Shrinking model textures

The textures inside a downloaded or generated 3D model are routinely 2048 or 4096 pixels square, more than any phone can display, and enough to crash a mobile browser tab while it's still loading. So the library quietly builds a pre-shrunk copy of each of your models: identical geometry, every embedded texture re-encoded at 1024 pixels. The savings are large: a 90 KB model came out at under 7 KB in testing.

A model you upload gets its shrunk copy immediately, built in your browser from the bytes it just sent, so a scene you upload to and publish in the same sitting is already phone-friendly, with no panel to open and nothing to wait for.

The library sweep is the backfill for everything else: models uploaded before this existed, and AI generations, which arrive on the server with no browser in the loop. While the panel is open it works through a few models at a time and shows a progress bar ("Shrinking model textures…" with the model it's on), and when models are still waiting it says so, with a Shrink all button to do the rest in one go (and Stop to call it off). It only runs on your own library, never on Trash or Public, and models it can't improve are marked once and never re-attempted.

Nothing changes about how you build The shrunk copy is chosen at load time by the visitor's device, not baked into your scene: phones and tablets get it, desktops keep the full-resolution original, and every already-published scene picks it up with no re-publish. Scene weight is still quoted against the real model, so the meter never flatters you. A model that hasn't been shrunk yet simply loads as it always did.

Baking loading outlines

A second, much cheaper sweep runs on the same panel: it bakes a tiny outline of each model, its own silhouette clustered down to a few hundred triangles with every texture stripped, tens of kilobytes against the model's megabytes. That's what stands in a published scene while the real model is still on its way, so a deferred forest reads as trees rather than as crates.

It works like the texture sweep: a few models at a time while the panel is open, a progress line reading "Baking model outlines…", a count of how many models still show a plain block, and a Bake all button (with Stop) to finish the rest in one go. It starts only after the texture sweep is done: each sweep deliberately handles one model at a time to avoid a memory spike on your machine, and two running at once would recreate exactly that spike. Models it can't read are marked once and skipped forever, and your own library is the only thing it touches.

A model you upload doesn't wait for the sweep: its outline is baked as part of bringing it in, from the bytes your browser just sent. The sweep is the backfill for everything else, AI generations included, since those arrive on the server with no browser in the loop. Which outline a published scene uses is stamped in when you publish, so republish an older site to pick up outlines baked since.

Placing an asset

There are two ways to get a card into the scene:

  • Click a card: the asset lands at the centre of your current view (repeat placements nudge along so they don't stack).
  • Drag a card onto the viewport: it drops exactly where you release, sitting on the ground level of whatever you're looking at, and your camera stays put.

Your images are also offered inside the objects that display one: select a Web Image block and Properties opens with a Choose from your images dropdown listing this same library, so swapping the picture in a framed slot is one click rather than a trip through here to copy an address. The particle sprite and spotlight gobo pickers work the same way.

Use your own copy, not someone else's address Pasting an image address from another website into a Web Image block (or a video block's poster) looks fine in the editor and breaks for everyone else. Those pictures are fetched through a proxy that requires a signed-in caller, and it has to stay that way: it is what stops a scene from being pointed at private addresses. So you see the image and every visitor to the published scene sees an empty plane. Upload the file here and pick it from Choose from your images instead. The scene lint flags hot-linked images by name, and publishing now runs the same check: the publish result carries an advisory warning naming the offending nodes, because publish is the moment your audience changes from you to everyone.

What each asset becomes:

AssetWhat happens
Image / HDRICreates a Plane with a real material bound to it.
GLB / glTFImports the model into the scene.
AudioAttaches as the audio clip of the selected page surface.

Dropping a texture onto an object

Drag an image or a PBR set card onto an object rather than onto empty space and it retextures that object instead of placing a new plane. While you drag, an amber cage appears around whatever is under the cursor: that's the thing you're about to paint, so you always know which of the two you'll get. Release over empty space and you get the old behaviour: a new plane where you dropped it.

It works on any geometry, imported models included, and lands as a single Undo. Drop the same card on five walls and you get one material shared by all five rather than five identical copies, so "make the brick less shiny" stays a single edit in Material Assets. (A material you've since tuned by hand is never quietly reused for a new drop.) Models, audio, and HDRIs ignore the target and place exactly as they always did. There's no sensible way to apply a model to a wall.

Sharing to the public library

The globe button on a card adds it to the public library, a shared shelf every signed-in user can browse under the Public chip. Any kind of asset can go there: 3D models, images and sprite sheets, audio, HDRIs, and colour LUTs. Click the globe again to take it back down.

Sharing is free, and so is browsing. Storage is charged only when someone actually takes a copy: placing a shared asset copies it into the taker's own library first, so their scene points at their file and can't break later if you unshare or delete yours. Your own shares still live in your library: the Personal chip is the view that hides them.

This is also how some particle presets arrive complete: the Ink drops presets pull their two watercolour flipbooks out of the public library and copy them into your own on apply.

Low-poly picture frames

Search frame under the Public chip and you'll find two very different sets. The detailed frames are full sculpted models: beautiful, and each one carries tens of megabytes of baked texture, which is a lot to spend on something hanging on a wall behind the thing you actually want looked at. Alongside them sit seven models whose names end in -lowpoly: contemporary (black), midcentury (walnut), artscrafts (oak), artdeco (stepped black and gilt), barbizon (gilt cove), cassetta (gilt mouldings around a charcoal frieze), and whistler (reeded gilt). Each is a moulding profile swept around a rectangle: a hundred triangles or so, a few kilobytes, and no textures at all, because the finish is a plain colour with metalness and roughness on it.

Neither set is the "real" one. Hang one frame around a hero piece and the detailed model is worth its cost; line a wall with six and the low-poly set gives you the same silhouette for a rounding error on your scene weight. They're the same orientation and scale as their detailed counterparts, so swapping one for the other is a straight substitution. Carved styles are deliberately not in the low-poly set: a hundred-triangle version of scrollwork reads as a different object, not a simpler one.

Spotted something off, or want a topic covered? Email hello@3dcms.info.