Rerun项目架构深度解析:从数据可视化到核心技术实现

Rerun项目架构深度解析:从数据可视化到核心技术实现

rerun Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui. rerun 项目地址: https://gitcode.com/gh_mirrors/re/rerun

项目概述

Rerun是一个专注于数据可视化的开源项目,它提供了一套完整的解决方案,用于记录、传输和可视化丰富的数据类型(如点云、图像等)。作为一个现代化的可视化工具,Rerun采用了多项前沿技术,包括Apache Arrow、wgpu和WebAssembly等,构建了一个跨平台、高性能的数据可视化系统。

核心组件架构

1. 日志记录API层

Rerun提供了两种语言的SDK用于数据记录:

  • Python SDK:面向数据科学和机器学习领域
  • Rust SDK:为需要更高性能的场景设计

这些SDK使用Apache Arrow作为底层数据编码格式,确保了数据的高效序列化和跨语言兼容性。记录的数据可以通过两种方式处理:

  1. 写入本地.rrd文件(Rerun专有数据格式)
  2. 通过gRPC协议传输到Rerun Viewer或Rerun Server

2. 可视化查看器(Viewer)

Rerun Viewer是项目的核心可视化组件,具有两种运行模式:

原生应用模式
  • 通过rr.init("app_name", spawn=True)直接启动
  • 也可作为独立应用运行,查看本地.rrd文件
Web浏览器模式
  • 基于WebAssembly技术
  • 支持拖放.rrd文件到浏览器中查看
  • 支持通过gRPC接收实时数据流

3. 数据存储格式(.rrd文件)

.rrd文件是Rerun的专有数据格式,特点包括:

  • 简单的日志消息追加结构
  • 当前版本不保证向后/向前兼容性
  • 使用Apache Arrow作为底层编码

关键技术解析

1. Apache Arrow的应用

Rerun深度集成了Apache Arrow技术栈:

  • 跨语言数据格式:作为SDK和Viewer之间的通用数据语言
  • 内存存储re_chunk_store模块使用Arrow格式进行内存数据管理
  • 高效查询:支持列式存储和向量化处理

2. 图形渲染系统

Rerun Viewer的渲染系统基于现代图形API:

  • wgpu抽象层:统一Vulkan、Metal、Direct3D等不同图形API
  • re_renderer模块:Rerun自研的高性能渲染引擎
  • Web支持:自动在WebGPU和WebGL之间切换

3. 用户界面框架

Viewer的GUI采用egui框架,特点包括:

  • 即时模式(Immediate Mode)GUI范式
  • 跨平台支持(原生和Web)
  • 响应式设计,无状态管理负担

4. WebAssembly集成

Rerun的Web版本充分利用Wasm技术:

  • 单线程优化设计
  • 受限的系统访问(通过JS桥接)
  • 未来将支持WASI标准

架构设计理念

即时模式(Immediate Mode)哲学

Rerun Viewer采用了全面的即时模式设计:

  1. 每帧重建:GUI和可视化内容每帧完全重建
  2. 无状态优势:消除状态同步问题,简化代码逻辑
  3. 性能优化:强制持续优化,确保流畅交互体验

未来计划在保持即时模式优点的前提下,引入:

  • 查询缓存
  • 渲染任务缓存
  • 后台线程处理大数据集

模块化架构详解

Rerun采用高度模块化的Rust crate架构,主要分为:

1. SDK与CLI层

  • rerun-cli:命令行接口
  • re_sdk:核心日志记录功能
  • rerun_py:Python绑定
  • rerun_c:C语言绑定

2. 可视化查看器核心

  • UI组件:如时间面板(re_time_panel)、蓝图树(re_blueprint_tree)等
  • 视图类型:支持空间视图、图表视图、张量视图等多种可视化形式
  • 渲染引擎re_renderer提供底层图形能力

3. 数据存储与处理

  • 应用层存储re_entity_db管理内存中的实体数据
  • 底层存储re_chunk_store基于Arrow的时序数据库
  • 类型系统re_types定义核心数据类型

4. 数据流处理

  • 文件加载(re_data_loader)
  • gRPC通信(re_grpc_client/server)
  • Web服务(re_web_viewer_server)

5. 工具与基础设施

  • 构建工具(re_build_tools)
  • 分析工具(re_analytics)
  • 各种实用工具库

开发与构建建议

对于想要深入了解或参与Rerun开发的开发者,建议:

  1. 使用cargo depgraph生成项目依赖图,理解模块关系
  2. 通过cargo doc查阅详细的API文档
  3. 重点关注re_前缀的核心模块

总结

Rerun项目通过精心设计的模块化架构,结合多项现代技术,构建了一个高性能、跨平台的数据可视化系统。其即时模式的设计哲学和基于Arrow的数据处理方式,使其在响应性和效率方面表现出色。随着项目的持续发展,Rerun有望成为数据可视化领域的重要工具。

rerun Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui. rerun 项目地址: https://gitcode.com/gh_mirrors/re/rerun

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔印朗Dale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值