友链图谱 2.0 - 3D 更美观的可视化
发布时间:2026-06-27 18:30:00更新时间:2026-06-27 18:30:00
🕒 阅读时间:5 分钟📝 字数:1217👀 阅读量:Loading...
声明:本文在撰写过程中使用了 AI 工具辅助润色与排版。
前言
还记得我之前写的 友链图谱 - 汇聚千丝万缕的联系 吗?那时候还是 2D 平面的展示方式,虽然也能看出关系,但总觉得少了点什么。
这次我彻底重构了可视化引擎,从 2D 升级到 3D 球状网络!基于 Three.js 和 3d-force-graph,让整个友链网络在三维空间中旋转、缩放,视觉效果直接拉满。
友链图谱 2.0
友链图谱网址: https://links.needhelp.icu/
3D 球状网络
友链关系以 3D 球状网络 呈现,基于 Three.js 渲染:
聚焦与高亮效果
右键点击任意节点,会触发 聚焦效果:
从宏观宇宙中看,聚焦节点就像一颗 恒星,金色连线像光束一样指向它,非常醒目。
搜索与定位
URL 自动聚焦
如果你已经在网络中,可以通过查询参数来自动聚焦并高亮指定站点节点:
技术实现
3D 力导布局
links/*.yml 站点数据解析节点与友链nodes: 站点 + 外部友链links: 互链 / 单向友链初始球面位置forceSimulation 3DforceLink 弹簧力forceManyBody 库仑斥力forceCenter 质心归零迭代 300 ticksalpha 冷却velocity 衰减更新位置输出 graph.json
使用 d3-force-3d 在构建时预计算节点位置,客户端直接加载预计算好的坐标,开箱即用,无需等待布局收敛。
各步骤的数学细节:
研究本地仓库
src/pages/graph.json.ts时发现:当前调用forceSimulation(simNodes)没有传入维度参数,d3-force-3d默认是 2D 仿真。若要真正在三维空间计算z坐标,需要改为forceSimulation(simNodes, 3)。
节点渲染
高亮系统
加入网络
和之前一样简单,fork 仓库,在 links 文件夹下用你的域名作为文件名创建 yml 文件:
site:
name: 我的博客
description: 分享编程和技术相关的文章
url: https://example.com
friends:
- name: 编程小站
url: https://codehub.example.com
- name: 技术前沿
url: https://techfrontier.example.com
写在最后
从 2D 到 3D,从平面到立体,友链图谱的升级不仅仅是视觉上的提升,更是对 Web 本意 的回归——让信息在空间中有机地连接在一起。
欢迎访问 友链图谱 2.0,找到你的博客在宇宙中的位置!
Creative Commons