2025-02-03 22:08:25 +08:00
|
|
|
|
# 3D GraphML Viewer
|
|
|
|
|
|
|
|
|
|
一个基于 Dear ImGui 和 ModernGL 的交互式 3D 图可视化工具。
|
|
|
|
|
|
|
|
|
|
## 功能特点
|
|
|
|
|
|
|
|
|
|
- **3D 交互式可视化**: 使用 ModernGL 实现高性能的 3D 图形渲染
|
|
|
|
|
- **多种布局算法**: 支持多种图布局方式
|
|
|
|
|
- Spring 布局
|
|
|
|
|
- Circular 布局
|
|
|
|
|
- Shell 布局
|
|
|
|
|
- Random 布局
|
|
|
|
|
- **社区检测**: 支持图社区结构的自动检测和可视化
|
|
|
|
|
- **交互控制**:
|
|
|
|
|
- WASD + QE 键控制相机移动
|
|
|
|
|
- 鼠标右键拖拽控制视角
|
|
|
|
|
- 节点选择和高亮
|
|
|
|
|
- 可调节节点大小和边宽度
|
|
|
|
|
- 可控制标签显示
|
|
|
|
|
- 可在节点的Connections间快速跳转
|
|
|
|
|
- **社区检测**: 支持图社区结构的自动检测和可视化
|
|
|
|
|
- **交互控制**:
|
|
|
|
|
- WASD + QE 键控制相机移动
|
|
|
|
|
- 鼠标右键拖拽控制视角
|
|
|
|
|
- 节点选择和高亮
|
|
|
|
|
- 可调节节点大小和边宽度
|
|
|
|
|
- 可控制标签显示
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
- **imgui_bundle**: 用户界面
|
|
|
|
|
- **ModernGL**: OpenGL 图形渲染
|
|
|
|
|
- **NetworkX**: 图数据结构和算法
|
|
|
|
|
- **NumPy**: 数值计算
|
|
|
|
|
- **community**: 社区检测
|
|
|
|
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
|
|
|
|
1. **启动程序**:
|
|
|
|
|
```bash
|
2025-02-05 02:59:51 +08:00
|
|
|
|
pip install lightrag-hku[tools]
|
|
|
|
|
lightrag-viewer
|
2025-02-03 22:08:25 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. **加载字体**:
|
|
|
|
|
- 将中文字体文件 `font.ttf` 放置在 `assets` 目录下
|
|
|
|
|
- 或者修改 `CUSTOM_FONT` 常量来使用其他字体文件
|
|
|
|
|
|
|
|
|
|
3. **加载图文件**:
|
|
|
|
|
- 点击界面上的 "Load GraphML" 按钮
|
|
|
|
|
- 选择 GraphML 格式的图文件
|
|
|
|
|
|
|
|
|
|
4. **交互控制**:
|
|
|
|
|
- **相机移动**:
|
|
|
|
|
- W: 前进
|
|
|
|
|
- S: 后退
|
|
|
|
|
- A: 左移
|
|
|
|
|
- D: 右移
|
|
|
|
|
- Q: 上升
|
|
|
|
|
- E: 下降
|
|
|
|
|
- **视角控制**:
|
|
|
|
|
- 按住鼠标右键拖动来旋转视角
|
|
|
|
|
- **节点交互**:
|
|
|
|
|
- 鼠标悬停可高亮节点
|
|
|
|
|
- 点击可选中节点
|
|
|
|
|
|
|
|
|
|
5. **可视化设置**:
|
|
|
|
|
- 可通过 UI 控制面板调整:
|
|
|
|
|
- 布局类型
|
|
|
|
|
- 节点大小
|
|
|
|
|
- 边的宽度
|
|
|
|
|
- 标签显示
|
|
|
|
|
- 标签大小
|
|
|
|
|
- 背景颜色
|
|
|
|
|
|
|
|
|
|
## 自定义设置
|
|
|
|
|
|
|
|
|
|
- **节点缩放**: 通过 `node_scale` 参数调整节点大小
|
|
|
|
|
- **边宽度**: 通过 `edge_width` 参数调整边的宽度
|
|
|
|
|
- **标签显示**: 可通过 `show_labels` 开关标签显示
|
|
|
|
|
- **标签大小**: 使用 `label_size` 调整标签大小
|
|
|
|
|
- **标签颜色**: 通过 `label_color` 设置标签颜色
|
|
|
|
|
- **视距控制**: 使用 `label_culling_distance` 控制标签显示的最大距离
|
|
|
|
|
|
|
|
|
|
## 性能优化
|
|
|
|
|
|
|
|
|
|
- 使用 ModernGL 进行高效的图形渲染
|
|
|
|
|
- 视距裁剪优化标签显示
|
|
|
|
|
- 社区检测算法优化大规模图的可视化效果
|
|
|
|
|
|
|
|
|
|
## 系统要求
|
|
|
|
|
|
|
|
|
|
- Python 3.10+
|
|
|
|
|
- OpenGL 3.3+ 兼容的显卡
|
|
|
|
|
- 支持的操作系统:Windows/Linux/MacOS
|