Parklab 3D pipeline

Case study · Concept work · Sep 2026

Six directions. One playground in 3D.

A concept redesign for Parklab, a Singapore company that designs and builds playgrounds, sports surfaces and parks. We made four presentation directions and two full site versions, switchable from one header. Every direction shares the same real-time 3D model, which you can orbit, re-finish and set on three ground surfaces.

Client
Parklab, Singapore
Date
September 2026
Scope
Design directions, front end, real-time 3D
Stack
HTML, CSS, JavaScript, Three.js r160
Status
Concept for review, not the live site

01 · The work

Four directions, two full versions.

Each direction is a two-section page: a hero with a concept visual, then an interactive 3D study with its own materials and camera route. The full versions show how a complete site reads end to end.

02 · Client and brief

A builder of places to play.

Parklab

Parklab designs and builds playgrounds, sports surfacing and park amenities in Singapore. Its public site lists five accreditations and a partnership with Playpower.

The full versions reuse what parklab.com.sg publishes: positioning, service copy, process, contacts, five built projects with their photos, news and accreditations. The public site gives no revenue, timelines or guarantees, so none appear here.

  • TÜV SÜD
  • IPEMA
  • bizSAFE Level 4
  • SGBC
  • PEFC

How the brief moved

  1. Brief

    Rebuild parklab.com.sg in a future-facing style, at the level of a design studio. No dot grids, default fonts or other generative-design clichés.

  2. Version 1

    A dark site with acid lime and a generated contour field. Feedback: not modern or futuristic enough.

  3. Revised brief

    Real 3D playgrounds instead of decoration, a light palette and a clear sales structure. A rough 3D model made in Magnific AI came with it.

  4. Review format

    Four directions cut to two sections each: a hero and a 3D study. The full versions stay online for comparison.

03 · How it is built

One scene module, four camera routes.

All four directions load the same three ES modules: stage.js, scene.js and camera-path.js. Each page passes its own theme, which sets materials, ground colours, lighting accents and the camera route. Plain HTML, CSS and JavaScript, no build step.

1.37 MBweb model, 1,374,664 bytes
65,695triangles, one mesh
4camera routes on one scene
3ground surfaces built in code

Scroll

Native scroll drives the camera

The 3D section is a tall block with a sticky stage. Scroll progress maps to three camera stops with eased interpolation. The wheel is never intercepted, and the chapter buttons scroll to points on the same route.

Rendering

Frames only on demand

The scene draws while the camera is still moving and stops once it settles. Rendering pauses when the stage leaves the screen or the tab is hidden. Pixel ratio is capped at 1.75.

Loading

The model loads late

The GLB starts loading when the 3D section comes within 650 px of the viewport, with a progress bar. Three.js r160 and its loaders ship with the site, not from a CDN.

Format

meshopt and WebP

The model uses EXT_meshopt_compression, EXT_texture_webp and quantised attributes: one mesh and one PBR material with a single 1024 px base-colour texture.

Surfaces

Ground as geometry

Rubber, turf and court pads are extruded shapes, and the court gets a centre ring. The model switches between a studio finish (metal on Orbit) and its original textures.

Fallbacks

Reduced motion, short screens, no WebGL

With reduced motion, or on screens under 760 px tall, the 3D block becomes a normal section with view buttons. Without WebGL, or if the model fails to load, the stage shows the concept image.

04 · Image to 3D

From six drawings to a 1.37 MB model.

The model that came with the brief was a Magnific AI export: 946,531 triangles and 29.6 MB. We cut it to 505 KB for the first light version, but its thin ropes and nets had collapsed in reconstruction. So we rebuilt the asset from drawings made for image-to-3D.

  1. Generated orthographic front view of the play structure on white

    Step 1 · Views

    Orthographic drawings

    A prompt pack for one chunky structure that reconstructs cleanly: no ropes or nets, no shadows, a white background. Seedream 5 Pro produced six views at 2048 px.

  2. Render of the generated model from a high angle

    Step 2 · Model

    Multi-view image to 3D

    Four elevations went to Tripo v3.1 and Meshy 7. We kept Meshy for its flat panels, straight posts and accurate blue: 13.1 MB and 186,902 triangles.

  3. Clay render of the optimised web model

    Step 3 · Web

    Optimised for the browser

    gltf-transform simplified the mesh, packed it with meshopt and moved textures to 1024 px WebP: 1.37 MB and 65,695 triangles. A 2048 px version of 2.15 MB stays for close-ups.

One lesson from the views: with a reference image, describing the camera angle did not work. Describing the silhouette of the result did, for example “narrow and tall, 45 percent of the frame width”.

Pipeline page and live viewer

05 · Read this first

What this is, and what it is not.

←WeTrio Dev