Passports for Polygons: Run a Real Audit on Your 3D Asset Library
Photo: Acroterion, CC BY-SA 4.0, via Wikimedia Commons
A freelancer in Columbus pinged me last spring with a familiar panic: a client wanted to reuse a hero prop from a campaign delivered eighteen months earlier, and nobody could say which of the four saved versions was approved, who modeled it, or whether the texture pack was licensed for a second product line. The files existed. The answers didn't.
That's the gap this article is about. Your asset library is probably not short on files. It's short on identity.
A folder is not a database
Folders tell you where something sits. They don't tell you what it is, who made it, what it's allowed to do, or which version shipped. Those four questions come up on virtually every project, and they're the reason studios in Brooklyn and Austin are quietly rebuilding their libraries around records instead of directory trees.
The mental shift: treat every model as a row in a production database that happens to have geometry attached. The geometry is the payload. Everything else is what makes the payload usable six months from now, when the person who built it has moved on and the Slack thread is archived.
What goes on the passport
A passport is a compact, human-readable record that travels with the asset. Five field groups cover almost everything:
Identity. A stable asset ID that never changes, a display name, a short description, a category, and searchable tags. Keep the ID boring and permanent — slugs and filenames will drift, IDs shouldn't.
Technical. Polycount, texture resolutions, unit scale, up-axis, material count, rig status, and the software plus version that produced it. Unit scale and up-axis are the two fields that cause the most silent failures when files hop between Blender, Maya, and Unreal.
Rights. License type, permitted uses, territory, expiration, attribution requirement, and the source of any third-party kitbash or scanned material. More on this below.
Lineage. Author, date created, source references, prior versions, and what changed between them.
Disclosure. Whether generative AI touched the asset, which tool, and at what stage — concept, base mesh, texture generation, or cleanup.
None of this needs exotic tooling. A JSON sidecar or a spreadsheet column set works fine to start. The point is that the record lives next to the asset and can be read by a human without opening the model.
Licensing is where audits earn their keep
The uncomfortable truth about most libraries: the licensing information lives in an email, if it lives anywhere. That's fine until the asset gets reused on a different project, resold as part of a pack, or handed to a client who assumes they bought full rights.
During an audit, walk each asset through three questions. Can this be used commercially? Can it be redistributed as part of a deliverable? Does anything inside it — a scanned fabric, a purchased HDRI, a third-party foliage pack — carry stricter terms than the model as a whole?
Anything you can't answer gets flagged. Flagged assets aren't deleted, they're quarantined: still usable internally for pitches and tests, blocked from client delivery until someone clears them. That single rule has saved more studios from awkward conversations than any amount of file naming discipline.
AI disclosure stopped being optional
Over the past few years, client contracts have started asking a question that used to be nobody's business: did a generative model produce any part of this? The question isn't going away, and the answer needs to be recorded at creation time, not reconstructed later.
Practical approach: add a single field with three states — none, assisted, generated — plus a free-text note for tool and stage. If a concept image was AI-generated and then hand-modeled, say so. If a texture was synthetically generated and then painted over, say so. Precision here protects you; vague assurances don't.
Versioning that survives a deadline
Most version chaos is a naming problem wearing a disguise. The rule that works: immutable versions, mutable status.
Every save becomes a new version with a timestamped identifier. Approval state lives separately — draft, review, approved, retired — so you never have a file called final_final_v3_USE_THIS. The approved version is the one the passport points to; older ones stay in the library for reference but are marked retired.
If you use Git or Perforce, this is mostly free. If you use cloud storage, a version folder plus a status column gets you 80% of the way there with none of the learning curve.
Interchange formats are the passport's visa
Here's where the library design pays off. A model that only opens in its native DCC is a model that costs money every time someone new touches it.
Export two interchange targets alongside the source file. USD for scene assembly, layered look development, and anything headed toward a virtual production or larger pipeline. glTF for web, real-time review, and anything a client might open in a browser. Both carry material and hierarchy data far better than an OBJ ever did, and both are readable by tools your client already owns.
One caveat worth stating plainly: exports are derivatives. They inherit the passport but never replace the source. Keep the native file as the authoritative record and treat interchange files as generated artifacts you can rebuild.
The audit, step by step
Block a weekend. Work in passes, not perfection.
- Freeze the library. No new imports until the audit finishes. Otherwise you're mopping a running tap.
- Inventory everything. Filename, size, format, last modified, and where it came from. Automated listing tools handle this in minutes.
- Deduplicate ruthlessly. Near-identical meshes and duplicate texture sets are usually 20 to 40 percent of a mature library. Keep the best copy, retire the rest.
- Assign stable IDs to everything you keep. Retire the old filenames as aliases so searches still work.
- Fill identity and technical fields. Do the easy ones first — this pass alone usually reveals which assets are orphaned or broken.
- Resolve rights. Anything unclear goes into quarantine. Contact vendors where you can; document the gap where you can't.
- Add disclosure flags. Err toward over-disclosing. It costs nothing and answers the question before it's asked.
- Generate interchange derivatives for your top 20 percent of most-used assets. The long tail can wait.
- Publish a read-only index. A simple searchable page or sheet that your team — and eventually clients — can browse.
- Schedule a quarterly re-audit. Two hours, not two days. Libraries rot at the edges.
What done actually looks like
You'll know the audit worked when a question that used to take an afternoon takes ninety seconds. When a client asks whether a chair model can appear in a regional ad campaign, you open the passport and answer. When a new artist joins, they can find, understand, and correctly use assets without pinging anyone.
That's the whole pitch. Not tidiness for its own sake — speed, and the ability to say yes to work you'd otherwise have to decline.