☰
基于Ratty Graphics Protocol的3D终端生态:终端CAD工具Ratscad、无尽跑酷与串口遥测应用完全指南
2026/9/28 20:29:13 网站建设 项目流程

基于Ratty Graphics Protocol的3D终端生态:终端CAD工具Ratscad、无尽跑酷与串口遥测应用完全指南

【免费下载链接】rattyA GPU-rendered terminal emulator with inline 3D graphics 🐀🧀项目地址: https://gitcode.com/gh_mirrors/rat/ratty

Ratty 是一款GPU 渲染的终端模拟器,内置行内 3D 图形能力(inline 3D graphics)。它的核心创新是 Ratty Graphics Protocol(RGP)——一套让 3D 对象像字符一样锚定在终端单元格里自定义协议。本文带你完整看懂 RGP 的工作原理,以及基于它诞生的三款明星应用:终端 CAD 工具 Ratscad、无尽跑酷游戏 Ratty-runner和串口遥测应用 ComChan🐀。

一、30 秒认识 Ratty:会渲染 3D 的终端模拟器

先回答一个问题:终端为什么能显示 3D 对象?

Ratty 的渲染管线完全驻留在 GPU 上:PTY 输出先被解析并绘制到 Ratatui 缓冲区,再经由 Vello 转成 GPU 场景纹理,最终由 Bevy 在 2D/3D 场景中呈现。也就是说,终端表面本身就是一个可弯曲、可旋转的 3D 面片,而 RGP 负责把 3D 模型"钉"在这个面片上。

安装方式(任选其一):

  • cargo install ratty
  • Arch Linux:sudo pacman -S ratty
  • Nix:nix run github:orhun/ratty,详见 nix/README.md
  • 从源码:cargo install --git https://gitcode.com/gh_mirrors/rat/ratty

一键进入 3D 模式

装好后最爽的一步:按下Ctrl+Alt+Enter,终端会从平面"翻"进 3D 空间;再按Ctrl+Alt+P可切换透视视角,Ctrl+Alt+M进入莫比乌斯(Mobius)模式。光标还是一只旋转的 3D 老鼠 🧀,可以在 config/ratty.toml 里换成 assets/objects/SpinyMouse.glb 等模型。

二、RGP 协议详解:终端如何变成 3D 画布

RGP 的完整规范见 protocols/graphics.md。它的思路源自 TempleOS 的内联文档图形(DolDoc),但面向现代终端与 3D 渲染:

传输格式:基于 APC 的"图形指令"

RGP 通过 APC(Application Program Command)序列传输,格式非常直观:

ESC _ ratty;g;<动词>[;<key=value>...] ESC \

动词只有 6 个,记住它们就掌握了整个协议:

动词作用一句话解释
s能力查询探测终端是否支持 RGP 及版本
r注册资源按文件路径或base64 载荷注册.obj/.glb/.stl模型
p放置对象把模型锚定到指定行列的终端格子,可设置缩放、旋转、颜色、深度
u更新对象原地修改旋转、位移等变换,无需重新注册
d删除对象删除单个或全部行内 3D 对象
c相机控制控制 10 个持久相机位(Flat / Ortho / Persp / Mobius)

一个典型的 RGP 会话

以 Ratty 自带的小鼠模型为例(assets/objects/CairoSpinyMouse.obj):

ESC _ ratty;g;r;id=7;fmt=obj;path=CairoSpinyMouse.obj ESC \ ← 注册 ESC _ ratty;g;p;id=7;row=5;col=10;w=3;h=2;animate=1;ry=30 ESC \ ← 放置在 (5,10) ESC _ ratty;g;u;id=7;ry=180 ESC \ ← 旋转 180° ESC _ ratty;g;c;id=0;set=1;type=Persp;fov=50;rx=10;ry=20 ESC \ ← 切到 50° 透视相机 ESC _ ratty;g;d;id=7 ESC \ ← 删除

一个对远程场景格外重要的设计:载荷注册(payload registration)。当应用与终端不在同一台机器上(比如 SSH 远端跑程序、本地显示),无法依赖共享文件路径,RGP 允许把模型数据 base64 编码后直接塞进r命令,还支持more=1/0分块传输大文件——这正是 ComChan 这类遥测应用跨机器工作协议基础。

三、生态应用盘点:Ratscad、Ratty-runner 与 ComChan

以下三款应用都"明确围绕 Ratty Graphics Protocol 构建",分别展示了 RGP 在工程、游戏和 IoT 三个方向的潜力。

1️⃣ Ratscad:终端里的 CAD 建模工具

Ratscad 把终端变成了2.5D 建模工作台:直接在字符网格上绘制、拉伸实体,RGP 负责把生成结果作为行内 3D 对象渲染出来。它证明了 RGP 不只是"摆个模型看",而是能承载真实几何编辑工作流——从 CAD 到打印预览,全程不出终端。

2️⃣ Ratty-runner:终端里的无尽跑酷游戏

Ratty-runner 是一款专为 Ratty 打造的无尽跑酷(endless runner)。跑道、障碍物、角色都是 RGP 行内 3D 对象,锚点随游戏帧不断更新——相当于用终端格子空间当游戏引擎的坐标系。按Ctrl+Alt+Enter把视角翻成 3D 后,跑酷画面直接"立"了起来,是体验 RGP 动态更新(u动词)的最佳示范 🎮。

3️⃣ ComChan:串口遥测 + 3D 数据可视化

ComChan 是一个极速串口监视器(serial monitor):左侧是带绘图器的 TUI 实时曲线,右侧把传感器数据以 3D 遥测形式可视化。它同时用到了 RGP 的两大能力——高频p/u更新驱动实时数据,以及载荷注册让远端设备无需共享本地文件即可渲染 3D 资产。对嵌入式开发者来说,"串口调试 + 3D 遥测"合二为一,省掉了单独的 GUI 工具 📡。

四、自己造轮子:用 ratatui-ratty 写 3D 终端应用

想在 Ratty 里写自己的 3D 应用?仓库内自带的 Ratatui widget widget/(ratatui-rgp)就是官方脚手架,API 只有三步:

  1. RattyGraphic::new(...):指定模型路径、id、格式(obj/glb/stl)
  2. graphic.register():按路径注册,或register_payload()直接注册内存数据
  3. (&graphic).render(rect, &mut buf):在任意矩形区域放置;之后改settings_mut()再update()即可原地动画

配套示例都值得一跑(在widget/examples/下):

示例展示能力
big_rat.rs最简行内对象,v键循环切换 4 种相机
document.rsTempleOS 风文档:可编辑文本 + 内嵌 3D 对象
draw.rs分屏绘画:左 2D 画布、右实时 3D 预览
rubiks_cube.rs交互式 3D 魔方
mobius_chess.rs莫比乌斯环上的 3D 国际象棋

更多 3D 资产可参考 assets/objects/ 目录下的 SkateMouse.stl 等文件;渲染实现细节见 src/rendering.rs 与 src/rgp.rs。

五、总结:终端 3D 生态的关键点

  • RGP 是"图形字符":3D 对象被锚定到终端格子,成为终端表面的一等公民,而不是外部悬浮层
  • 协议极简:6 个动词覆盖注册、放置、更新、删除、相机全生命周期,600 行规范即可上手
  • 生态已跑通三大赛道:Ratscad(工程 CAD)、Ratty-runner(游戏)、ComChan(串口遥测),分别验证了编辑、高频渲染与远程载荷传输
  • 开发门槛低:一个 Ratatui widget 就能把 3D 对象写进任何 TUI 应用

下一步不妨运行widget/examples/big_rat.rs看看巨型 3D 老鼠,然后用Ctrl+Alt+Enter翻进 3D 世界——终端的下一个十年,可能就从一只转圈的小老鼠开始 🐀

【免费下载链接】rattyA GPU-rendered terminal emulator with inline 3D graphics 🐀🧀项目地址: https://gitcode.com/gh_mirrors/rat/ratty

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询