{"id":67,"date":"2026-04-15T20:22:44","date_gmt":"2026-04-15T20:22:44","guid":{"rendered":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/2026\/04\/15\/12293-ryan-rotella\/"},"modified":"2026-09-08T19:32:03","modified_gmt":"2026-09-08T19:32:03","slug":"12293-ryan-rotella","status":"publish","type":"post","link":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/12293-ryan-rotella\/","title":{"rendered":"Nido"},"content":{"rendered":"<h2>Project Description<\/h2>\n<p>\n    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\u2014photos and text\u2014for 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.<\/p>\n<p>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.<\/p>\n<p>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.  <\/p>\n<h2>Technical Details<\/h2>\n<p>\n    Nido stands on the shoulders of a lot of open-source work, academic research, and commercial APIs. Credit where it&#8217;s due:      <\/p>\n<p>  Primary Architectural Reference                                                                                                                          <\/p>\n<p>  &#8211; Pascal Editor \u2014 https:\/\/github.com\/pascalorg\/editor \u2014 flat-node store, dirty-node systems, scene registry, and viewer\/editor separation patterns       <\/p>\n<p>  Core Web Stack                                                                                                                          <\/p>\n<p>  &#8211; Next.js \u2014 https:\/\/github.com\/vercel\/next.js         <\/p>\n<p>  &#8211; React \u2014 https:\/\/github.com\/facebook\/react<\/p>\n<p>  &#8211; Three.js \u2014 https:\/\/github.com\/mrdoob\/three.js  <\/p>\n<p>  &#8211; React Three Fiber \u2014 https:\/\/github.com\/pmndrs\/react-three-fiber       <\/p>\n<p>  &#8211; drei \u2014 https:\/\/github.com\/pmndrs\/drei                                                <\/p>\n<p>  &#8211; camera-controls (via drei) \u2014 https:\/\/github.com\/yomotsu\/camera-controls         <\/p>\n<p>  &#8211; Zustand \u2014 https:\/\/github.com\/pmndrs\/zustand                                                         <\/p>\n<p>  &#8211; Zundo (undo\/redo middleware) \u2014 https:\/\/github.com\/charkour\/zundo                 <\/p>\n<p>  &#8211; Zod \u2014 https:\/\/github.com\/colinhacks\/zod                          <\/p>\n<p>  &#8211; three-bvh-csg \u2014 https:\/\/github.com\/gkjohnson\/three-bvh-csg       <\/p>\n<p>  &#8211; three-mesh-bvh \u2014 https:\/\/github.com\/gkjohnson\/three-mesh-bvh          <\/p>\n<p>  &#8211; Tailwind CSS \u2014 https:\/\/github.com\/tailwindlabs\/tailwindcss            <\/p>\n<p>  &#8211; pdf.js \u2014 https:\/\/github.com\/mozilla\/pdf.js                         <\/p>\n<p>  &#8211; sharp \u2014 https:\/\/github.com\/lovell\/sharp               <\/p>\n<p>\n  Backend &#038; Infrastructure                                                                                                                                 <\/p>\n<p>  &#8211; Supabase \u2014 https:\/\/github.com\/supabase\/supabase             <\/p>\n<p>  &#8211; Supabase Swift SDK \u2014 https:\/\/github.com\/supabase\/supabase-swift<\/p>\n<p>  &#8211; Modal (GPU compute for splat training) \u2014 https:\/\/modal.com                <\/p>\n<p>\n  Mobile Stack <\/p>\n<p>  &#8211; RoomPlan (Apple) \u2014 https:\/\/developer.apple.com\/augmented-reality\/roomplan\/                 <\/p>\n<p>  &#8211; Object Capture (Apple) \u2014 https:\/\/developer.apple.com\/augmented-reality\/object-capture\/<\/p>\n<p>  &#8211; ARKit (Apple) \u2014 https:\/\/developer.apple.com\/augmented-reality\/arkit\/                     <\/p>\n<p>\n  Splat Training Pipeline                                                                                                                                  <\/p>\n<p>  &#8211; gsplat \u2014 https:\/\/github.com\/nerfstudio-project\/gsplat           <\/p>\n<p>  &#8211; Nerfstudio \u2014 https:\/\/github.com\/nerfstudio-project\/nerfstudio<\/p>\n<p>  &#8211; 3D Gaussian Splatting (original, Kerbl et al., SIGGRAPH 2023) \u2014 <br \/>\n   https:\/\/github.com\/graphdeco-inria\/gaussian-splatting                  <\/p>\n<p>  &#8211; SuperSplat (format conversion tool) \u2014 https:\/\/playcanvas.com\/supersplat\/editor                                                                         <\/p>\n<p>\n  &#8211; TRELLIS (Microsoft) \u2014 https:\/\/github.com\/microsoft\/TRELLIS       <\/p>\n<p>  &#8211; Splat Labs (splat \u2194 floorplan registration workflow reference) \u2014 https:\/\/splat-labs.com     <\/p>\n<p>\n  AI \/ ML Services                                                                                                                                         <\/p>\n<p>  &#8211; TRELLIS 2 via fal.ai (image-to-3D with PBR) \u2014 https:\/\/fal.ai               <\/p>\n<p>  &#8211; firtoz\/trellis on Replicate (current image-to-3D) \u2014 https:\/\/replicate.com\/firtoz\/trellis<\/p>\n<p>  &#8211; Google Gemini 3 Pro (floorplan vision) \u2014 https:\/\/ai.google.dev                    <\/p>\n<p>  &#8211; Anthropic Claude (development assistant + API usage) \u2014 https:\/\/anthropic.com                                                                           <\/p>\n<h2>Research\/Context<\/h2>\n<p>\n    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 \u2014 Vectorworks, AutoCAD, Revit \u2014 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&#8217;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.                                                                                                                                                                                                                      <\/p>\n<p>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 \u2014 Three.js (WebGPU), drei, Zustand with Zundo for undo history, and Zod for runtime schema validation \u2014 was selected to mirror this forked reference implementation.<\/p>\n<p>The capture pipeline synthesises findings from three 2025 feed-forward 3DGS papers \u2014 LighthouseGS, Flash-Mono, and FastGS \u2014 with Apple&#8217;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 &#8220;quick scan&#8221; 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.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>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.<\/p>\n","protected":false},"author":0,"featured_media":4062,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[14,27,15,3],"class_list":["post-67","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2","tag-machine-learning","tag-mobile","tag-product-design","tag-speculative-futures"],"_links":{"self":[{"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":7,"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":4061,"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/posts\/67\/revisions\/4061"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/media\/4062"}],"wp:attachment":[{"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itp.nyu.edu\/thesis\/archive\/2026\/wp-json\/wp\/v2\/tags?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}