之前在 V2EX 分享过我的实时航班追踪项目 Flight-Viz ( https://flight-viz.com ),用 Rust + WASM + WebGL2 在浏览器里渲染 1 万多架飞机。上次发帖后收到不少反馈,这几天加了一个新功能想分享一下。
现在点击任何一架飞机,按 Cockpit 按钮,就能进入驾驶舱视角, 渲染真实的地形、建筑、大气层。高度、速度、航向都是实时 ADS-B 数据驱动的。
可以直接体验驾驶舱视角: https://flight-viz.com/cockpit.html?lat=31.23&lon=121.47&alt=3000&hdg=90&spd=150&cs=demo
做这个功能的过程挺曲折的。一开始想直接在 Rust/WASM 的 WebGL 渲染器里实现第一人称视角,但我们的轨道相机系统始终朝向地球中心,改成倾斜视角后瓦片加载全崩了。
位置更新的平滑处理也花了不少功夫。服务器每 2 分钟更新一次数据,中间用航位推算( dead reckoning )保持飞机移动。关键问题是服务器经常返回相同的旧数据,如果每次都重置锚点位置,飞机就会往回跳。最后的解决方案是检测位置变化是否超过 11 米,只有真正有新数据时才重置锚点,否则继续推算。
之前发的帖子: https://v2ex.com/t/1203750 Reddit r/webdev #1: https://www.reddit.com/r/webdev/comments/1sbnhvm/ Hacker News 首页: https://news.ycombinator.com/item?id=47603966 技术博客: https://dev.to/hao_jiang_c21b032bd6fbcfa/how-i-render-10000-live-aircraft-at-60fps-in-the-browser-with-rust-wasm-and-raw-webgl2-4360
在线体验: https://flight-viz.com 驾驶舱直接体验: https://flight-viz.com/cockpit.html?lat=31.23&lon=121.47&alt=3000&hdg=90&spd=150&cs=demo
1
coolwulf OP |
2
coolwulf OP |
3
villivateur 8 小时 12 分钟前
很感慨,真的会有人做出这么牛逼的产品。而且我还跟这种大佬逛一个论坛。
|