Interactive 3D · RUHL TecDesign

Virtual Showroom

From inspecting a rooftop to understanding how its system works.

200 Water rooftop with equipment markers and an Explore System Flow control.
Actual showroom at 200 Water Street: explore the equipment or follow the guided HVAC story.
Explore live project

In the building journey, choose “Explore rooftop systems.”

My role
UX/UI, 3D interaction & frontend development
Tools
Three.js, HTML/CSS/JavaScript, Chrome DevTools, axe & Codex
Collaboration
RUHL engineering review of system logic and claims; existing building/rooftop models by RUHL employees.
AI Involvement
Codex assisted iterative implementation. I directed the experience and evaluated its visuals, interaction and technical behavior.

My contribution

I shaped the six-step narrative, camera choreography, equipment callouts and responsive controls, then developed the showroom and carried out performance, accessibility and release QA.

The roof was visible. The system was still hard to follow.

The original rooftop viewer offered rotation, reset and labels. Viewers still had to infer how ducts, equipment and energy recovery connected.

  1. Earlier rooftop viewerInspect individual parts

    A roof-only overlay extended the building tour.

  2. Design shiftExplain the relationships

    Give each step a route, camera focus and purpose.

  3. Current showroomExplore or follow a story

    Free navigation plus a guided six-step System Flow.

Dense geometry
Guide attention without losing the rooftop’s spatial context.
Invisible behavior
Show airflow and energy transfer without implying that air streams mix.
Limited space & resources
Keep the model visible on small screens and usable within browser limits.

These priorities came from implementation reviews, responsive iterations and technical QA. User comprehension was not measured.

Guide attention, then protect the experience.

First establish a path through the system. Then make each view understandable, adaptable and economical to render.

01/04Navigation & narrative

One step, one camera focus, one idea.

I organized the system into six steps and paired each with a focused camera view. Viewers can explore freely, reset their view, or use Previous/Next, Pause and Restart to control the guided story.

Return Air step with an enlarged explanation panel, highlighted rooftop ducts, and collapsed impact details.
01 / Return AirUsed indoor air reaches the rooftop, carrying energy that can be recovered.

Why this order Return Air establishes origin, route and destination before recovery. Separating recovery from heat-pump conditioning makes their different roles explicit. Camera framing follows the active system; city geometry is excluded from camera-fit calculations.

02/04Focus & engineering clarity

Reveal the connection without hiding the roof.

I emphasized active equipment, kept related parts readable and subdued the city. Only obstructing walls become translucent. Small image-and-name callouts identify equipment without adding another large panel.

Energy Recovery view with rooftop circuits, an AHU callout and a diagram of separate air streams.
Energy recovery combines a focused camera, highlighted circuits and the same no-mixing explanation. Equipment illustrations are generic, not the exact installed products.

Locate

Camera and highlights show where the step happens; callouts stay clear of the active route.

Explain

Paths, pooled vapor sprites and sparse particles show direction. Blue/cyan incoming air and amber exhaust retain text explanations.

Verify

Equipment mappings and claims follow project configuration and RUHL review. The animation explains the system; it is not CFD.

Outgoing indoor air Exhaust

Energy transfers between separate air streams

Fresh outdoor air Supply

03/04Responsive & accessible interaction

Make room for the model, at every screen size.

Large floating controls covered the roof on mobile. I moved exploration and System Flow into one bottom sheet, kept Previous/Next primary, and placed secondary impact details and Legal & Credits within that pattern.

Earlier mobile

Earlier mobile view with a large floating control card and a separate Legal and Credits control.
Controls compete with the model.

Current mobile

Current Fresh Outdoor Air step with the rooftop above a bottom sheet containing explanation and Previous and Next controls.
One bottom sheet supports the flow below the scene. Captured at 390 × 844 CSS pixels.

Reframe, rather than shrink

Tablet uses the same sheet with its own camera framing; desktop retains floating controls. View the tablet iteration.

Make spatial controls operable

An audit found the canvas lacked a keyboard equivalent. I added rotation, zoom and reset controls, plus reduced motion, semantic dialogs and focus restoration.

04/04Performance & implementation

Optimize the city before sacrificing the story.

An observed ~1 GB Chrome tab-memory spike prompted profiling. City textures dominated the estimated footprint; repeated flow navigation showed stable resources. I targeted context assets while preserving the rooftop, camera sequence and flow effects.

Estimated decoded city texture footprint

Before
842.67 MiB
After
58.67 MiB
Controlled city-only comparison: 61 → 28 runtime texture objects. Estimates sum decoded RGBA8 textures and mipmaps; they do not measure total GPU or Chrome tab memory.

Share and resize

19 prepared PNG derivatives, configuration-aware texture sharing and reference-counted disposal retain city geometry and recognizable materials.

Load by priority

Rooftop model and HDR load together. Controls and flow become usable before the optional city; city failure leaves the experience operable.

Control rendering

A 1.5 DPR cap limits render cost. Hidden tabs pause rendering; lifecycle guards prevent late loads from attaching after exit.

Verification Three complete post-optimization flow cycles recorded stable renderer counts: 87 geometries, 37 textures and 29 programs. The 1.5 cap draws 43.75% fewer pixels on DPR-2 devices by calculation; FPS and total tab-memory savings were not measured.

Built, integrated and checked for real use.

The deliverable combines free 3D exploration, a six-step walkthrough, equipment identification and responsive controls. Recorded QA establishes technical behavior; user comprehension remains to be tested.

16 states
Automated axe scans with zero violations in the final pre-launch report.
3 cycles
Keyboard-only walkthroughs passed, including pause, restart, exit and re-entry.
200%
Actual browser-zoom check passed; separate 390-pixel flow completion also passed.

Delivered & integrated

The existing rooftop CTA opens the isolated showroom. Assets load on entry; return restores scroll and focus. Integration QA recorded one canvas, no obsolete rooftop requests and no page exceptions.

Technical & release evidence

The production build used self-hosted modules and excluded internal files. Its local Cloudflare audit recorded zero third-party runtime hosts, cookies or browser storage. Licensing work retained Three.js notices and documented CC0 city and environment assets.

These results describe the audited pre-launch build. The public experience is linked below; its deployment has not been re-audited here.

What remains to validate

Comprehension and engagement were not measured. A real NVDA/VoiceOver check remained recommended. Engineering values in the showroom describe the ventilation intervention, not an outcome caused by the interface.

What I learned

Clarity depends on narrative, camera framing and browser behavior working together. Next, I would test whether non-engineers can explain energy recovery without air mixing and distinguish the heat pump’s role.

Explore the live 200 Water project

More industry work

RUHL Ai Product

Turning sustainability requirements into actionable product workflows.

View case study