Nido

Ryan Rotella

Advisor: Luisa Pereira

Nido is a mobile scanning app and room editing website. Scan your room, bring it to the web, and design your space without any fuss.

Project Website Presentation
3D scan of room overlayed on walls with dimensions on my website: nido.place

Project Description

This project, Nido, seeks to make 3D room design more accessible to people of all kinds, not just technical experts. There is a huge gap currently in how people engage with planning real 3D spaces. Either someone is a master user of an intricate and expensive 3D software, or they have to go off 2D information—photos and text—for a space. With the recent improvements in graphical compute and 3D capability on internet browsers through libraries like Three.js and SparkJS, we have the technical ability to close this gap but no cheap solutions currently.

Inspired by open source projects like Pascal and SuperSplat, I wanted to design a 3D scanning and receiving website that anyone could use. First, someone scans their room and objects with my iOS app. After processing the scans on the server, the results get read from the database to the website, where people can see their room with real dimensions in their browser.

Also on the browser, people can upload floorplans that become editable 3D structures using AI Agents, turn images of products into 3D objects with AI, and design iterations of their space with real measurements, without getting out a tape measure.

Technical Details

Nido stands on the shoulders of a lot of open-source work, academic research, and commercial APIs. Credit where it's due:

Primary Architectural Reference

- Pascal Editor — https://github.com/pascalorg/editor — flat-node store, dirty-node systems, scene registry, and viewer/editor separation patterns

Core Web Stack

- Next.js — https://github.com/vercel/next.js

- React — https://github.com/facebook/react

- Three.js — https://github.com/mrdoob/three.js

- React Three Fiber — https://github.com/pmndrs/react-three-fiber

- drei — https://github.com/pmndrs/drei

- camera-controls (via drei) — https://github.com/yomotsu/camera-controls

- Zustand — https://github.com/pmndrs/zustand

- Zundo (undo/redo middleware) — https://github.com/charkour/zundo

- Zod — https://github.com/colinhacks/zod

- three-bvh-csg — https://github.com/gkjohnson/three-bvh-csg

- three-mesh-bvh — https://github.com/gkjohnson/three-mesh-bvh

- Tailwind CSS — https://github.com/tailwindlabs/tailwindcss

- pdf.js — https://github.com/mozilla/pdf.js

- sharp — https://github.com/lovell/sharp


Backend & Infrastructure

- Supabase — https://github.com/supabase/supabase

- Supabase Swift SDK — https://github.com/supabase/supabase-swift

- Modal (GPU compute for splat training) — https://modal.com


Mobile Stack

- RoomPlan (Apple) — https://developer.apple.com/augmented-reality/roomplan/

- Object Capture (Apple) — https://developer.apple.com/augmented-reality/object-capture/

- ARKit (Apple) — https://developer.apple.com/augmented-reality/arkit/


Splat Training Pipeline

- gsplat — https://github.com/nerfstudio-project/gsplat

- Nerfstudio — https://github.com/nerfstudio-project/nerfstudio

- 3D Gaussian Splatting (original, Kerbl et al., SIGGRAPH 2023) —
https://github.com/graphdeco-inria/gaussian-splatting

- SuperSplat (format conversion tool) — https://playcanvas.com/supersplat/editor


- TRELLIS (Microsoft) — https://github.com/microsoft/TRELLIS

- Splat Labs (splat ↔ floorplan registration workflow reference) — https://splat-labs.com


AI / ML Services

- TRELLIS 2 via fal.ai (image-to-3D with PBR) — https://fal.ai

- firtoz/trellis on Replicate (current image-to-3D) — https://replicate.com/firtoz/trellis

- Google Gemini 3 Pro (floorplan vision) — https://ai.google.dev

- Anthropic Claude (development assistant + API usage) — https://anthropic.com

Research/Context

Nido situates itself at the intersection of three established stacks: spatial design software, consumer 3D capture, and browser-based real-time rendering. Professional CAD and BIM tools — Vectorworks, AutoCAD, Revit — offer dimensional rigor but impose a steep learning curve and licensing cost that excludes non-specialists. Consumer-facing alternatives such as SketchUp Free and Floorplanner compromise scale accuracy for accessibility. Nido's main argument is that recent advances in WebGPU rendering, feed-forward gaussian splatting, and on-device LiDAR have collapsed the technical barriers that previously justified this trade-off, and that the remaining gap is one of interaction design.

Architecturally, the project draws most heavily on Pascal Editor (pascalorg/editor, MIT), whose flat-node store, scene registry, and strict viewer/editor separation provide a proven pattern for managing large editable scenes in React Three Fiber. The rendering stack — Three.js (WebGPU), drei, Zustand with Zundo for undo history, and Zod for runtime schema validation — was selected to mirror this forked reference implementation.

The capture pipeline synthesises findings from three 2025 feed-forward 3DGS papers — LighthouseGS, Flash-Mono, and FastGS — with Apple's RoomPlan and Object Capture APIs, producing a two-tier strategy that preserves a unified guided-sweep UX across LiDAR and non-LiDAR devices. PanSplat (Zhang et al., CVPR 2025) informs the panoramic "quick scan" mode, while ZInD (Cruz et al., CVPR 2021) and the Splat Labs registration workflow ground the floorplan-to-geometry alignment approach. For single-image object reconstruction, TRELLIS 2 (Microsoft, via fal.ai) was chosen over Meshy and Tripo for its native PBR output and licensing terms, complemented by Gemini 3 Pro for vision-based floorplan parsing and SAM / Metric3D as candidate components in a future hybrid reconstruction pipeline when splats can transform into solid 3D textures.