Skip to content
Sounak GhoshXR Designer & Creative Technologist
All work

Spatial Capture · WebXR

Reskin Surface Studio

Reskin any surface of a room — walls, floors, backsplashes — from a single 360° photo, then walk through the result as a gaussian splat in WebXR.

One 360° photo → a walkable, reskinned room in WebXR

Role
WebXR Developer & Workflow Architect
Company
Worlds in Action Hackathon · SIGGRAPH 2026
Timeline
2026 · Hackathon
Team
Joey Fonacier (XR designer, World Labs), Eros Carrascos (XR developer), Fernando Herrera (ComfyUI, web design) and me (WebXR developer)
Platform
WebXR · browser and VR headset
Tools
  • WebXR
  • Spark.js
  • Gaussian Splatting
  • SAM 3
  • ComfyUI
  • World Labs API

What I did

  • Developed the WebXR experience with Spark.js, so users can stand inside the gaussian splat and switch between surface options in VR
  • Architected the workflow execution end to end: browser inputs → SAM 3 surface detection → ComfyUI surface replacement → World Labs splat generation → back to the browser
  • Partnered with Joey Fonacier (XR design, World Labs), Eros Carrascos (XR development) and Fernando Herrera (ComfyUI, web design)

The challenge

Choosing a tile or wallpaper from a swatch or a flat render makes it hard to judge how it will feel across a whole wall, at real scale, in your own room. We set out to let anyone see a new surface in their actual space — in VR, straight from a web browser.

The impact

Built at the Worlds in Action hackathon at SIGGRAPH 2026 in Los Angeles: a working pipeline that turns one 360° photo and a few texture references into gaussian-splat versions of the room, which you can step into in VR from the browser and switch between in place.

How It Works

Reskin Surface Studio chains four steps across the browser, an image-generation backend and a world-model API:

  • Capture and choose: upload a 360° image of the room and reference images of the tiles or wallpaper you want.
  • Detect: SAM 3 finds and isolates surfaces — for example, the brick wall.
  • Replace: a ComfyUI workflow swaps that surface in the 360° panorama for the user's reference.
  • Reconstruct and experience: the new panorama goes to World Labs to generate a gaussian splat, which comes back to the browser to explore in WebXR.

1. Inputs and Surface Detection

Everything starts in the web app. A 360° capture of the space and a handful of texture references are the only inputs — no 3D scanning or modeling. SAM 3 segments the panorama so the user can pick exactly which surface to reskin.

Web app input: a 360° image of the space, the texture references, and SAM 3 surface detection.

2. Replacing the Surface in 2D

The edit happens on the flat 360° panorama, not in 3D. A ComfyUI backend workflow — with Gemini for panorama generation — replaces the selected surface with the reference texture, producing one new panorama per option.

The ComfyUI workflow and the reskinned panoramas it generates, one per texture reference.

3. From Panorama to Gaussian Splat

After the user confirms the result in the web app, each new panorama is sent to World Labs through its API to generate a gaussian splat — a photoreal 3D version of the room with the new surface in place.

Web app confirmation, then World Labs gaussian-splat creation.

4. Stepping Inside in WebXR

I built the WebXR experience with Spark.js for gaussian-splat rendering on the web. The finished splat streams back to the browser, and from there you can enter VR, look around the room at real scale, and switch between texture references to compare options in place.

The WebXR experience: switching between reskinned versions of the room in VR.

Architecting the Workflow

My other role was making the pieces run as one system. The pipeline crosses the browser, SAM 3, a ComfyUI backend and the World Labs API, and each hand-off had to carry the right image, mask and references to the next step — then return a splat the WebXR viewer could load.

  • Decision: edit in 2D, reconstruct in 3D only at the end. Surface replacement runs on the flat panorama, where it's fast to iterate on, and the gaussian splat is generated once per approved option as the final, viewable output.
  • Decision: a confirmation step before reconstruction. The user approves each reskinned panorama in the web app before it goes to World Labs, so only results worth walking through become splats.
  • Decision: compare in place. All options are loaded for the same room, so in VR the user switches surfaces while standing in one spot instead of re-entering a new scene.
Demoing Reskin Surface Studio in VR at the Worlds in Action hackathon, SIGGRAPH 2026.

What's Still Unproven

Reskin Surface Studio is a hackathon prototype, built and demoed over the event. It hasn't yet been tested with people choosing finishes for a real room — the next step to find out whether walking through options at full scale changes the decision.