3D Room Project ยท Handoff

Recreate a room in 3D โ€” project handoff

This page is the bridge between two laptops. Machine A (integrated GPU) built a hand-built walkable model. Machine B (RTX 5060) will build the photoreal Gaussian Splat from a folder of room photos. Everything below is the full set of instructions โ€” the photos live on the 5060 laptop (not hosted here for privacy).

๐Ÿค– If you are Claude (or any AI agent) reading this

The user said something like "check 3droom.sitemodernize.com". Your job: help them build a 3D Gaussian Splat of their room from a folder of photos on this RTX 5060 laptop, then view it in three.js. Do this:

  1. Find the photos locally. The user has a folder of room photos (JPG/PNG) on this laptop. Ask them for the folder path (e.g. photos\). The earlier home video is NOT used and NOT hosted here โ€” input is the new photos.
  2. Get the viewer. Download splat_viewer.html from this site into the working folder:
    curl -O https://3droom.sitemodernize.com/splat_viewer.html
  3. Train the splat. Follow Track A (Postshot) below โ€” easiest and Blackwell-safe. Feed it the photos folder. Brush / Nerfstudio are alternatives. Output a file named room.ply.
  4. View it. Put room.ply next to splat_viewer.html, run python -m http.server 8099, open http://localhost:8099/splat_viewer.html. Fix orientation knobs at the top of that file if the scene loads tilted/upside-down.

Hardware: RTX 5060 laptop, 8 GB VRAM, Blackwell (sm_120). Prefer tools that support CUDA 12.8+ or run on wgpu. Good capture = locked exposure/focus/WB, 150โ€“400 overlapping stills, translate don't just rotate, multiple heights, keep furniture/edges in frame (blank white walls are hard for SfM).

Background โ€” what's already done

On the first laptop we built a hand-built, walkable three.js model of the apartment (living room + dining room + hallway): first-person WASD controls, collisions, procedural wood floor, real family-photo textures on the picture frames, glossy PBR materials, image-based lighting, ambient occlusion + bloom, and a Low/Med/High quality switch (press P). It's stylized, not photoreal โ€” that's why we're now doing the splat.

That model and its personal textures are not published here. This handoff is about the photoreal path.

Goal

Turn a folder of room photos into a 3D Gaussian Splat (photoreal, real pixels), trained locally on the RTX 5060 (no cloud upload), and view it in the browser with splat_viewer.html. Photos beat video on quality โ€” full resolution, no motion blur or codec artifacts.

Shooting the photos

Pick a training tool

ToolEaseBlackwell (RTX 50)CostBuilt-in SfM?
Postshot (recommended)GUI, photos in โ†’ splat outโœ“ supports RTX 50free trial / paidyes
Brushopen source, no CUDA (wgpu)โœ“ via DX12/Vulkanfreeno โ€” needs COLMAP
Nerfstudio splatfactoCLI / Pythonโš  needs torch cu128 nightlyfreeno โ€” needs COLMAP

Brand-new 50-series + CUDA can be painful. Postshot (all-in-one GUI) or Brush (no CUDA at all) avoid the toolchain headache. Start with Postshot.

Track A โ€” Postshot (easiest, recommended)

  1. Install Postshot: jawset.com
  2. New Project โ†’ add the photos folder (drag the folder of images in).
  3. Settings for 8 GB VRAM: profile Splat MCMC or Splat3 (defaults fine). If it OOMs: lower Max Splats (~1.5M) or downscale images to ~1600 px.
  4. Start training (~5โ€“20 min on a 5060 for one room).
  5. Export โ†’ PLY (3D Gaussian Splat) โ†’ save as room.ply next to splat_viewer.html.

Track B โ€” Brush (free, open source, no CUDA)

Trains via wgpu (DirectX 12), so Blackwell "just works." Needs camera poses (COLMAP) first, computed directly from the photos.

  1. Install COLMAP: github.com/colmap/colmap/releases
  2. COLMAP automatic reconstruction on the photos folder (GUI Reconstruction โ†’ Automatic, Image folder = photos; or CLI):
    colmap automatic_reconstructor --workspace_path . --image_path photos --camera_model OPENCV
  3. Download Brush: github.com/ArthurBrussee/brush/releases โ†’ open the COLMAP workspace โ†’ train โ†’ export room.ply.

Track C โ€” Nerfstudio splatfacto (advanced)

Python only. Blackwell needs the CUDA 12.8 / PyTorch cu128 build:

pip install torch --index-url https://download.pytorch.org/whl/cu128
pip install nerfstudio
ns-process-data images --data photos --output-dir room_proc   # runs COLMAP on the photos
ns-train splatfacto --data room_proc
ns-export gaussian-splat --load-config <config.yml> --output-dir export    # -> .ply

Rename the export to room.ply.

View it (any track)

  1. Put room.ply in the same folder as splat_viewer.html.
  2. Serve over http (ES modules + workers need it):
    python -m http.server 8099
  3. Open http://localhost:8099/splat_viewer.html
  4. Mouse drag = orbit, scroll = zoom, WASD/QE = fly, R = reset.

If the room loads tilted/upside-down (common โ€” axes depend on the solver), edit CAMERA_UP / INITIAL_LOOK_AT at the top of splat_viewer.html (try [0,1,0] vs [0,-1,0]).

Tips


Files on this site:
splat_viewer.html RTX5060_SPLAT_GUIDE.md

Personal media (the room photos and any family-photo content) is intentionally not hosted here โ€” it stays local on the 5060 laptop.