DreamGlobe — Three.js/WebGL 交互式 3D 地球组件库开源项目

我要开发同款
杨海彤2026年07月31日
9阅读

技术信息

语言技术
HTML5CSSJavaScript
系统类型
WebH5
行业分类
VR/AR开发工具
开源地址
https://github.com/GuMuChuan/dream-globe
授权协议
MIT许可

功能介绍

基于 Three.js / WebGL 的交互式 3D 地球组件库,MIT 开源,已上线 https://dream-globe.pages.dev

【功能】
1、地球渲染:昼夜贴图与大气辉光,贴图按屏幕尺寸分级(2048/4096/8192),球体分段数同步自适应,移动端 2208 三角形、桌面 9024。首屏程序化占位贴图秒开,真实贴图后台加载后无缝替换。
2、标记点:按经纬度批量投放,绑定业务数据,点击回调。屏幕空间拾取配合背面剔除,地球背面的点不会误中。
3、大圆弧线:两点按球面最短路径绘制飞线,高度随角距离自适应。
4、相机:拖拽、缩放、flyTo 定位,帧率无关惯性阻尼。
5、同时输出 ES Module 与 IIFE 两种格式,支持服务端渲染。

【难点与解法】
个人独立项目,选型到部署一人完成。技术栈 Three.js、WebGL、GLSL、Vite、Vitest。

性能:标记点用 InstancedMesh 实例化,弧线做几何体合并,1000 标记加 200 弧线压到 4 次 draw call,实测 166 fps,中位帧耗时 6.1ms。

一、大圆弧线不能用经纬度线性插值,跨 180 度经线会绕地球反方向,改用四元数球面插值在三维向量空间求路径。
二、距离弃用球面余弦定理改用 haversine,前者短距离浮点精度崩溃。
三、大气辉光原用 Fresnel 衰减产生硬边光环,改为屏幕空间径向距离配合 smoothstep 零导数收尾,按宽高比归一化,解决竖屏辉光变厚。

相机阻尼用帧率无关指数衰减,60Hz 与 144Hz 手感一致。配备 86 项单元测试。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论