The framework gets all the attention. The asset pipeline is what determines whether the project actually ships.

I've seen Three.js projects that are well-architected, cleanly written, and run badly because nobody owned the asset pipeline. I've seen Unity projects with ugly code that ship at 4 megabytes and run sixty frames per second on a four-year-old phone because the asset pipeline was disciplined. The pipeline matters more than the framework. It's also where most teams have the least experience.

This article is the production-grade asset workflow I work through on serious browser-based 3D projects. It's the playbook for a technical artist or senior threejs developer building for the open web — where bandwidth is a tax, mobile is half the audience, and every megabyte you ship is a megabyte your users wait for.

The asset pipeline is the project

A 3D website development engagement that doesn't budget time for the asset pipeline is one that ships late, ships heavy, or ships ugly. Pick at most one.

For a project with twenty product variants, four material types, and basic camera interaction — the kind of thing a typical configurator development engagement covers — I'd budget 40-50% of total project time on the asset pipeline. The scene code, the UI, the integration with the host site: maybe 50% combined. The pipeline alone is the larger half.

This proportion surprises teams who haven't shipped a 3D web project before. It's also the reason so many in-house projects stall in week six: the team has the scene working, the UI implemented, the configurator logic complete — and then mobile performance falls apart, the textures look muddy at high zoom, the bundle is twelve megabytes, and the team realizes they need to redo the asset side from scratch.

A senior WebGL developer for hire would have started with the asset pipeline. The scene is the easy part once the assets are right.

The end-to-end pipeline

Here's the workflow I run, from raw model to production-ready browser asset.

1. Modeling discipline at the source

The pipeline starts before any export. The 3D modeler — whether in-house, agency, or freelance — needs guidelines that match the delivery target. Specifically:

The single biggest delivery cost on a browser 3D project is rework — a model that's "almost right" needs a pass for topology, a pass for UVs, a pass for materials, and a pass for export. Each pass is a calendar day. Setting expectations at the modeling stage saves all of them.

For training simulator development or educational game developer projects with dozens of assets, having a written asset spec — polygon counts, naming conventions, file structure — paid back ten times over the course of a project.

2. Material setup with PBR discipline

PBR — physically-based rendering — is the standard for both Three.js and Babylon.js. The materials use a metalness/roughness workflow with a specific set of texture maps:

For most product configurator development, three textures per material is the budget: base color, normal, and packed ORM. Anything more is overhead unless the project specifically needs it.

3. Texture sizing for browser delivery

The single highest-leverage decision in the asset pipeline. Most projects get this wrong by oversizing.

For a typical web configurator viewed at desktop sizes:

A 4096×4096 texture is rarely justified for browser delivery. The visual quality difference at typical viewing distances is barely perceptible, but the bundle size impact is enormous — a 4K base color in PNG can be eight megabytes by itself.

4. Compression — KTX2 / Basis Universal

This is where the asset pipeline goes from "OK" to "production-grade."

KTX2 with Basis Universal compression delivers GPU-ready textures that are 60–80% smaller than equivalent PNG, with quality differences invisible to most viewers. For any serious browser 3D project, every texture should be KTX2. Three.js, Babylon.js, and Unity all support KTX2 transcoding at runtime.

The pipeline:

  1. Export from Blender (or 3D source) as PNG or JPG at production resolution
  2. Run through basisu or toktx to produce a KTX2 file with UASTC or ETC1S encoding
  3. Reference the KTX2 file in the GLB; loader transcodes to the GPU's native format at runtime

Setting up the KTX2 pipeline takes a senior technical artist about half a day on the first project. It pays back over the lifetime of every project the team ships.

5. Geometry compression — Draco

Draco is a Google-developed mesh compression library that ships native support in Three.js, Babylon.js, and the GLTF spec. It typically shrinks geometry data by 70–90% with negligible runtime decoding cost.

For a configurator with several detailed product meshes, Draco compression on the geometry alone can cut the GLB file size by half. Combined with KTX2 textures, a model that was 18 megabytes uncompressed often ships at 2.5 megabytes — well within mobile-friendly delivery.

The trade-off: Draco-compressed assets need a decoder shipped with the page (~150 KB). For a single small asset, that overhead isn't worth it. For a project with multiple assets, it pays back immediately.

6. LOD strategy

Level-of-detail (LOD) means shipping multiple geometry resolutions of the same asset and swapping based on view distance or device tier.

For browser 3D, the practical LOD strategies are:

Not every project needs LOD. A single-product configurator with the camera always close to the model usually doesn't. A 3D world for an educational game with dozens of objects at varying distances absolutely does.

7. Export and validation

Final step: export the GLB and validate it.

The validation checklist:

A GLB that loads in one runtime can fail in another. Validation against the runtime you'll actually ship with is non-negotiable.

8. The tooling stack

For reference, the production tools I default to for browser 3D asset pipelines:

Most of these are free and open source. The pipeline can be assembled by any team that's willing to invest a few days in setup. The reason teams pay for outside expertise here is usually that "a few days of setup" actually means two weeks of false starts when the team hasn't done it before.

What this means for hiring

A 3D website development project where the asset pipeline is figured out as you go is a project that ships heavy, late, or both. A project where the pipeline is set up in week one ships predictably.

This is one of the highest-leverage places to hire an independent specialist. The asset pipeline is a one-time setup with multiplicative payoff: every asset shipped through a clean pipeline is faster, smaller, and higher-quality than the equivalent through an ad-hoc one. The cost of getting the pipeline right is paid once; the cost of getting it wrong is paid every week of the project.

For an in-house team that's never shipped browser 3D before, hiring a senior threejs developer or technical artist for hire to set up the pipeline — even just for the first project — is one of the best returns on contractor spend in this category. The team learns the patterns, the pipeline becomes a permanent capability, and future projects start at week three instead of week zero.

If you have a browser 3D project that's stuck on asset performance, or a project starting where the pipeline hasn't been figured out yet, that's the conversation worth having early. The pipeline is the work. Setting it up right is what separates a project that ships from one that doesn't.