基于 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 项单元测试。
点击空白处退出提示










评论