← Back
wy51ai

wy51ai/floorplan-3d

View on GitHub ↗
Stars
1.1K
Forks
241
Watchers
1.1K
Open issues
5
Contributors
3
Language
HTML
License
MIT License
Default branch
master
Created Sep 29, 2026Updated Oct 1, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

户型装修设计

中文 | English

纯前端的户型装修设计工具:在 2D 平面图上摆放家具、拆改墙体、测量尺寸,一键切换到 Three.js 3D 场景,可以鸟瞰,也可以第一人称漫游。整个应用就是一个 index.html,无需构建,打开即用。

功能

2D 平面布置

  • 按原始户型 1:60 / 1:100 比例显示,尺寸单位 mm
  • 从左侧家具库拖入 60 余种家具家电(卧室、客厅、餐厨、卫浴、家电、书房休闲)
  • 拖动移动、旋转(Shift 自由角度)、调整尺寸,贴墙自动吸附
  • 测量工具(靠近墙面自动吸附,Shift 锁定水平 / 垂直)
  • 拆改非承重墙,承重墙单独标示
  • 图层开关:尺寸标注、房间名、家具、网格、承重墙

3D 场景

  • 鸟瞰、斜视、俯视多种视角,点击房间列表可飞到对应房间
  • 漫游模式:桌面端 WASD + 鼠标,触屏设备用虚拟摇杆,可以点门开关
  • 全高墙 / 剖切墙切换,日照时间滑块,夜景灯光
  • 精细家具模型:柜门分缝与拉手、软包床头、带环境反射的金属与陶瓷材质等
  • 在 3D 中也能选中、拖动家具,与 2D 方案实时同步

方案与统计

  • 房间面积与套内使用面积自动统计
  • 为每个房间更换地面材料(木地板、地砖、大理石、水磨石、地毯等),按面积加 5% 损耗估算造价
  • 撤销 / 重做,方案自动保存在浏览器本地
  • 中文 / English 界面切换(顶栏右侧按钮,默认中文,选择会记住)
  • 导出 PNG 图片,导出 / 导入方案 JSON

快速开始

git clone <仓库地址>
cd <仓库目录>

然后直接用浏览器打开 index.html。也可以起一个本地静态服务器:

python3 -m http.server 8000
# 访问 http://localhost:8000

Three.js 通过 jsDelivr CDN 加载,首次打开 3D 场景需要联网。

快捷键

按键 作用
T 切换 2D / 3D
V / M / X 选择 / 测量 / 拆改墙体
R / Shift+R 选中家具顺时针 / 逆时针旋转 90°
Delete / Backspace 删除选中家具
Ctrl/⌘ + D 复制选中家具
Ctrl/⌘ + Z,Ctrl/⌘ + Shift + Z 撤销,重做
F 适应窗口
+ / - 放大 / 缩小
[ / ] 展开 / 收起左侧家具库、右侧面板
Shift + F 全屏
Esc 取消当前操作
漫游:WASD / 方向键,Shift,E 移动,快走,开关门

技术栈

  • 原生 HTML / CSS / JavaScript,无框架、无构建步骤
  • 2D 平面图用 SVG 绘制
  • 3D 场景用 Three.js r160(OrbitControls、PointerLockControls、RoundedBoxGeometry、RoomEnvironment、CSS2DRenderer)
  • 数据保存在 localStorage

自定义户型

户型数据写在 index.html 里:

  • ROOMS:房间多边形、名称、默认地面材料
  • WALLS / WINS:墙体与窗洞
  • MATS:地面材料名称与单价
  • LIB:家具库(类型、名称、默认尺寸、颜色)
  • buildFurniture():各类家具的 3D 模型

改这些数据就能换成自己的户型。

许可协议

MIT