Our lifetime deal increases from $97 to $127 in03 days19 hours35 min28 secGet access for just $97 NOW
Formats & optimization

Asset format specification

Understand the GLB profiles used for individual catalog downloads, pack files, catalogs, prebuilds, configurators, and editable editions.

AP
Aron Prins
Founder · Updated Jul 22, 2026 · 2 min read
On this page (6)

threejsassets uses GLB (binary glTF 2.0) for 3D delivery. Compression, materials, textures, and scene structure vary by file type and pack. Read the current pack README and inspect the selected GLB instead of assuming one universal profile.

Container#

A GLB can contain geometry, materials, animations, and embedded images in one binary file. A pack ZIP may also include components, JSON reference data, documentation, a license, and optional preview or authoring files.

No FBX or engine-native prefab is promised unless a pack page explicitly lists it.

Common geometry profiles#

FileTypical current profileIntended use
Individual asset downloaded from the catalogWeb-optimized; may use DracoRender one catalog asset
Individual low-poly GLB inside a packCommonly uncompressedCompose a scene
Combined pack catalogJoined and Draco-compressedInspect many models in one file
PrebuildPack-specific; may use DracoUse a composed set-piece
Configurator GLBCommonly uncompressed with named materialsChange product zones at runtime
Editable authoring GLBUncompressed with preserved structureEdit supported parts and materials

These are profiles, not promises for every future release. A file that declares KHR_draco_mesh_compression needs a Draco decoder.

Textures#

Some processed textured files may use KTX2 / Basis Universal. Such a file needs KTX2Loader and detectSupport(renderer). Current low-poly environment packs are often texture-free and store colour in the COLOR_0 vertex attribute, so they do not need a texture decoder.

Configure only the loaders required by the selected file:

decoders.ts
const draco = new DRACOLoader().setDecoderPath('/draco/')
const ktx2 = new KTX2Loader()
  .setTranscoderPath('/basis/')
  .detectSupport(renderer)

const loader = new GLTFLoader()
  .setDRACOLoader(draco)
  .setKTX2Loader(ktx2)

Self-host decoder files that match your three.js version. threejsassets does not provide an asset or decoder CDN.

Materials and editability#

Low-poly environment files commonly use a shared material plus vertex colours. Configurator files use named materials. Editable authoring files preserve additional semantic structure when that edition is available. A standard GLB remains usable without optional React components, but its exact node and material names belong to that release.

Orientation and scale#

Environment packs target Y-up and +Z forward. Heights use a metric convention while footprints can be stylized, and pivots vary for vehicles, configurators, and declared exceptions. Read scale, orientation & pivots before combining packs or adding physics.

Before integration#

For each file, confirm:

  • declared glTF extensions and decoder requirements;
  • node, material, animation, and slot names;
  • texture formats and colour behaviour;
  • bounding box, pivot, up axis, and forward direction; and
  • the matching README and LICENSE.

See Web optimization: Draco, KTX2, poly budgets for performance guidance.

Still stuck?

Ask us directly — we answer support mail ourselves.

Contact support
Share
Asset format specification — threejsassets.com