Project Graph
Pre-release

v3.0.0-alpha.1

10/5/2025


下载

这次更新是一次彻底的底层重构,旨在用一个成熟的渲染库(Pixi.js)替换掉旧的自定义实现,以期获得更好的性能和可维护性。因此,几乎所有与渲染、用户交互、舞台对象管理相关的旧代码和 API 都已失效或被替换。任何基于旧版本进行开发的功能都需要根据新的架构进行完全重写。

[!WARNING]
此版本用于体验新渲染引擎,功能非常不完善,且不能加载旧版本的项目文件。请谨慎使用。

💥 破坏性变更 (部分)

从 Canvas 2D 迁移到 Pixi.js 渲染引擎

这是最核心的破坏性变更。整个项目已经从一个基于原生 Canvas 2D API 的自定义渲染引擎迁移到了使用 Pixi.js 库。

  • 大量代码删除: 整个 app/src/core/render/ 目录被删除,包括 Renderer, Canvas 等服务。
  • 引入新依赖: 引入了 pixi.js 及其生态,如 @pixi/viewport, @pixi/layout 等。

任何依赖于旧渲染器的代码都将完全失效。

Project 类接口变更

  • 不允许动态加载服务: Project 实例将不允许在运行时动态加载服务,所有服务必须在调用 project.init() 时一次性传入。
  • 移除主循环控制方法: project.loop(), project.pause(), project.tick() 等方法被移除,主循环现在由 Pixi.js 管理。

舞台对象继承体系重构

得益于 Pixi.js 强大的 Scene Objects 体系,StageObject 现在直接继承自 @pixi/layout 中的 LayoutContainer 类,由 Pixi.js 负责布局、渲染、交互等。

  • 舞台对象选中时的边框高亮效果现在由 StageObject 统一渲染。
  • 实体的移动逻辑现在由 Entity 统一实现。

设置项变更

移除的设置项:

ID原因
cacheTextAsBitmapPixi.js 的文本是位图渲染,且自带缓存逻辑
textCacheSize同上
textScalingBehavior同上
antialiasing对性能影响不大,且 Pixi.js 默认开启抗锯齿
compatibilityModePixi.js 强制使用 requestAnimationFrame 循环

新增的设置项:

ID说明
powerPerference性能偏好设置,影响 WebGL 上下文的创建
textResolution文本渲染质量,越大越清晰,但性能越差
maxFps最大帧率
minFps最小帧率,注意此功能并非超频

以下为详细更新日志

新功能

  • 初步支持使用Pixi.js进行渲染,带来更流畅的视觉体验。
  • 支持渲染文本节点,让您可以在画布上添加和编辑文本。
  • 添加文本节点交互,可以更方便地与文本进行互动。
  • 支持双击画布创建新节点,操作更加便捷。
  • 添加FPS(帧率)设置,您可以根据需要调整画面流畅度。
  • 在光标位置显示世界坐标,方便您进行精确的定位。
  • 添加性能测试工具,帮助您了解软件的运行状况。
  • 支持编辑文本节点,可以随时修改文本内容。
  • 支持框选功能,让您可以通过框选的方式选择多个节点。
  • 添加了LatexNode,支持Latex公式。
  • 添加了右键菜单,可以更方便地进行操作。
  • 支持将文本节点转换为Latex节点。
  • LatexNode支持改色,可以自定义Latex公式的颜色。
  • 支持编辑SVG节点和Latex节点,可以对SVG和Latex节点进行修改。
  • 支持缩放SvgNode,可以调整SVG节点的大小。
  • 支持节点间的连线,可以连接不同的节点。

问题修复

  • 修复了框选时不会取消选择没有框选到的节点的问题。
  • 修复了移动文本节点会触发框选的问题。

文档和内容更新

  • 修改了文档首页,使其更加清晰易懂。
  • 完善了文档首页的功能对比表格,方便您了解软件的功能。

改进和优化

  • 将移动节点逻辑移动到Entity类,提高代码的组织性和可维护性。
  • 提取出TextureNode,方便后续扩展和维护。