【开源】在 Bianbu 桌面上养一只真正可用的 Live2D 桌宠

在 Bianbu 桌面上养一只真正可用的 Live2D 桌宠

SpacemiT K1 / K3 · Bianbu LXQT · Wayland · Cubism Web · GTK3
桌宠录屏 00_00_00-00_00_30~1


TL;DR

这是一个可以安装在 RISC-V 开发板上的 Live2D 桌宠软件包【优先建议K3,体验感会很好】。

  • 运行环境:SpacemiT K1 / K3 + Bianbu LXQT+ Wayland / labwc
  • 核心体验:角色直接贴在桌面右下角,会眨眼、待机、响应点击、可拖动、可换模型
  • 关键特性:透明区域点击穿透,不遮挡终端、文件管理器和浏览器
  • 当前状态:安装 .deb 后即可使用,不依赖摄像头、语音或本地 LLM
  • 安装命令:sudo dpkg -i live2d-web-pet_0.3.15_all.deb

如果你只是想看“能播 Live2D 的网页”,那不是这个项目。
这里解决的是另一件事:让 Live2D 像真正的桌宠一样站在 RISC-V 桌面上。


它现在能做什么

安装完成后,以下功能开箱即用:

能力 实际效果
透明桌宠 Live2D 角色直接贴在 Wayland 桌面上
点击穿透 点击透明区域,下面的窗口正常响应
点击 / 拖动 可以点击角色,也可以直接拖动位置
右键菜单 换角色、播放动作、调整功能
贴边 / 隐藏 可贴左、贴右、贴底,也可收入托盘
大小与位置 支持缩放和上下左右微调
模型切换 内置多个角色,也支持导入自己的模型
Idle / 动作 待机动作和演出动作分开管理
看鼠标 鼠标进入角色区域时,模型可以跟随
气泡 GTK 侧绘制文字,不污染 Live2D 截帧
状态窗口 查看 Chromium、内存、进程等运行状态
面部捕捉 角色随着你的面部表情进行表情的动作
姿态识别 根据你的上半身姿态,可以进行一定交互动作
AI对话 可以配置大模型,实现和ai的趣味对话(需要本地llama server)

内置模型:haruto、Furina、Diana
支持 Cubism moc3 v2–v5。Cubism 2 的老 .moc 不在兼容范围内。

当前版本不包含:语音交互。会在后续版本退出。


设计原则:她不挡你的 make

很多桌宠会做成一个巨大的透明窗口。
看起来漂亮,然后你会发现:点不到终端、点不到文件管理器、点不到浏览器。

那不叫桌宠,那叫电子屏霸。

所以这个项目从设计上就坚持一条:

角色可点,空白点穿;不抢输入,不挡窗口。

实现方式是:对每一帧 RGBA 画面做 Alpha 分析,只把角色不透明区域注册为输入区域,透明部分直接放行给下层窗口。

  • 更新频率:约 8 Hz
  • 采样方式:4× 降采样
  • 额外开销:不增加第二条 GPU 渲染管线

鼠标点到头发、身体、袖子:角色响应。
点到角色旁边的透明区域:下面的终端正常获得焦点。


为什么要在 RISC-V 上做这个

在 x86 / Windows 上,Live2D 已经非常成熟。但换到 RISC-V,问题突然变多。

1. Cubism Native SDK 没有 RISC-V 官方档位

官方 Runtime 没有提供可直接使用的 Linux RISC-V 版本。
并且moc3文件受版权保护,不能逆向拆解。
所以不能下载 SDK → 编译 → 结束。

2. K1 / K3 的桌面 GPU 路径不是普通 PC

板子使用 PowerVR GPU。桌面环境里 OpenGL / GLES / Vulkan / Qt / Wayland 的路径不能简单照搬 x86 教程。
“能显示”只是第一步,后面还有透明窗口、输入区域、桌面层级、窗口行为。

3. 桌宠物不能占位太多,给用户留有办公区域

普通窗口只需要创建窗口、画模型、完成。
桌宠还需要:透明、贴桌面、不挡窗口、角色区域可点击、透明区域穿透、可拖动、可弹菜单。

因此没有硬搬 Cubism Native SDK,而是选择了一条在 K1 / K3 上实际跑通的路线。

4. 充分利用K3/K1的本地算力

K3自带60T算力,可以运行最大30B LLM大模型(但作者的机器只有16G),我们可以利用这个算力,把ai对话全部本地化,同时结合int8加速,运行yolov8 pose模型,让模型跟着你动,同时兼顾本地人脸106点识别,表情识别,tts、,语音识别,做一款和人交互的应用。


架构:让 Chromium 画,让 GTK 当桌宠

核心结构如下:

┌──────────────────────────────┐
│         Live2D Model         │
│       Cubism Web Runtime     │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│      Headless Chromium       │
│    WebGL / ANGLE / GPU       │
│       输出 RGBA 帧           │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│         GTK Overlay          │
│  显示最新帧                   │
│  根据 Alpha 设置 Input Region │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│     gtk-layer-shell          │
│     Wayland / labwc          │
└──────────────┬───────────────┘
               │
               ▼
         RISC-V Desktop

总之:

Cubism Web 负责画角色,Chromium 负责跑渲染,GTK 负责让她真正站到桌面上。

这个架构也带来一个额外好处:渲染逻辑与桌面行为解耦
模型部分可以独立迭代,桌宠交互部分也可以独立修改。


一些只有实际做才会遇到的坑

Wayland 与 X11 同时存在

K1 的桌面环境里可能同时存在 DISPLAY=:0WAYLAND_DISPLAY
GTK3 如果判断错误,可能直接走到 X11,导致:

  • layer-shell 初始化成功,但实际不是正确的 layer surface
  • 拖动时 compositor 疯狂报 CRITICAL
  • 角色被窗口管理器拖到屏幕中间,完全失控

处理方式:有 Wayland 就明确使用 Wayland。

GDK_BACKEND=wayland

修好后,贴角、拖动、气泡、layer-shell 全部正常。

Live2D 模型包比想象中乱

实际拿到的模型经常包含 VTube Studio 工程、(1).json、重复文件、多个动作配置、Idle 指向 Scene 演出动作。
如果运行时现场猜测,迟早会变成一锅粥。

所以做了一个明确的导入边界:

模型原始文件 → 导入器 → pet_meta.json → models.json → 桌宠运行时

运行时只读取已经整理好的模型信息:哪些是 Idle、哪些是演出动作、有哪些表情、模型版本、模型名称。
这样不会出现“开机突然自己开始谢幕”的诡异情况。

提供统一的模型切换管理,用户可以自己画或者更换自己的模型:
切换模型 00_00_00-00_00_30


平台特性:K1 / K3 的 AI-CPU能做什么

角色渲染走 Cubism Web → Chromium → PowerVR GPU。

AI-CPU 的意义在后面的“让桌宠看见你”。
K1 / K3 的 AI 能力更适合人体姿态、人脸检测、表情识别、语音识别等视觉交互。

目前已经验证过的路线:

  • SpaceMIT EP:负责 INT8 推理,例如 YOLOv8 姿态、人脸关键点等
  • RVV:补上 CPU 侧图像缩放、色彩转换、后处理等,避免AI-CPU节省的时间被前后处理吃掉
  • SenseVoice:板上 ASR 测试已跑通,未来可作为语音入口
  • Matcha-TTS:板上测试已跑通,未来结合 LLM 和 Live2D Lip Sync
  • 本地 LLM:已验证 Qwen 2B 一类模型 + llama-server,通过 OpenAI Compatible API 接入

但这些能力会以独立进程的形式存在,不会把 ORT 或 AI Runtime 直接塞进桌宠 GUI。
GUI 只负责接收抽象后的参数,保持边界清晰。


安装与使用

K1 / K3 用户可以直接安装:

sudo dpkg -i live2d-web-pet_0.3.18_all.deb

然后启动:

live2d-web-pet

也可以从图形开始菜单启动:Live2D 桌宠

需要运行在图形桌面环境。SSH 纯字符终端请不要尝试启动。

导入自己的模型:将模型放入 ~/.local/share/live2d-web-pet/models/,然后在图形界面的“模型管理”中刷新。


当前已加入的能力(0.3.16 更新)

在原有的桌宠基础功能之上,当前版本利用K3高算力的特性,已经额外提供以下三项交互能力:

功能 实际效果
面部捕捉 角色会随你的面部表情做出对应表情动作
姿态识别 根据你的上半身姿态,触发一定的交互动作
AI 对话 可配置大模型,实现与 AI 的趣味对话(需要 llama server)

这些功能均以可选模块形式提供,不会影响桌宠本身的稳定运行。默认情况下不强制启用,你可以根据自己的需求在配置中打开。

K3运行YOLOV8 pose模型效果
人体姿态 00_00_00-00_00_30~1

本地人脸姿态检测
人脸106 00_00_00-00_00_30

调用本地llama-server 使用qwen模型进行对话 (首次大概会需要几秒进行prefill ,后续对话会很快速),如图是k3的运行效果(需要在ai设置里面更换本地llama-server的API)。

AI对话快速 00_00_00-00_00_30


当前限制(0.3.18)

受时间限制,以下功能暂未包含在当前版本中,部分已在板上单独验证,后续会逐步集成:

  • 默认启用摄像头(面部捕捉与姿态识别需要手动开启)
  • SenseVoice 语音入口
  • Matcha-TTS 输出
  • Live2D Lip Sync
  • 自动关系记忆
  • 向量数据库养成
  • 多显示器完整跟随
  • Wayland 下的全局鼠标跟踪
  • 完整的养成系统设计
  • 更低的资源占用

其中 SenseVoice、Matcha-TTS 已经在板上跑通,但尚未与桌宠 GUI 完全整合;其余部分属于路线图内容。我们会在后续版本中继续完善。


后续路线图

在已实现的面部捕捉、姿态识别和 AI 对话基础上,后续版本会继续扩展:

麦克风 → 语音识别 → 抽象动作参数 → Live2D 桌宠
                                      ↓
                              灵魂卡 → LLM → 气泡 / TTS

重点是补全语音链路(ASR + TTS + Lip Sync),并逐步加入关系记忆等长期养成能力。


作为开源,这个项目想展示什么

我们希望它成为一个可 fork 的参考实现,展示在 RISC-V 桌面上如何组合现有技术栈解决实际问题:

  • 用 Cubism Web 绕过 Native SDK 缺失的问题
  • 用 Headless Chromium 解决 WebGL 渲染与桌面显示分离
  • 用 GTK + gtk-layer-shell 解决 Wayland 下的桌面层级与输入区域
  • 用独立进程 + 抽象参数保留 AI 能力的扩展空间
  • 用可选模块方式集成面部、姿态和 LLM,保持核心轻量与可维护性
  • 同时,在繁琐的日常工作中,希望能有一个人能够一直陪伴着

代码边界清晰:模型导入、桌宠 Overlay、感知模块互不耦合。
想改的人可以从任意一层入手,而不必理解整个系统。


写在最后

RISC-V 开发板的桌面通常是什么样?终端、浏览器、一份正在编译的代码,有时还有 make -j8 和一堆日志。

现在桌面右下角可以多一样东西:一只会眨眼的 Live2D。

她现在已经可以稳定地站在桌面上,不挡你的窗口,点透明区域穿透,点角色互动,换模型,拖来拖去。
如果你愿意,她还可以看着你的表情做出回应,根据你的姿态动一动,甚至陪你聊几句——只要你接上 llama server。

后面的版本,我们再慢慢让她开口说话,记住更多事情。

如果社区里已经有更早的 RISC-V Live2D 桌宠,欢迎出来认领。


仓库(请用k3-dev分支): `
[ Gitee 链接:https://gitee.com/achenjiayi/rv_ive2d_pet/tree/k3_dev/]

Release / .deb `[下载链接:https://gitee.com/achenjiayi/rv_ive2d_pet/releases/tag/v0.3.18]

直接使用

wget -O live2d-web-pet_0.3.18_all.deb \
  "https://gitee.com/achenjiayi/rv_ive2d_pet/releases/download/v0.3.18/live2d-web-pet_0.3.18_all.deb"
sudo dpkg -i live2d-web-pet_0.3.18_all.deb
sudo apt-get install -f -y
live2d-web-pet

0.3.17 改动说明:

  • 修复的对于dinna 等存在交互热点的区域,但是实际没有注册到加载器里面。
  • 将“面部捕捉”“姿态识别”“AI 对话”移出“当前限制”,并新增一小节明确列出它们。
  • “当前限制”中删除了这三项,仅保留尚未完成的功能。
  • “后续路线图”调整表述,说明这些能力已实现,后续聚焦语音和记忆等。
  • “作为开源案例”中增加了一条关于可选模块集成的描述,体现项目可扩展性。
  • 结尾部分加入了对新功能的自然提及,保持宣传语气一致。

0.3.18 改动说明:
修好 0.3.17:AI / 灵魂不再往只读的 /usr/lib 里写。

  • AI 设置:~/.config/live2d-web-pet/ai_settings.json
  • 灵魂 / 聊天:~/.local/share/live2d-web-pet/
  • 自备模型:~/.local/share/live2d-web-pet/models/
  • 本地 llama 对话会流式出字;气泡默认最多 150 字
3 个赞