买房选楼层怕采光踩坑?我用纯前端写了个 3D 楼盘日照模拟器!☀️

0 阅读4分钟

大家好,我是 SeanWong17。

对于很多打工人来说,买房是一件人生大事。在选房时,除了地段和户型,**“采光”**绝对是重中之重。特别是遇到高容积率的小区,选错楼层或者楼栋,可能一天都见不到几个小时太阳。

市面上虽然有专业的建筑设计软件可以做日照分析,但对普通人来说门槛太高。于是,我发挥前端程序员的传统艺能——自己动手,丰衣足食!

今天给大家分享一个我最近开源的硬核实用项目:Building Sunlight Simulator(建筑采光模拟工具)

主打一个轻量级、零依赖!只要你有一张小区的平面规划图,在浏览器里点几下,就能生成 3D 楼盘模型,并根据真实的太阳轨迹算法,模拟出任意城市、任意一天的实时日照阴影!

🔗 GitHub 源码地址github.com/SeanWong17/… (开源不易,求个 Star ⭐ 鼓励!)

🌍 在线体验 (Live Demo)点击这里直达


✨ 项目核心痛点与效果展示

这个工具完全是基于 Web 技术(Three.js)实现的纯前端工作流。无需安装庞大的软件,无需后端服务器,拉下代码双击 HTML 就能跑。

1. 🏗️ 2D平面图秒变3D模型(Editor)

不知道怎么建模?没关系。你只需要拿到售楼处或者开发商给的**小区平面图(JPG/PNG)**上传进去。

  • 标定比例:在图上画一条线,输入实际距离(比如 50 米),系统自动校准比例尺。
  • 描边建楼:鼠标点击描出楼栋轮廓,输入层数和层高,一键拔地而起变成 3D 建筑!

(👇 建议在这里插入一张在 Editor 界面描绘楼栋轮廓的 GIF 动图或截图)

2. ☀️ 硬核太阳轨迹计算与高精度阴影(Viewer)

模型建好后,就到了最关键的采光分析环节。

  • 真实地理数据:内置了全国 50+ 城市的纬度数据(你也可以手动输入精确纬度)。
  • 节气与时间模拟:支持选择冬至、夏至、春秋分,并通过滑块实时拖动 06:00 - 18:00 的时间。
  • 高精度可视化:采用了 4096px 的高精度阴影贴图(PCFSoftShadowMap),阴影遮挡关系一目了然!哪层楼几点能晒到太阳,清清楚楚。

3ce23a01-e53d-4c55-97c7-b39e05f2e014.png

3. 🛡️ 纯前端、离线可用、数据私有化

因为买房数据有时比较私密,这个工具没有任何后端依赖。 你的所有图纸、绘制的数据都通过 JSON 格式在本地保存和流转,即使断网也能完美运行,绝对的数据安全。


🛠️ 技术实现剖析

项目中主要拆分为两个核心页面:editor.html(数据生产,负责 2D 到 3D 的映射) 和 index.html(数据消费,负责 3D 渲染和太阳算法)。

技术栈极其精简,核心涉及:

  • 原生 JavaScript + HTML/CSS:搭建编辑工具的 UI 和交互。
  • Three.js (WebGL):负责核心的 3D 场景渲染、相机控制和阴影计算。
  • 数学与算法(球面三角学):这是整个项目的灵魂。为了让阴影绝对真实,阴影的投射完全遵循真实的太阳高度角和方位角公式:
    • 太阳高度角 (h): sin(h)=sin(ϕ)sin(δ)+cos(ϕ)cos(δ)cos(ω)\sin(h) = \sin(\phi)\sin(\delta) + \cos(\phi)\cos(\delta)\cos(\omega)
    • 太阳方位角 (A): cos(A)=(sin(h)sin(ϕ)sin(δ))/(cos(h)cos(ϕ))\cos(A) = (\sin(h)\sin(\phi) - \sin(\delta)) / (\cos(h)\cos(\phi))
    • (注:ϕ\phi 为纬度,δ\delta 为太阳赤纬角,ω\omega 为时角)

通过以上公式动态计算出当前时间太阳所在的 3D 空间坐标,并控制 Three.js 中的平行光(DirectionalLight)位置,从而投射出物理正确的阴影。


🚀 如何本地运行?

无需 npm install,无需配置 Webpack/Vite:

  1. git clone https://github.com/SeanWong17/building-sunlight-simulator.git
  2. 进入目录,双击打开 editor.html 导入你的平面图开始绘制,导出 data.json
  3. 双击打开 index.html,导入你的 data.json,开始你的看房选筹之旅!

🤝 写在最后

目前项目在 GitHub 已经有了 300+ Stars,感谢大家的关注。其实当初写这个项目的初衷,也是希望能用自己学到的技术去解决生活中实实在在的问题。

如果你最近刚好有买房选房的打算,或者身边的朋友有这个需求,不妨发给他们试试。如果这个项目对你的 Three.js 学习或购房决策有帮助,请务必去 GitHub 给个 Star ⭐!

🔗 GitHub 地址SeanWong17/building-sunlight-simulator

如果有任何 bug反馈 或者功能建议,欢迎在评论区或 GitHub 提 Issue 交流! 我们下个开源项目见!