melltron.build

LOG-002

Modeling a service truck and a rooftop unit in three.js

Two models made for the acservice.systems site, now living here too. Both are pure code — no mesh files, no textures on disk. Every part is three.js geometry in real-world metres, so the same source can render on a page or drop into a scene at true scale.

AC Services / Unit TACLA-14402C

A 2020 Ford Ranger SuperCrew with a cab-high shell and ladder rack.

  • Body from one profile. The side silhouette — hood slope, door line, bed, both wheel arches — is a single 2D shape extruded to body width and bevelled.
  • Dimensions from the spec sheet. 5,354 mm overall, 3,220 mm wheelbase, axles placed from those numbers rather than eyeballed.
  • Livery is drawn, not imported. Door, hood, bed and shell graphics are painted onto canvas textures at build time: logo, phone, unit number, service list.
  • Parametric. Tire size and the ladder are inputs. The viewer exposes both.

RTU-10 · Packaged rooftop unit

A 10-ton gas/electric rooftop unit, 3.0 × 1.5 × 1.26 m: base rail with forklift slots and lifting lugs, access doors with latches, flue hood and gas inlet on the heat section, economizer hood on the return end, wrap-around condenser coil, two condenser fans with guards.

Parts that share a material are merged into one mesh each — 34 meshes for the whole unit — which keeps it cheap enough to drop into a larger scene.

Porting them here

The originals were single-file bundles with inline scripts. This site’s CSP allows scripts from its own origin only, so they couldn’t be dropped in as-is. Each model is now one import-free module — build(THREE, opts) returns the object — and two hosts use it:

  • The viewer pages below render it with PBR materials, orbit controls and the model’s own parameters.
  • The warehouse builds the same geometry with its retro Lambert materials and parks both pieces at full scale in this entry’s bay.

Same module, two renderers — so the model can’t drift between them.

Models

← all entries