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).
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:
photos\). The earlier home
video is NOT used and NOT hosted here โ input is the new photos.curl -O https://3droom.sitemodernize.com/splat_viewer.html
room.ply.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).
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.
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.
photos\.| Tool | Ease | Blackwell (RTX 50) | Cost | Built-in SfM? |
|---|---|---|---|---|
| Postshot (recommended) | GUI, photos in โ splat out | โ supports RTX 50 | free trial / paid | yes |
| Brush | open source, no CUDA (wgpu) | โ via DX12/Vulkan | free | no โ needs COLMAP |
| Nerfstudio splatfacto | CLI / Python | โ needs torch cu128 nightly | free | no โ 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.
room.ply next to
splat_viewer.html.Trains via wgpu (DirectX 12), so Blackwell "just works." Needs camera poses (COLMAP) first, computed directly from the photos.
photos; or CLI):
colmap automatic_reconstructor --workspace_path . --image_path photos --camera_model OPENCV
room.ply.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.
room.ply in the same folder as splat_viewer.html.python -m http.server 8099
http://localhost:8099/splat_viewer.htmlWASD/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]).
.ply can be 100โ400 MB. For faster web loading, export compressed from Postshot
or convert to .ksplat with the @mkkellogg/gaussian-splats-3d tool.
Raw .ply works, just slower to load.Personal media (the room photos and any family-photo content) is intentionally not hosted here โ it stays local on the 5060 laptop.