dont-track-me-google
Firefox and Chrome extensions to prevent Google from making links ugly.
纯前端楼盘采光模拟工具链:规划图标注 → 3D 阴影可视化 | Frontend-only building sunlight simulator: plan annotation to 3D shadow visualization
git clone https://github.com/SeanWong17/building-sunlight-simulator.gitSeanWong17/building-sunlight-simulatorEnglish | 简体中文
建筑采光模拟工具 · 轻量级楼盘日照分析解决方案
注:在线演示仅展示默认数据,如需自定义规划图请参考下文“本地使用”。
Building Sunlight Simulator 是一套基于 Web 技术的楼盘规划与采光模拟工具。
它允许用户直接在浏览器中通过规划图(JPG/PNG)绘制建筑轮廓,生成 3D 场景,并结合项目位置和太阳轨迹算法,对目标建筑进行日照遮挡可视化估算。项目纯前端实现,运行依赖已随仓库发布,无后端和联网依赖。
| 模块 | 功能描述 |
|---|---|
| 部署 | 纯静态 HTML/CSS/JS,下载即用,无需安装环境 |
| 编辑 | 2D 平面图转 3D 模型,支持 JSON/底图拖放导入、楼栋选择移动、撤销编辑和可视化分户配置 |
| 计算 | 基于球面三角学计算太阳轨迹,内置 50+ 城市经纬度与 IANA 时区数据 |
| 可视 | 4096px 高精度阴影贴图,支持按半球显示的冬至/夏至/春分/秋分及自定义日期,06:00-18:00 当地民用时间实时调节,配备专业罗盘指南针 |
| 量化 | 每户累计日照估算与热力图展示(淡黄到深橙色阶),支持单户详情、可配置参考时长及分析结果导入复用 |
| 交互 | 支持 PC 端及移动端触控、文件拖放,可过滤非本小区建筑且保留当前相机视角 |
| 多语言 | 支持中英文切换,界面右上角可自由切换语言 |
isThisCommunity: true),按分户轴将所有外墙片段映射到各户,并在每层窗高位置生成检测点。同一户可能对应多个外墙片段,户级统计取这些片段中日照时长的最大值。适用边界:结果是按 6 分钟离散区间累计、并取同户多个外墙采样片段最大值的方案可视化估算,不是通用行业合规结论。不同地区对检测日期、检测点和连续日照时长的要求不同,正式判断应按当地规则复核。
本项目包含两个核心文件:editor.html(数据生产)和 index.html(数据消费)。
git clone [https://github.com/seanwong17/building-sunlight-simulator.git](https://github.com/seanwong17/building-sunlight-simulator.git) # 或者直接下载 ZIP 解压
本项目不依赖构建工具,选择以下任一方式打开:
editor.html 或 index.html 即可在浏览器运行。live-server 或 python -m http.server。流程:规划图配置 (Editor) ➜ 导出 JSON ➜ 采光分析 (Viewer)
打开 editor.html,将平面的规划图转化为 3D 模拟所需的 JSON 数据。
data.json)。| 操作 | 快捷键 |
|---|---|
| 缩放视图 | 鼠标滚轮 |
| 拖拽画布 | 鼠标中键 / 空格+左键 |
| 撤销绘制 | 鼠标右键 |
| 完成闭合 | 双击左键 |
打开 index.html,进行 3D 可视化分析。
examples/sample.json 测试)。项目通过 JSON 格式传递建筑数据。examples/sample.json 提供了完整的示例数据。
{
"version": 1.7, // 数据版本
"latitude": 36.65, // 项目纬度(影响太阳高度角)
"longitude": 117.12, // 项目经度,东经为正
"timeZone": "Asia/Shanghai", // IANA 时区(用于民用时间换算)
"scaleRatio": 0.483, // 比例尺:1像素 = N米
"origin": { "x": 306, "y": 336 },// 坐标系原点(像素)
"buildings": [
{
"name": "1号楼",
"floors": 18, // 层数
"floorHeight": 3, // 层高(米)
"totalHeight": 54, // 可选;如提供,必须等于 floors * floorHeight
"isThisCommunity": true, // 是否为目标小区(用于高亮/过滤)
"shape": [ // 轮廓顶点坐标(相对于 origin 的米数)
{ "x": -19.18, "y": -107.28 },
{ "x": -19.18, "y": -115.55 },
{ "x": 2.51, "y": -115.31 }
],
"center": { "x": -8.36, "y": -111.45 }
}
]
}
Viewer 导出的文件可附带 precomputedSunlight 缓存及当前活动分析日期。该字段由程序维护,并同时校验项目指纹、采样点指纹、算法版本和分析参数;不匹配或超出限制的数据会被安全忽略并要求重新计算。
vendor/three-r128/
building-sunlight-simulator/
├── css/ # 样式文件
├── js/
│ ├── config.js # 全局配置
│ ├── utils.js # 工具函数
│ ├── i18n.js # 国际化
│ ├── cities.js # 城市数据
│ ├── editor.js # 编辑器逻辑
│ ├── sunlight-worker.js # 离线日照射线计算 Worker
│ └── viewer.js # 查看器逻辑
├── examples/ # 示例数据
├── tests/ # 单元和浏览器回归测试
├── vendor/three-r128/ # Three.js、OrbitControls 与第三方许可证
├── editor.html # 编辑器页面
└── index.html # 查看器页面
欢迎提交 Issue 或 Pull Request。
多立面采样、热力图贴附、分户配置与整户交互这部分能力的演进,参考了 @wingkinl 基于 MIT License 发布的 Fork 项目 building-sunlight-simulator 中的相关实现与思路,在此表示感谢。
MIT License © 2026 SeanWong17
仓库内固定版本的 Three.js 与 OrbitControls 依其 MIT License 发布,详见 vendor/three-r128/LICENSE。
more like this
Firefox and Chrome extensions to prevent Google from making links ugly.
search projects, people, and tags