I’ve been working on a modern rewrite of blueprint3d
( GitHub - furnishup/blueprint3d: Build interior spaces in 3D · GitHub ), which is one of the few
open-source 3D floor planners out there but has been unmaintained
for years and relies on deprecated Three.js APIs (Geometry, Face3,
legacy WebGL1 renderer).
The rewrite targets Three.js r181 throughout:
- All geometry migrated from Geometry/Face3 to BufferGeometry
- WebGLRenderer replacing the legacy path
- OBJ/MTL loading via Three.js JSM loaders
- Raycasting for item selection, placement, and resize handles
- Per-surface UV mapping for floor and wall textures
- anime.js v4 for camera transition animations
- Wrapped in a Next.js 15 demo app with local IndexedDB storage
The item system uses a Factory pattern that loads OBJ+MTL models
from URL and instantiates the correct subtype based on placement
type (FloorItem / WallItem / InWallItem / CeilingItem). Raycasting
is filtered per subtype — WallItems only respond to rays hitting
wall surfaces, FloorItems to the floor plane, etc.
GitHub: GitHub - charmlinn/blueprint3d-modern: A modern TypeScript-based rewrite of blueprint3d — faster, cleaner, and actively maintained. · GitHub
Original: GitHub - furnishup/blueprint3d: Build interior spaces in 3D · GitHub
Next on the roadmap: GLB/GLTF support alongside OBJ/MTL, and
optional WebGPURenderer path. Would love input from anyone who’s
done the r181 WebGPU migration.