Imervue 使用手册
================
GPU 加速图像工作站,提供 **四个顶层标签**。本手册大部分内容围绕这四个标签组织。
.. list-table::
:header-rows: 1
:widths: 18 82
* - 标签
- 功能
* - **Imervue**
- 浏览、查看、整理、搜索、批处理图库。见"Imervue 标签 — 图片浏览与图库"。
* - **Modify**
- 非破坏显影管线 — 滑块、曲线、LUT、蒙版、修图、多图合成。见"Modify 标签 — 非破坏显影"。
* - **Paint**
- 本格的なラスター描画 风格的栅格绘图工作室,含笔刷、图层、动画、漫画工具、PSD I/O。见"Paint 标签 — 本格的なラスター描画 风格绘图"。
* - **Puppet**
- 从零打造的 2D 绑骨偶动画器 — 网格、变形器、参数、动作、物理。见"Puppet 标签 — 2D 绑骨偶动画"。
接下来的"快速开始"、"参考"、"插件系统"、"MCP 服务器"属于跨标签的章节,所有标签通用。
.. contents:: 目录
:depth: 2
:local:
----
快速开始
--------
打开 Imervue 后,你会看到三个区域:
::
┌──────────┬──────────────────────┬──────────┐
│ 文件夹 │ │ EXIF │
│ 树状图 │ 图片浏览区 │ 信息栏 │
│ │ │ │
└──────────┴──────────────────────┴──────────┘
- **左边**:文件夹目录,点选文件夹就能浏览里面的图片
- **中间**:图片显示区,会以缩略图网格展示所有图片
- **右边**:EXIF 信息栏,显示图片的拍摄信息
----
打开图片
--------
.. list-table::
:header-rows: 1
:widths: 30 70
* - 方法
- 操作
* - 打开文件夹
- ``文件`` > ``打开文件夹``,选择你要浏览的目录
* - 打开单张图片
- ``文件`` > ``打开图片``,选择一张图片
* - 拖拽打开
- 直接把图片或文件夹拖进窗口
* - 从资源管理器打开
- 右键图片 > ``Open with Imervue``(需先注册文件关联)
* - 最近打开
- ``文件`` > ``最近打开``,快速回到之前看过的文件夹
支持的图片格式
^^^^^^^^^^^^^^
- **常见格式**:PNG、JPEG、BMP、TIFF、WebP、GIF、APNG、SVG
- **RAW 格式**:CR2(Canon)、NEF(Nikon)、ARW(Sony)、DNG(Adobe)、RAF(Fujifilm)、ORF(Olympus)
----
浏览图片
--------
缩略图网格模式
^^^^^^^^^^^^^^
打开文件夹后,所有图片会以缩略图网格排列。
.. list-table::
:header-rows: 1
:widths: 30 70
* - 操作
- 方法
* - 浏览图片
- 鼠标滚轮上下滚动
* - 移动画面
- 按住鼠标中键拖拽
* - 进入大图模式
- 左键点击任一张缩略图
* - 调整缩略图大小
- 上方菜单 ``缩略图大小`` > 选择 128 / 256 / 512 / 1024
* - 缩略图排列密度
- ``缩略图大小`` > ``缩略图排列密度`` > 紧凑 / 标准 / 宽松
* - Hover 预览弹窗
- 鼠标悬停缩略图 500 ms 显示放大预览
* - 框选多张图片
- 左键拖拽框选
* - 方向键移动
- ``↑`` ``↓`` ``←`` ``→`` 平移画面,按住 ``Shift`` 可微调
缩略图会显示状态徽章:左缘色条(颜色标签)、左上 ❤(收藏)、右上 ★(书签)、左下评分星。
尚未加载完成的缩略图以旋转点阵占位符显示。
列表(详细)模式
^^^^^^^^^^^^^^^^
按 ``Ctrl + L`` 可在缩略图格与可排序的列表视图之间切换,列为:预览 · 标签 · 名称 · 分辨率 · 大小 · 类型 · 修改时间 · 星级评分(可直接点击设置 0 – 5 星)。
双击行(或按 ``Enter``)进入大图模式;按 ``Esc`` 返回列表。缩略图与元数据在后台线程懒加载,
面对大型文件夹仍保持流畅。
大图模式(Deep Zoom)
^^^^^^^^^^^^^^^^^^^^^
点击缩略图后进入大图模式,可以高画质浏览单张图片。
.. list-table::
:header-rows: 1
:widths: 30 70
* - 操作
- 方法
* - 放大/缩小
- 鼠标滚轮、或触控板捏合
* - 拖拽平移
- 按住鼠标中键
* - 上一张图
- ``←`` 左方向键(或触控板向右滑)
* - 下一张图
- ``→`` 右方向键(或触控板向左滑)
* - 跨文件夹跳转
- ``Ctrl + Shift + ←`` / ``→`` 跳至前/下一个含图片的同级文件夹
* - 浏览历史
- ``Alt + ←`` 返回、``Alt + →`` 前进(类似浏览器)
* - 按编号跳转
- ``Ctrl + G``
* - 随机图片
- ``X``
* - 适应宽度
- 按 ``W``
* - 适应高度
- 按 ``Shift + W``
* - 重置缩放
- 按 ``Home``
* - 回到缩略图模式
- 按 ``Esc``
* - 全屏
- 按 ``F``,再按一次退出
* - 剧场模式
- ``Shift + Tab`` 隐藏所有菜单/状态栏/文件树
* - OSD 信息叠加
- ``F8`` 显示文件名/尺寸/类型;``Ctrl + F8`` 显示 Debug HUD(显存/缓存/线程)
* - 像素查看
- ``Shift + P``:缩放 ≥ 400 % 显示像素网格与光标下 RGB/HEX
* - 色彩模式
- ``Shift + M`` 循环 正常/灰阶/反相/怀旧(GLSL,非破坏性)
分割视图与双页阅读
^^^^^^^^^^^^^^^^^^
无需打开 Compare Dialog 即可并排显示两张:
.. list-table::
:header-rows: 1
:widths: 35 65
* - 操作
- 快捷键
* - 分割视图(任意两张并排)
- ``Shift + S``
* - 双页阅读(当前 + 下一张)
- ``Shift + D``
* - 双页阅读(从右到左,漫画用)
- ``Ctrl + Shift + D``
* - 返回先前模式
- ``Esc``
双页模式下方向键一次前进两张。RTL 变体会交换左右面板,让第 1 页显示在右侧。
多屏幕窗口
^^^^^^^^^^
按 ``Ctrl + Shift + M`` 会在副屏打开一个无边框的第二窗口,镜像显示主 viewer 当前的图片。
主窗口可以继续独立浏览——适合展览、双屏修图工作流、客户演示。再按一次 ``Ctrl + Shift + M`` 关闭,
或在第二窗口内按 ``Esc``。
----
整理图片
--------
评分与收藏
^^^^^^^^^^
在大图模式下,可以快速给图片打分:
.. list-table::
:header-rows: 1
:widths: 30 70
* - 操作
- 按键
* - 加入收藏 ❤
- ``0``
* - 评 1~5 星
- ``1`` ``2`` ``3`` ``4`` ``5``(再按一次取消)
颜色标签 (F1 -- F5)
^^^^^^^^^^^^^^^^^^^
独立于星级之外的 旗标式颜色 flag,适合快速分类(例如:红=删除候选、绿=精选、蓝=待修)。
.. list-table::
:header-rows: 1
:widths: 30 70
* - 操作
- 按键
* - 红 / 黄 / 绿 / 蓝 / 紫
- ``F1`` / ``F2`` / ``F3`` / ``F4`` / ``F5``(再按同一键清除)
* - 批量应用到选中
- 框选多张缩略图后按对应 F 键
* - 按颜色筛选
- ``筛选`` > ``按颜色标签`` > 选择颜色/任一色/无标签
状态栏会显示当前图片的颜色 chip;缩略图左边缘显示对应色条;**列表模式**有独立的「标签」与「星级」列可排序,星级列可直接点击设置 0 – 5 星。
书签
^^^^
把常用的图片加入书签,方便日后快速找到。
.. list-table::
:header-rows: 1
:widths: 30 70
* - 操作
- 方法
* - 加入/取消书签
- 大图模式下按 ``B``
* - 管理书签
- ``文件`` > ``书签``
标签与相册
^^^^^^^^^^
用标签和相册分类管理你的图片。
.. list-table::
:header-rows: 1
:widths: 30 70
* - 操作
- 方法
* - 打开管理界面
- 按 ``T`` 或 ``文件`` > ``标签与相册``
* - 给图片加标签
- 右键图片 > ``加入标签``
* - 加入相册
- 右键图片 > ``加入相册``
* - 按单一标签/相册筛选
- ``筛选`` > ``按标签`` / ``按相册``
* - 多标签过滤 (AND / OR)
- ``筛选`` > ``多标签过滤…`` — 勾选多个标签或相册,选择「任一 (OR)」或「全部 (AND)」
排序与筛选
^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 40 60
* - 功能
- 菜单位置
* - 按名称排序
- ``排序`` > ``按名称``
* - 按修改日期排序
- ``排序`` > ``按修改日期``
* - 按文件大小排序
- ``排序`` > ``按文件大小``
* - 按分辨率排序
- ``排序`` > ``按分辨率``
* - 升序/降序
- ``排序`` > ``升序`` / ``降序``
* - 按扩展名筛选
- ``筛选`` > ``JPEG`` / ``PNG`` / ``RAW`` 等
* - 按评分筛选
- ``筛选`` > ``按评分``
* - 按颜色标签筛选
- ``筛选`` > ``按颜色标签``(全部/任一色/无标签/红/黄/绿/蓝/紫)
* - 高级过滤
- ``筛选`` > ``高级过滤…`` — 分辨率范围、文件大小范围、方向(横/纵/正方)、修改日期区间
* - 清除筛选
- ``筛选`` > ``清除筛选``
浏览模式(缩略图格 / 列表)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
在缩略图格与可排序的详细列表之间切换:
- ``Ctrl + L`` — 切换 缩略图格 ↔ 列表
- 菜单:``缩略图大小`` > ``浏览模式`` > 缩略图格 / 列表
- 列表模式下任一列(包含「标签」)皆可排序;双击行或按 ``Enter`` 打开大图模式。
----
编辑图片(修改选项卡)
----------------------
切换到上方的 **"修改"** 选项卡,就能进入编辑模式。也可以在大图模式下按 ``E`` 或右键 > ``修改`` 进入。
::
┌────────┬──────────────────────┬────────────┐
│ 工具 │ │ 绘图属性 │
│ 栏 │ 画布(直接绘图) │ 调色、画笔 │
│ │ │ 曝光调整 │
└────────┴──────────────────────┴────────────┘
标注工具(左边)
^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 15 15 70
* - 工具
- 图标
- 说明
* - 选取
- ⬚
- 选取已画的标注,可拖拽移动
* - 矩形
- ▢
- 画矩形框
* - 椭圆
- ◯
- 画椭圆或圆形
* - 直线
- ╱
- 画直线
* - 箭头
- →
- 画箭头
* - 手绘
- ✎
- 自由手绘线条
* - 文字
- T
- 在图上加文字
* - 马赛克
- ▦
- 框选区域打马赛克
* - 模糊
- ◌
- 框选区域加模糊
.. tip::
在修改选项卡中按 ``←`` ``→`` 可以切换上一张/下一张图片。
画笔类型(右边)
^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 25 75
* - 画笔
- 效果
* - 钢笔
- 标准细线,最常用
* - 马克笔
- 较粗、半透明的笔触
* - 铅笔
- 细淡的线条
* - 荧光笔
- 宽大、高透明度,像真的荧光笔
* - 喷雾
- 喷点效果
* - 书法
- 粗细随笔画方向变化
* - 水彩
- 柔和晕染效果
* - 炭笔
- 粗糙质感笔触
* - 蜡笔
- 蜡质手感
绘图属性(右边)
^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 25 75
* - 属性
- 说明
* - 颜色
- 点击色块选择绘图颜色
* - 线宽
- 拖动滑杆调整笔触粗细(1~40)
* - 不透明度
- 调整透明度(0%~100%)
* - 字体
- 选择文字工具使用的字体
* - 字体大小
- 调整文字大小(6~200 px)
图像调整(右边下方)
^^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 25 75
* - 滑杆
- 功能
* - 曝光
- 调整整体亮度
* - 亮度
- 微调明暗
* - 对比度
- 调整明暗对比
* - 饱和度
- 调整色彩鲜艳程度
* - 白平衡 — 色温
- 冷暖偏移(蓝 ↔ 黄);适合混合光源或室内照片
* - 白平衡 — 色调
- 品红 / 绿偏移;修正日光灯偏色
* - 阴影
- 提亮或压暗暗部细节
* - 中间调
- 调整中间色调,不影响纯黑与纯白
* - 高光
- 救回过曝或进一步推亮
* - 鲜艳度 (Vibrance)
- 饱和度感知提升 — 保护肤色与已饱和色彩
这些调整是 **非破坏性** 的:每个滑杆均写入 per-image 的 Edit Recipe,随时可以按 ``重置`` 或
``Ctrl + Z`` 逐步还原。Recipe 在重启后保留,也可通过 XMP sidecar 导出 / 同步(见元数据章节)。
保存与撤销
^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 20 80
* - 按钮
- 说明
* - 保存
- 将标注和调整写入原始文件
* - 撤销
- 取消上一步操作
* - 重做
- 重做已撤销的操作
* - 重置
- 清除所有图像调整
----
绘图工作区(绘图标签)
----------------------
第三个顶层标签 — **绘图** — 是一个 本格的なラスター描画 风格的绘图工作区,支持多文档标签、
矢量与位图图层、漫画工具、动画帧,以及 PSD 导入/导出。从标签栏切换进入,或在
深度缩放模式下按 ``E`` 将当前图像直接送入新的绘图标签。
UX 体质升级:本格的なラスター描画 风格、会跟着 zoom 缩放的笔刷大小光标、每个工具独立
的光标图标、画布底层的透明格纹、拖放高亮覆盖、每个 tab 的"已修改"星号、
undo / redo toast 确认、状态栏的 autosave 状态段、启动时自动检测前次
会话的 autosave 并提示还原。
高级快捷键:``Tab`` 一键隐藏 / 恢复所有 docks 进入专注模式、``Ctrl+Tab``
切换标签、``,`` / ``.`` 循环笔刷种类、``0–9`` 数字键以 10 % 为单位设置
不透明度、``Alt+[`` / ``Alt+]`` 切换 active 图层、画布右键弹出 Undo /
Redo / Select All / Deselect / Fit / 100 % 快捷菜单。
颜色 dock 加入"透明 / 无颜色"槽(背景默认为透明),fill 与魔棒会尊重
alpha 边界,擦除后不再有残留 RGB 污染重画的软边。
::
+------+----------------------+----------------+
| 工具 | | 颜色 · 笔刷 |
| 栏 | 画布(绘图) | 图层 · 缩览 |
| | | 素材 · … |
+------+----------------------+----------------+
右侧停靠面板(颜色、笔刷、图层、缩览图、素材库、历史、色板、参考、直方图、动画)
全部并入同一列的标签组中,画布因此能保留完整可见高度。拖动任意 dock 标题可重
新排列或浮动,再通过 ``设置`` > ``工作区布局…`` 保存为命名版面。
工具栏(左侧)
^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 25 15 60
* - 工具
- 快捷键
- 用途
* - 笔刷
- ``B``
- 用当前笔刷类型绘画
* - 橡皮擦
- ``E``
- 对当前图层做透明度擦除
* - 油漆桶
- ``G``
- 容差 / 连续区域 / 取样所有图层 的填色
* - 吸管
- ``I``
- 从画布吸取前景色
* - 移动
- ``V``
- 平移当前图层或选区
* - 矩形 / 套索 / 魔棒 / 快速选择
- ``M`` / ``L`` / ``W``
- 选区工具,含 替换 / 添加 / 减去 / 相交 模式
* - 文字
- ``T``
- 内嵌文字编辑,可调字体 / 大小 / 粗体 / 斜体
* - 渐变
- ``U``
- 线性 / 径向 / 角度 / 菱形 渐变填色
* - 模糊 / 涂抹
- ``R``
- 局部像素操作
* - 钢笔(贝塞尔)
- ``P``
- 矢量路径,可编辑锚点 / 控制柄
* - 仿制图章
- ``S``
- Shift+点击设源点,点击盖章(含羽化)
* - 对话框
- ``Ctrl + B``
- 漫画对话气泡,自动生成指向尾巴
* - 矩形 / 椭圆 / 直线 / 多边形
- ``Shift + R/E/I/P``
- 矢量形状(含描边与填充)
* - 裁切
- ``C``
- 含长宽比预设的交互式裁切
* - 变换
- ``Ctrl + T``
- 自由 / 缩放 / 旋转 / 倾斜 变换控制
* - 抓手
- ``H``
- 拖动平移画布
* - 缩放
- ``Z``
- 点击放大,Alt+点击缩小
笔刷
^^^^
.. list-table::
:header-rows: 1
:widths: 25 75
* - 笔刷
- 效果
* - 钢笔
- 锐利的抗锯齿线条,日常使用
* - 马克笔 / 荧光笔
- 半透明宽笔触,可叠加堆积
* - 铅笔
- 细而带纹理的铅笔线
* - 喷雾
- 由密度与流量驱动的散落点
* - 书法
- 笔触宽度随方向变化
* - 水彩
- 湿边渲染与柔和混合
* - 炭笔 / 蜡笔
- 粗糙纹理笔触(含压力倾斜)
每种笔刷都在 **笔刷 dock** 与上方 **选项栏** 中提供 大小 / 不透明度 / 硬度 /
密度 / 混合模式 控制。``设置`` > ``压力曲线…`` 可重映射数位板压力到宽度或不
透明度;``编辑`` > ``捕获笔刷尖端…`` 可把选区转为自定义笔刷尖端。
图层
^^^^
**图层 dock** 提供缩略图、可见性切换、原地重命名、拖拽排序,以及当前层的混合
模式与不透明度。``图层`` 菜单还有:
- **新建 / 矢量 / 复制 / 向下合并**(``Ctrl + Shift + N`` / ``Ctrl + Shift + V`` /
``Ctrl + J`` / ``Ctrl + E``)
- **蒙版** — 添加蒙版 / 由选区生成 / 反相 / 应用 / 删除
(``Ctrl + Shift + M`` 添加;``Ctrl + Alt + Shift + M`` 由选区生成)
- **剪贴蒙版** — 将上方图层裁剪到当前 alpha(``Ctrl + Alt + G``)
- **图层效果** — 投影 / 外发光 / 描边;可清除全部效果
- **参考图层** — 将一个图层固定为吸管取色源
- **1-bit 图层** — 切换为线稿用的二值化图层
- **按颜色拆分图层** — 把平涂层拆成多层方便重填色
- **渐变映射** — 预设子菜单(怀旧 / 落日 / 蓝晒 …)
选区
^^^^
使用矩形 / 套索 / 魔棒 / 快速选择后,``编辑`` 菜单的 **描边选区…** 用当前
笔刷沿选区边缘绘制。``Q`` 切换 **快速蒙版模式** — 用任意笔刷以红色精修选区
边缘,再按 ``Q`` 转回选区。
动画
^^^^
**动画 dock** 把文档变成帧序列:
- ``添加帧`` 将当前图层状态存为一个关键帧。
- 点击缩略图跳到该帧。
- ``洋葱皮``(视图菜单)以低不透明度叠加相邻帧。
- 通过 **文件 > 导出页面** 导出(漫画阅读器用 CBZ;打印用 PDF),或
**动画导出** 输出 MP4 / GIF。
漫画菜单
^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 25 75
* - 动作
- 说明
* - 分镜切割
- ``Ctrl + Shift + P`` — 将画布按行 / 列 / 间距 / 边框 / 边距切成漫画格
* - 切换网点图层
- 把当前层转成网点(halftone)图层
* - 加盖页码
- 在多页文档上添加页码
* - 集中线
- 放射 / 平行 / 爆破 三种集中线生成器
* - 动作闪光
- 漫画风的爆裂 / 冲击闪光叠加
* - 对话框工具
- 拖出气泡,再放下指向说话者的尾巴
滤镜
^^^^
``滤镜`` 打开每个效果的实时预览对话框:
- **色阶** — 黑 / Gamma / 白 滑块(每通道)
- **曲线** — 可拖动节点(RGB / R / G / B),单调三次插值
- **色调分离** — 将颜色量化成 N 阶
- **阈值** — 按切点转为纯黑 / 白
- **自动色彩平衡** — 用灰色世界 / 白点算法消除色偏
- **胶片颗粒** — 可调尺寸与强度的亮度噪点
- **转为网点** — 报纸风的点状网点
视图辅助
^^^^^^^^
- **像素网格**(``Ctrl + Shift + '``)— 高倍率时显示一像素网格
- **吸附像素 / 边缘** — 将子像素位置锁到整数坐标
- **洋葱皮** — 动画相邻帧叠加
- **出血指示** — 印刷出血 / 安全区指示线
- **旋转画布**(``Ctrl + Shift + H``)— 不破坏像素的视角旋转
文件 I/O
^^^^^^^^
- **打开 PSD…**(``Ctrl + O``)与 **另存为 PSD…**(``Ctrl + S``)— Photoshop
图层往返,含蒙版、混合模式、图层效果
- **导出图像…** — 拼合并保存为 PNG / JPEG / WebP / BMP / TIFF
- **导出页面 → CBZ** / **→ PDF** — 多帧漫画文档导出
- **导入 / 导出笔刷预设**、**导入调色板** — 在不同安装间共享资源
- **自动保存快照** — 后台周期快照,可从文件菜单恢复最新版
工作区布局
^^^^^^^^^^
``设置`` > ``工作区布局…`` 把 dock 排列、工具选项状态、可见面板存为一个
名称,再用一键切换 — 例如 "绘画" 布局突出笔刷与颜色 dock,"合成" 布局展开
图层与历史 dock。
----
旋转与翻转
----------
.. list-table::
:header-rows: 1
:widths: 30 20 50
* - 操作
- 快捷键
- 菜单
* - 顺时针旋转 90°
- ``R``
- 右键 > 修改 > 顺时针旋转
* - 逆时针旋转 90°
- ``Shift + R``
- 右键 > 修改 > 逆时针旋转
* - 水平翻转
- --
- 右键 > 修改 > 水平翻转
* - 垂直翻转
- --
- 右键 > 修改 > 垂直翻转
* - 无损旋转(JPEG)
- --
- 右键 > 无损旋转
----
导出图片
--------
单张导出
^^^^^^^^
右键图片 > ``导出 / 另存为``
- 选择格式:PNG、JPEG、WebP、BMP、TIFF
- 调整质量(有损格式可调)
- 预览文件大小
- 选择保存位置
导出预设组合
^^^^^^^^^^^^
对于常见输出目标,``文件`` > ``以预设导出`` 可一键套用正确的缩放、格式与质量:
.. list-table::
:header-rows: 1
:widths: 20 80
* - 预设
- 流程
* - **Web 1600**
- 长边 1600 px、JPEG 质量 85、sRGB;适合博客 / 论坛上传。
* - **Print 300 dpi**
- 全分辨率 TIFF / 高质量 JPEG,附 300 dpi metadata 与色彩管理,送印专用。
* - **Instagram 1080**
- 方形(1080 × 1080)或竖式(1080 × 1350)裁剪,质量 90 JPEG。
预设可与下面的水印叠加搭配使用 — 启用水印后,所有预设导出都会自动附上。
水印叠加
^^^^^^^^
``文件`` > ``水印…`` 提供非破坏性叠加设置,仅在导出时应用,不会动到原始像素。
- **模式**:文字或图片。图片水印支持含 alpha 的 PNG。
- **位置**:9 格锚点(四角、四边、正中央)。
- **不透明度**:0 – 100 %。
- **缩放**:以导出长边百分比计算,会自动按预设尺寸缩放。
批量导出
^^^^^^^^
选取多张图片后,右键 > ``批量导出``
- 统一格式转换
- 设定最大宽度/高度(自动等比缩放)
- 质量控制
- 进度条实时显示
制作 GIF / 视频
^^^^^^^^^^^^^^^^
选取多张图片后,右键 > ``创建 GIF / 视频``
- 支持 GIF 和 MP4 格式
- 可拖拽排列顺序
- 设定每秒帧数(FPS)
- 自定义尺寸
- 循环播放选项
----
动画图片播放
------------
打开 GIF、APNG、动态 WebP 时,会自动播放动画。
.. list-table::
:header-rows: 1
:widths: 30 70
* - 按键
- 操作
* - ``空格键``
- 播放/暂停
* - ``,``
- 上一帧
* - ``.``
- 下一帧
* - ``]``
- 加速播放
* - ``[``
- 减速播放
----
图片比较
--------
在缩略图模式下框选 2~4 张图片,右键 > ``比较图片``。
对话框共有四个标签页:
.. list-table::
:header-rows: 1
:widths: 25 75
* - 标签页
- 用途
* - **并排**
- 同时显示 2 或 4 张图片,各自自适应缩放。
* - **叠加**
- 两张图以 α 滑块混合(0 → 只看 A、100 → 只看 B)。需选中 2 张。
* - **差异**
- 显示 ``|A − B|`` 的逐像素差异;增益滑块(0.10×–20×)可放大细微变化。
* - **A | B 分割**
- before / after 分割视图,可拖动垂直分割线扫动。适合展示 Develop 调整或导出差异。需选中 2 张。
尺寸不同时会自动以 Lanczos 将 B 重新采样为 A 的尺寸。超大图片内部会限制长边 ≤ 2048 px 以保持实时反应。
.. seealso::
若想直接在主窗口并排而不打开对话框,请见 **分割视图**(``Shift + S``)与
**双页阅读**(``Shift + D`` / ``Ctrl + Shift + D``)。
----
幻灯片
------
按 ``S`` 或右键 > ``幻灯片``,开始自动播放所有图片。
- 可调整每张停留时间
- 可开启淡入淡出效果
----
搜索图片
--------
按 ``Ctrl + F`` 或 ``/``,输入关键字即可搜索当前文件夹中的图片名称。
搜索支持 **模糊匹配**(前缀 > 子串 > 子序列 三级排名)与 **子串高亮**。
按 ``Enter`` 或双击结果跳至对应图片。
若想按 **编号** 跳转,改按 ``Ctrl + G`` 打开跳页对话框。
----
复制与粘贴
----------
.. list-table::
:header-rows: 1
:widths: 40 60
* - 操作
- 方法
* - 复制图片到剪贴板
- 大图模式下按 ``Ctrl + C``
* - 粘贴剪贴板图片
- ``文件`` > ``从剪贴板粘贴``,或按 ``Ctrl + V``
* - 自动监控剪贴板
- ``文件`` > ``自动标注剪贴板图片`` 打勾
.. note::
自动监控功能开启后,每当剪贴板出现新图片(例如用截图工具),就会自动打开标注编辑。
----
删除图片
--------
.. list-table::
:header-rows: 1
:widths: 40 60
* - 操作
- 方法
* - 删除当前图片
- 按 ``Delete`` 键
* - 删除选取的多张图片
- 框选后按 ``Delete`` 或右键 > ``删除选取``
图片会移到系统回收站,可以从那边恢复。
----
批量操作
--------
在缩略图模式下框选多张图片后,右键可以进行:
.. list-table::
:header-rows: 1
:widths: 30 70
* - 功能
- 说明
* - 批量重命名
- 使用模板 ``{name}`` ``{n}`` ``{ext}`` 自动命名
* - 移动/复制
- 把图片移动或复制到其他文件夹
* - 全部旋转
- 一次旋转所有选取的图片
* - 批量导出
- 统一转换格式和大小
* - 加入标签
- 给所有选取的图片加上同一个标签
* - 加入相册
- 把所有选取的图片放进相册
----
RGB 直方图
----------
在大图模式下按 ``H``,会在画面上显示 RGB 直方图,方便判断曝光状况。再按一次隐藏。
----
设为壁纸
--------
大图模式下右键 > ``设为壁纸``,一键将当前图片设为系统壁纸。
支持 Windows、macOS、Linux(GNOME)。
----
多窗口
------
``文件`` > ``新建窗口``,可以同时打开多个 Imervue 窗口,各自独立浏览不同文件夹。
触控板手势
----------
.. list-table::
:header-rows: 1
:widths: 30 70
* - 手势
- 动作
* - 捏合
- 在大图模式放大/缩小(以捏合中心为锚点)
* - 水平滑动
- 上一张 / 下一张图片
----
Windows 文件关联
-----------------
让你在资源管理器中直接用 Imervue 打开图片:
1. ``文件`` > ``文件关联`` > ``注册 Open with Imervue``
2. 需要系统管理员权限
3. 之后右键任意图片就能看到 ``Open with Imervue`` 选项
如果要移除:``文件`` > ``文件关联`` > ``移除文件关联``
----
插件系统
--------
Imervue 支持插件扩展功能。
.. list-table::
:header-rows: 1
:widths: 35 65
* - 操作
- 菜单位置
* - 查看已安装插件
- ``插件`` > ``管理插件``
* - 下载新插件
- ``插件`` > ``下载插件``
* - 打开插件文件夹
- ``插件`` > ``打开插件文件夹``
* - 重新加载
- ``插件`` > ``重新加载插件``
----
语言切换
--------
``语言`` 菜单可以切换界面语言:
- English
- 繁体中文
- 简体中文
- 한국어
- 日本語
切换后需要重新启动才会生效。
----
所有快捷键一览
--------------
浏览
^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 按键
- 功能
* - ``←`` / ``→``
- 上一张/下一张图片
* - 方向键
- 缩略图模式下平移画面
* - ``Shift + 方向键``
- 微调平移
* - ``Ctrl + Shift + ←`` / ``→``
- 跨文件夹跳至前/下一个含图片的同级文件夹
* - ``Alt + ←`` / ``Alt + →``
- 浏览历史 返回 / 前进(类似浏览器)
* - ``Ctrl + G``
- 按编号跳至图片
* - ``X``
- 随机跳一张
* - 鼠标滚轮 / 捏合
- 放大缩小
* - 水平滑动
- 上/下一张图片
* - 鼠标中键拖拽
- 平移画面
* - ``F``
- 全屏
* - ``Shift + Tab``
- 剧场模式(隐藏所有外壳)
* - ``Ctrl + L``
- 切换 缩略图格 ↔ 列表(详细)
* - ``Shift + S``
- 分割视图(两张并排)
* - ``Shift + D`` / ``Ctrl + Shift + D``
- 双页阅读 / 从右到左(漫画)
* - ``Ctrl + Shift + M``
- 副屏镜像窗口
* - ``Esc``
- 回到缩略图模式/退出全屏/关闭双图或列表模式
* - ``W``
- 适应宽度
* - ``Shift + W``
- 适应高度
* - ``Home``
- 重置缩放
编辑
^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 按键
- 功能
* - ``E``
- 进入修改选项卡
* - ``R``
- 顺时针旋转
* - ``Shift + R``
- 逆时针旋转
* - ``Ctrl + Z``
- 撤销
* - ``Ctrl + Shift + Z``
- 重做
* - ``Delete``
- 删除图片
整理
^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 按键
- 功能
* - ``0``
- 加入/取消收藏
* - ``1`` ~ ``5``
- 评分(再按取消)
* - ``F1`` ~ ``F5``
- 颜色标签:红/黄/绿/蓝/紫(再按清除)
* - ``P``
- 分拣:Pick(标为保留)
* - ``Shift + X``
- 分拣:Reject(标为淘汰)
* - ``U``
- 分拣:取消标记
* - ``B``
- 加入/取消书签
* - ``T``
- 标签与相册管理
工具与叠加层
^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 按键
- 功能
* - ``Ctrl + F`` / ``/``
- 模糊搜索(子串高亮)
* - ``Ctrl + C``
- 复制图片到剪贴板
* - ``Ctrl + V``
- 从剪贴板粘贴
* - ``H``
- RGB 直方图
* - ``F8`` / ``Ctrl + F8``
- OSD 信息 / Debug HUD(显存、缓存、线程)
* - ``Shift + P``
- 像素查看(≥ 400 % 显示网格与光标下 RGB 值)
* - ``Shift + M``
- 循环色彩模式(正常/灰阶/反相/怀旧)
* - ``S``
- 幻灯片
动画播放
^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 按键
- 功能
* - ``空格键``
- 播放/暂停
* - ``,``
- 上一帧
* - ``.``
- 下一帧
* - ``[``
- 减速
* - ``]``
- 加速
图库与元数据管理
----------------
Imervue 会在 ``%LOCALAPPDATA%/Imervue/library.db``(Windows)或
``~/.cache/imervue/library.db``(POSIX)维护 SQLite 索引,用于跨文件夹搜索、
分层标签、智能相册、感知哈希、笔记与分拣旗标。以下功能多数位于
``Extra Tools``(额外功能)菜单。为方便查找,该菜单按功能分为八个子菜单:
``Batch``(批量)、``Library & Metadata``(图库与元数据)、
``Views``(视图)、``Workflow``(工作流程)、``Export``(导出)、
``Develop (Non-Destructive)``(调整)、``Retouch & Transform``(修复与变形)、
``Multi-Image``(多张合成),以下路径均以
``Extra Tools`` > ``<子菜单>`` > ``<工具>`` 的形式呈现。
图库搜索
^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``Library Search`` 支持添加多个**根目录**并在后台建立索引,
之后可按扩展名、最小宽高、文件大小或文件名片段查询,并将结果作为虚拟
相册载入查看器。
智能相册
^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``Smart Albums`` 以友好名称保存一组过滤规则(扩展名、最小
尺寸、颜色标签、评分、收藏、分拣状态、分层标签、文件名片段),再次应用
时会按规则过滤当前文件夹。
相似图片搜索
^^^^^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``Find Similar Images`` 会对当前深度缩放(或第一张选中)
的图片计算 64 位 DCT pHash,并按汉明距离由近到远列出索引中的近似图,可
通过 Max distance 调节宽严。
自动标记
^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``Auto-Tag Images`` 将启发式标签归入 ``auto/...``
(``photo`` / ``document`` / ``screenshot`` / ``landscape`` /
``portrait``);若安装了 ``onnxruntime`` 且 ``models/clip_vit_b32.onnx``
存在,则额外添加 CLIP 内容标签。在工作线程中运行,带实时进度条。
分层标签
^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``Hierarchical Tags`` 管理树状标签(如
``animal/cat/british``)。选择节点即显示该节点与全部子节点下的图片;可一
键为所选图片添加或移除标签。与右键菜单的扁平标签并行。
Token 批量重命名
^^^^^^^^^^^^^^^^
``Extra Tools`` > ``Batch`` > ``Token Batch Rename`` 提供实时预览,输入
``{date:yyyymmdd}_{camera}_{counter:04}{ext}`` 等模板后立即显示每个文件的
新名称;冲突会被高亮。支持 tokens:``{name} {ext} {counter[:NN]}
{date[:fmt]} {width} {height} {wxh} {size_kb} {camera} {year} {month} {day}
{hour} {minute}``。
元数据导出
^^^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``Export Metadata (CSV / JSON)`` 会为当前视图中的每张图
片输出一行,包含 EXIF、尺寸、颜色标签、评分、收藏、分层标签、分拣状态
与笔记。方便接入电子表格或外部流程。
XMP Sidecar(other XMP-aware photo managers 互通)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Imervue 支持读写 Adobe XMP sidecar 文件(``photo.jpg`` ↔ ``photo.xmp``),
让星级、标题、描述、关键字与颜色标签可与 other XMP-aware photo managers、other XMP-aware photo managers、Bridge
等 XMP 感知工具双向同步。
- **为当前图片导入 XMP** — 从 sidecar 读取星级 / 标题 / 关键字 / 颜色标签
写入内部数据库。
- **为当前图片导出 XMP** — 将当前星级 / 标题 / 关键字 / 颜色标签写入
图片旁的 sidecar 文件。
- **批量导入 / 导出** — 将同样操作应用至当前选择或整个文件夹。
XML 解析通过 ``defusedxml`` 进行,避免 XXE / billion-laughs 等攻击。
若未安装 ``defusedxml``,XMP 菜单项会自动隐藏,也不会写出 sidecar。
**EXIF 侧边栏** 亦提供可点击的 **星级快速条** — 设置的星级即为 XMP 导出的值。
分拣(Pick / Reject)
^^^^^^^^^^^^^^^^^^^^^
旗标式的三态旗标。``P`` 将当前或选中的所有 tile 标为 Pick;
``Shift + X`` 标为 Reject;``U`` 取消。``Filter`` > ``By Cull State`` 可只
显示某种状态;``Extra Tools`` > ``Workflow`` > ``Culling`` 提供对话框并带有
**Delete all rejects** 按钮,可从磁盘永久删除被淘汰文件。
暂存篮
^^^^^^
``Extra Tools`` > ``Workflow`` > ``Staging Tray`` 是跨文件夹的暂存篮。任意 tile 可加入篮中
(重启后保留),再一键将整篮移动或复制到目标文件夹。适合从多次拍摄中
汇总出精选再导出。
双窗格文件管理
^^^^^^^^^^^^^^
``Extra Tools`` > ``Workflow`` > ``Dual-Pane File Manager`` 提供 双窗格的双
树视图,可在两侧文件夹之间直接移动或复制选中项。
时间轴视图
^^^^^^^^^^
``Extra Tools`` > ``Views`` > ``Timeline View`` 按「日/月/年」分组当前图片集(Google
Photos 风格)。日期优先取 EXIF ``DateTimeOriginal``,否则使用文件修改时间。
双击图片可进入深度缩放。
拖拽至外部应用
^^^^^^^^^^^^^^
从**已选中** tile 按住拖拽,即可将文件丢入资源管理器、Chrome、Discord 等
支持 file URL 的应用;拖拽预览为 tile 缩略图。
单张图片笔记
^^^^^^^^^^^^
EXIF 侧栏包含 **Notes** 文本框,输入内容会经短暂去抖后自动写入索引;笔记
按图片路径保存,重新扫描也能保留。
----
高级 Develop 与合成
-------------------
色调曲线(Tone Curve)
^^^^^^^^^^^^^^^^^^^^^^
``Extra Tools`` > ``Develop (Non-Destructive)`` > ``Tone Curve`` 打开可拖拽控制点的曲线编辑器,提供 RGB、
R、G、B 四条通道。点击空白处新增控制点、拖拽移动、右键删除。点之间
以单调三次(monotone cubic)插值,曲线存在 recipe 中渲染时非破坏性生效。
应用 .cube LUT
^^^^^^^^^^^^^^
``Extra Tools`` > ``Develop (Non-Destructive)`` > ``Apply .cube LUT`` 可载入任意 Adobe ``.cube`` 文件
(1D / 3D,最高 64³)。LUT 以 ``lru_cache`` 按路径 + mtime 缓存,使用
三线性插值并通过强度滑块与原图混合,LUT 路径与强度存入 recipe。
虚拟副本(Virtual Copies)
^^^^^^^^^^^^^^^^^^^^^^^^^^
``Extra Tools`` > ``Workflow`` > ``Virtual Copies`` 为同一张图创建多组命名 recipe
快照。保存当前编辑后继续实验,之后随时切回任一版本;副本与主
recipe 同存,重置主 recipe 也不会消失。
HDR 合成
^^^^^^^^
``Extra Tools`` > ``Multi-Image`` > ``HDR Merge`` 使用 OpenCV Mertens 曝光融合合并
多张不同曝光。可勾选 Align 先以 ``cv2.AlignMTB`` 对齐,输出写到
指定路径,不影响源文件。
全景拼接
^^^^^^^^
``Extra Tools`` > ``Multi-Image`` > ``Panorama Stitch`` 使用 OpenCV ``Stitcher`` 拼接
重叠影像,风景 / 城市用 **Panorama** 模式,平面文档用 **Scans**
模式,可自动裁掉黑边。
景深合成(Focus Stacking)
^^^^^^^^^^^^^^^^^^^^^^^^^^
``Extra Tools`` > ``Multi-Image`` > ``Focus Stacking`` 融合不同对焦距离的多张图像,
以 Laplacian 方差选取每像素最清晰的来源,并用高斯平滑避免接缝。
默认启用 ECC 对齐以补手持位移。
修复画笔
^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Healing Brush`` 在最大 720 px 长边的预览中显示当前
图像。左键添加圆形修复区,右键移除,半径滑块控制新区域大小。应用
时使用 OpenCV inpainting(Telea 快 / Navier-Stokes 平滑),输出为
新文件。
镜头校正
^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Lens Correction`` 提供四个纯 numpy 滑块:径向
畸变 ``k1``(桶形 / 枕形)、暗角补偿,以及红 / 蓝通道色差径向缩放。
因尺寸可能改变,结果输出为新文件而非写入 recipe。
地图视图
^^^^^^^^
``Extra Tools`` > ``Views`` > ``Map View`` 通过 Leaflet + OpenStreetMap(需
``PySide6.QtWebEngineWidgets``)显示所有含 GPS 的照片;未安装
WebEngine 时降级为坐标列表。
日历视图
^^^^^^^^
``Extra Tools`` > ``Views`` > ``Calendar View`` 用 ``QCalendarWidget`` 高亮有
照片的日期(依序 EXIF ``DateTimeOriginal`` → ``DateTimeDigitized``
→ 文件 mtime)。选中日期列出当日照片,双击在主视图中打开。
人脸检测
^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Face Detection`` 使用 OpenCV Haar 正脸分类器检测
脸部并以矩形标注。在列表双击输入姓名,保存后写入 recipe 的
``extra['face_tags']``。此为经典算法,适合「找出脸的位置」,并
非现代 CNN 识别的替代。
局部调整蒙版
^^^^^^^^^^^^
``Extra Tools`` > ``Develop (Non-Destructive)`` > ``Local Adjustment Masks`` 支持画笔 / 放射 / 线性
渐变三种蒙版。每个蒙版都有独立的曝光、亮度、对比、饱和度、色温、
色调 delta 和羽化滑块,保存到 ``recipe.extra['masks']``,以非破坏
方式在加载时混合到原图。
色调分离
^^^^^^^^
``Extra Tools`` > ``Develop (Non-Destructive)`` > ``Split Toning`` 对阴影和高光分别应用不同色相与
饱和度,并通过平衡枢纽决定边界。保存在 ``recipe.extra`` 中,并在
develop pipeline 的 tone curve 之后应用。
仿制图章
^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Clone Stamp`` 以羽化方式把源区块复制到目标,
是修复画笔的硬边版本。Shift+点击设定源点,单击盖章,右键撤销。
结果输出为新文件,不会影响原图。
裁剪 / 拉直
^^^^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Crop / Straighten`` 结合 0..1 归一化裁剪矩形和
任意角度拉直。输出会自动裁剪到最大内接矩形,旋转后不会产生黑边。
自动拉直
^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Auto-Straighten`` 通过 Hough line 检测主要的地
平线或垂直线,给出建议旋转角度。应用前可以手动微调。
降噪 / 锐化
^^^^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Noise Reduction / Sharpening`` 先用边缘保留的
bilateral 降噪,再用 unsharp mask 锐化。「仅亮度通道」会保留色噪,
但能压平明度噪声而不糊掉色彩边缘。
天空 / 背景
^^^^^^^^^^^
``Extra Tools`` > ``Retouch & Transform`` > ``Sky / Background`` 把检测到的天空替换成渐变,
或直接把背景去除成透明 / 白底。安装 ``rembg`` (U²-Net) 时会自动
启用神经网络前景分割。
屏幕校样
^^^^^^^^
``Extra Tools`` > ``Develop (Non-Destructive)`` > ``Soft Proof`` 加载 ICC 描述文件,将图像转入目标
色域再转回,并用洋红显示往返过程中被裁切的像素 — 打印前的快速
色域检查。
GPS 地理标记
^^^^^^^^^^^^
``Extra Tools`` > ``Library & Metadata`` > ``GPS Geotag`` 读取已有的 EXIF GPS 坐标并允许
编辑或设定新的十进制度数。需要安装 ``piexif``;直接写入 JPEG 文件。
打印排版
^^^^^^^^
``Extra Tools`` > ``Export`` > ``Print Layout`` 把多张图片排版为多页 PDF,可设
定页面大小、方向、网格、边距、间隔与裁切标记。需要 ``reportlab``。
----
Puppet 工作区(Puppet 标签)
----------------------------
第四个顶层标签 — **Puppet** — 是从零打造的 2D 绑骨偶动画系统。功能对标 Live2D(网格变形绑骨、参数、动作、物理、表情、姿势组、对嘴、摄像头追踪),但**不依赖任何专利 SDK**、**不使用** ``live2d-py``,采用完全开放的 ``.puppet`` 文件格式。
.. note::
端到端教程 — 从全新安装到 OBS 直播或产出 MP4 — 在仓库根目录的
``puppet_guide.zh-CN.md``(英文版 ``puppet_guide.md``、繁体中文版 ``puppet_guide.zh-TW.md``)。
本章是参考手册;那份是逐步走读。
端到端流程
^^^^^^^^^^
1. **导入 PNG** — 工具栏 ``Import PNG…`` 跑 ``puppet.auto_mesh.puppet_from_png``:依 alpha 三角化、单一 drawable、可立即渲染。
2. **加变形器** — ``Add Rotation Deformer``(锚点 + 角度)或 ``Add Warp Deformer``(rows × cols Bezier lattice;边界外顶点直通)。
3. **加参数** — ``Add Parameter`` 在右侧 **Parameters** 停靠栏加滑块(自动命名 ``Param1``、``Param2`` …)。
4. **设 keys** — 拖滑块到极端值、编辑 deformer form、按 **Set key**。对中立值跟另一端重复。Runtime 接着会在滑块移动时于相邻 keys 之间 lerp 各字段。
5. **保存** — ``Save As…`` 把 rig + 纹理 + 动作 + 表情 + 物理写成单一 ``.puppet`` zip,可分享或之后用 ``Open Puppet…`` 重开。
示例
^^^^
仓库内附完整 rig:``examples/puppet/march_7th.puppet`` — 307-drawable 的 Cubism Live2D 角色,仓库内转换好。纹理跟每参数顶点 morph 全烘进 ``.puppet`` zip,使用默认 ``requirements.txt`` 就能开,无需散布 Cubism SDK。
该 rig 带 203 个 Cubism 标准参数(``ParamAngleX/Y/Z``、``ParamEyeLOpen/ROpen``、``ParamBreath``、``ParamMouthOpenY`` …),所以所有标准输入驱动(摄像头、眨眼、对嘴、光标追踪)不用调整就能驱动。内置 18 个循环动作 — 作者转换的 Cubism idle 循环,加上 ``Idle`` 组和 ``Gesture`` 组的参考手势。
Puppet 标签工具栏 → **Examples ▾** 下拉直接选 March 7Th 或自己的 ``.puppet`` 打开。下方 **Motions** 停靠栏点任一个动作即播。
**执行内置示例 — 分步演示:**
1. **启动 Imervue**。源码运行:``python -m Imervue``;安装版:直接执行 ``Imervue`` 可执行文件 / app bundle。``examples/`` 目录已打包进 wheel 与 Nuitka EXE,rig 文件位于安装目录下。
2. 点窗口顶部的 **Puppet** 标签。
3. 工具栏 → **File > Examples > March 7Th**(或工具栏上的 **Examples ▾** 下拉)。307-drawable 的 rig 居中载入,参数栏填满 203 个 Cubism 标准参数滑块。
4. 在底部 **Motions** 停靠栏单击任一个动作条目(``zhaiyan``、``zhaoxiang``、``idle_breath``、``tap_head`` …)。立即开始播放;再点一次停止,或选别的动作交叉淡入。
5. 切换工具栏上的实时输入 toggle 让 rig 跟你动 — **Drag-track head**(头跟光标)、**Auto-blink**(自动眨眼)、**Auto idle** + **Idle motions**(呼吸 + 随机 idle 动作)、**Mic lip-sync**(麦克风 RMS 带动嘴型)、**Webcam tracking**(MediaPipe FaceLandmarker 驱动头 / 眼 / 嘴)。
6. 工具栏 **Reset to rest** 停掉所有动作、取消勾所有实时驱动、清掉 expressions / pose 覆盖,所有参数复位 — 标准的「从头开始」按钮。
7. 之后要打开别的 rig:**File > Open Puppet…** 从磁盘挑任何 ``.puppet`` zip;**File > Examples ▾** 始终连到内置清单。
OBS 直播整合
^^^^^^^^^^^^
两条输出,都把角色独立渲染到 off-screen framebuffer(不含棋盘格背景与编辑器外壳)再送到推流端。输出长边上限 1080 px,避免 Cubism 原生画布(March 7th 是 3503×7777)被 DirectShow 虚拟摄像头驱动拒绝。
**A. Virtual Camera** — 在 OBS"视频捕获设备"源列表里以 webcam 形式出现。``pip install pyvirtualcam`` 加上平台驱动:OBS Studio 26+(Windows/macOS)会附 *OBS Virtual Camera* 驱动,第一次打开 OBS 点 *Start Virtual Camera* 注册;Linux 用 ``v4l2loopback-dkms`` + ``modprobe v4l2loopback exclusive_caps=1 card_label="Imervue"``。工具栏 **Output > Virtual camera** 开始推流。
DirectShow / AVFoundation / v4l2loopback 都**只有 RGB、没有 alpha 通道**,所以 Imervue 在角色以外的区域填**洋红色 `#FF00FF`** 当色键。OBS 端去背:
1. 视频捕获设备源右键 → **Filters**
2. **Effect Filters > + > Color Key**
3. 设置 **Key Color Type** = ``Custom Color``、**Custom Color** = HEX ``FF00FF``、**Similarity** = ``80–300``、**Smoothness** = ``30–50``
滤镜跟着源走,下次启用虚拟摄像头自动套用。
**B. NDI 输出** — LAN 上 < 50 ms 延迟、原生 RGBA,OBS / vMix 可以直接把角色叠到自己的场景上、不用色键。``pip install ndi-python``,加上 `NDI Tools `_ runtime 与 `obs-ndi `_ 插件。工具栏 **Output > NDI output** 开始广播(默认源名 *Imervue Puppet*)。
``ndi-python`` 只 ship source distribution、pip 拿到后从 C++ 编。Windows 需要 Visual Studio Build Tools 2022(含 C++ 工作负载)、CMake 加到 PATH、NDI SDK(从 取得,跟 NDI Tools 不同)装在默认位置、环境变量 ``NDI_SDK_DIR`` 指向 SDK。
详细逐步与疑难排解见 ``puppet_guide.zh-CN.md`` § 1.2。
录制自定义动作
^^^^^^^^^^^^^^
不想手动编 keyframe?用实时 take 录:
1. 工具栏 **Record motion** 打勾,会弹出命名对话框。
2. 录制时拖滑块、开 **Webcam tracking**、让物理跑 — 任何会写参数值的事情都可以。
3. **Record motion** 取消勾 — 录制器把 30 Hz 串流烘焙成一个 ``Motion``:每个真的有变动的参数一条 linear-segment 轨(没变动的丢掉)。新动作立刻出现在底部 **Motions** 停靠栏。
存进 ``.puppet`` 的方式跟手写 keys 的动作完全相同。
工具栏参考
^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 30 70
* - 动作
- 用途
* - Open Puppet… / Examples ▾
- 从磁盘加载 ``.puppet``,或从工具栏直接挑 ``examples/puppet/`` 下内置的 rig
* - Import PNG… / Import PSD… / Import Cubism…
- PNG 自动 mesh、PSD 分层拆 drawable、Cubism rig sample-and-reconstruct。Cubism 文件选择器同时接受 ``.moc3`` 和 ``.model3.json``;工作区还没开 rig 时两条路径都跑完整 ``.moc3 → .puppet`` 转换(SDK 用户自备)。已经开了 rig 时选 ``.model3.json`` 会把 JSON 部分(motions / expressions / physics)叠加到既有文档
* - Save As…
- 把当前 rig 写成 ``.puppet`` zip
* - Add Rotation Deformer / Add Warp Deformer / Add Parameter
- 从工具栏 author rig
* - Drag-track head
- 光标偏移 → ``ParamAngleX`` / ``ParamAngleY`` + ``ParamEyeBallX`` / ``ParamEyeBallY``
* - Auto-blink
- ``ParamEyeLOpen`` / ``ParamEyeROpen`` 上的 cosine close→open,每 ~4.5 秒一次(force-write 路径绕过 canvas 的 no-change-skip,避免被其他 driver 卡住)
* - Mic lip-sync
- 麦克风 RMS → ``ParamMouthOpenY``(需 ``sounddevice``)
* - Webcam tracking
- MediaPipe Tasks API FaceLandmarker → 头部 yaw / pitch / roll + 眼 + 嘴(需 ``opencv-python`` + ``mediapipe``;打开实时预览 dialog 显示检测到的 landmark)
* - Auto idle / Idle motions
- 标准参数上的呼吸 + 漂移,加上 Idle 组动作的随机循环
* - Edit mesh
- 拖曳 canvas 上的顶点微调 mesh
* - Record motion
- 把参数变化录成新的 ``Motion`` 加进文档 — take 烘焙、不用手动 author keys
* - Capture frame… / Record… / Export all motions…
- 存单张 PNG、开关 GIF / WebM / MP4 录制、或批量把每个动作各别 render 成文件(全部用跟推流相同的角色独立 off-screen render)
* - Output > Virtual camera / NDI output
- 直播输出 — 见上面的"OBS 直播整合"
* - Reset to rest
- Motion player 直接停、所有 live driver 取消勾、清空 expressions / pose groups、参数复位
* - Fit to Window
- Canvas 上重新居中 + 缩放 rig
可选依赖
^^^^^^^^
* ``sounddevice`` — 麦克风对嘴
* ``opencv-python`` + ``mediapipe`` — 摄像头脸部追踪
* ``imageio-ffmpeg`` — MP4 / WebM 录制(已随幻灯片视频功能附带)
* ``pyvirtualcam`` — 虚拟摄像头输出(见"OBS 直播整合")
* ``ndi-python`` — NDI 输出(见"OBS 直播整合")
* 用户自备 Cubism Native SDK DLL — ``.moc3 → .puppet`` 转换(Live2D Free Material License 禁止散布;放在 ``/sdk/`` 或设 ``CUBISM_CORE_DLL`` 环境变量)
任何缺失都会优雅停用 — 对应工具栏 toggle 会自动弹回去并提示安装。**File > Install dependencies…** 可一次装齐所有 Python 可选包。
----
桌宠工作区(Desktop Pet 标签)
------------------------------
第五个标签 — **Desktop Pet**(桌宠) — 把任意 ``.puppet``
角色作为无边框、透明的浮层显示在桌面上。标签本身是控制面板;
真正的角色是一个独立的顶层窗口,与 Puppet 运行时共享全部能力
(动作、表情、物理、闲置驱动、麦克风 / 摄像头输入)。桌宠可以
响应点击、播放定时驱动的动画、跟随光标、在其它应用全屏时自动
隐藏,还能朗读你在 JSON 文件里写的台词。
本章是该标签的完整参考。组织结构如下:
#. **快速上手** — 从"刚打开 Imervue"到"桌面上出现一只桌宠"
的五步路径。
#. **加载角色** — 文件选择器、内置示例、跨启动恢复。
#. **浮层窗口** — 所有窗口层级行为(拖曳移动、贴边吸附、穿透
点击、锚点锁定、永远置底、全屏时隐藏、隐藏时暂停、透明度、
尺寸、多显示器恢复)。
#. **交互模型** — 左键命中区域、完整右键菜单、系统托盘。
#. **实时驱动** — 六个可选的输入驱动及其可选依赖。
#. **Pet script(桌宠脚本)** — 用 JSON 文件替换桌宠的"嗓音"、
排定提醒、为每个命中区域 / 每个动作绑定回应。
#. **持久化** — 跨启动会被记住的字段及完整设置 schema。
#. **创作新桌宠** — 指向 Puppet 标签与 ``.puppet`` 文件格式。
#. **疑难排查** — 常见意外和应对方式。
快速上手
^^^^^^^^
1. 切到 **Desktop Pet**(桌宠)标签。
2. 点击 **Load bundled March 7th**(载入内置 March 7th)使用
内置角色,或 **Open Puppet…**(打开 Puppet 文件…)选择自己
的 ``.puppet`` 文件。
3. 浮层会出现在桌面上,**Show pet on desktop**(在桌面显示
桌宠)勾选框会被自动勾上。(如果想在不关闭 Imervue 的情况下
隐藏桌宠,取消勾选或用系统托盘图标即可。)
4. 把角色拖到喜欢的位置。在屏幕边缘附近松开会贴边吸附。
5. 在标签页或桌宠的右键菜单里勾选想用的 **Live drivers**
(实时驱动) — 闲置呼吸、眨眼、跟随光标、麦克风口型同步、
摄像头追踪。
你设的所有项都会在下次启动时保留,所以第 5 步对每个角色 / 人设
只需做一次。
加载角色
^^^^^^^^
标签提供三种加载方式:
* **Open Puppet…**(打开 Puppet 文件…) — 从磁盘选择任意
``.puppet`` 文件。
* **Load bundled March 7th**(载入内置 March 7th) — 打开内置
的 ``examples/puppet/march_7th.puppet``。解析器先查
``examples_dir()``(对打包的 Nuitka / pip 安装版本是
frozen-safe 的),再回退到相对仓库根目录的查找,所以两种运行
方式下按钮都能正常工作。
* **Last rig**(上一个角色) — 上次加载的角色会在 Imervue 启动
时从设置字段 ``last_rig_path`` 自动恢复;Desktop Pet 标签会
不可见地重新实例化浮层,让桌宠只差一次点击就回到你离开时
的状态。
加载成功会自动勾上 **Show pet on desktop**,桌宠立刻出现。
失败路径会让勾选框保持原状,并把错误写到标签的状态栏。
浮层窗口
^^^^^^^^
角色生活在与 Imervue 主窗口分离的顶层窗口里。该窗口无边框、
不在任务栏出现,默认置于其它所有窗口之上。
.. list-table:: 窗口行为
:header-rows: 1
:widths: 28 72
* - 行为
- 说明
* - 无边框浮层
- 没有窗口边框,也没有最小化 / 关闭按钮,更不在任务栏
出现。整个可见区域就是角色本身。
* - 透明背景
- 角色没遮住的地方完全透明。背后的桌面 / 应用会像素级
精准地透出。
* - 拖曳移动
- 在身体上左键按下、拖动、松开。鼠标移动小于 6 像素时才
会被识别为点击 — 移动更远就变成移动手势,不会触发点击
处理器。
* - 贴边吸附
- 在屏幕边缘附近(默认 24 px 以内)松开,桌宠会"咔"地
贴上去。阈值可在 0(关闭)到 200(很黏)之间配置。
两个轴独立判断,所以拖到角落时会同时贴上两条边。
* - 越界回拉
- 拖到屏幕边缘外松开会被钳回屏幕内。桌宠不会被甩到你
够不到的地方。
* - 穿透点击模式
- 开启后所有鼠标事件都会穿过桌宠传给背后的窗口。角色
仍然可见,但无法被拖、无法右键、也无法用来触发动作。
桌宠纯做装饰时打开它。
* - 锁定位置
- 在不影响穿透点击的前提下禁用拖曳。当你把桌宠放到精确
位置后不希望被误拖时使用。
* - 永远置底
- 把桌宠从永远置顶翻成永远置底。它会像桌面挂件一样躺在
所有窗口之后。同时取消接受焦点的标志,所以点击桌宠
不会把它顶到前面。
* - 全屏时隐藏
- 一个 1 Hz 的后台轮询监视桌宠所在显示器的前台窗口。当
该窗口覆盖屏幕的 ≥ 99 %、每边容差 ≤ 4 px(同时覆盖
真正全屏与无边框窗口化的游戏)时,桌宠会自动隐藏。
全屏结束后,桌宠会在原位置重新出现。检测器在 Windows
上使用 Win32 ``GetWindowRect`` API;在 macOS / Linux
上会优雅地 no-op(桌宠保持可见)。
* - 隐藏时暂停
- 在 ``hideEvent`` 时 ~30 FPS 的绘制 tick 和 1 Hz 的
脚本 tick 都会停下,所以隐藏中的桌宠零 CPU 占用。下次
``showEvent`` 会重新启动。
* - 尺寸预设
- 小(200 × 300)、中(320 × 480)、大(480 × 720)。
桌宠围绕当前中心点缩放,所以改尺寸时不会跑位。缩放
后会重新跑一次吸附。
* - 透明度滑块
- 10 – 100 %。作用在窗口级(通过 ``setWindowOpacity``),
所以是整个桌宠淡出,而不仅是贴图。最低 10 % 的下限
是为了让你始终看得见、抓得到桌宠 — 完全透明会让你
把它弄丢。
* - 位置记忆
- 每次松开后吸附之后的 ``(x, y)`` 都会被持久化。下次
启动桌宠会回到那个屏幕坐标。如果保存的坐标已经不在
任何连接的屏幕里(你拔掉了显示器),桌宠会回退到
主屏的右下角。
交互模型
^^^^^^^^
桌宠通过三个独立通道响应鼠标输入。
**身体上左键**
点击位置会被映射回 puppet-canvas 坐标(撤销 canvas 的平移 /
缩放),交给现有的 ``hit_test`` 流水线。结果按以下方式驱动
行为:
#. 如果有一个 ``HitArea`` 覆盖了被点击的 drawable,且该区域
绑定了动作,就播放该动作。
#. 不管动作是否播放,桌宠都可能弹出一个气泡 — 台词挑选优先级
见 *Pet script*(桌宠脚本)一节。
#. 如果没有命中区域覆盖该点击,桌宠会回退到一句问候(从脚本
的 ``greetings`` 列表或内置回退集里选)。
拖曳移动手势会抑制点击处理器,所以拖动桌宠不会触发动作 / 台词。
**身体上任意位置右键**
弹出一个结构如下的上下文菜单:
* **Hide pet**(隐藏桌宠) — 顶层动作,关闭浮层。
* **Live drivers**(实时驱动)子菜单 — 六个可勾选的开关
(Auto idle、Idle motions、Auto-blink、Drag-track head、
Mic lip-sync、Webcam tracking)。勾选状态镜像实时驱动的
运行状态,所以菜单显示的就是当前在跑的。
* **Play motion**(播放动作)子菜单 — 从当前角色的
``document.motions`` 列表生成。选中一项会播放该动作(如果
脚本为它绑定了台词,还会触发桌宠的声音)。
* **Apply expression**(应用表情)子菜单 — 从角色的
``document.expressions`` 生成。选中会切换该表情的参数 overlay。
* 五个顶层可勾选开关:**Lock position**(锁定位置)、
**Click-through**(穿透点击)、**Always on bottom**
(永远置底)、**Hide on fullscreen**(全屏时隐藏)、
**Speech bubble**(气泡) — 与标签里同名开关的快捷入口。
* **Size**(尺寸)子菜单 — Small / Medium / Large;当前预设
会被勾上。
没加载角色时,动作 / 表情子菜单会被禁用。
**系统托盘图标**
托盘图标(仅在报告支持托盘的平台上实例化)提供第四个入口,
覆盖最常用的操作:
* 左键切换桌宠显示。
* 右键打开菜单:**Show pet**(显示桌宠,可勾选)、
**Click-through**(穿透点击)、**Open puppet…**(打开 puppet
文件…)、**Hide pet**(隐藏桌宠)。
* 可勾选的 Show / Click-through 项通过 ``sync_visibility`` /
``sync_click_through`` 镜像标签的勾选状态,所以无论用户在哪
切换对应开关,两边都会保持同步。
实时驱动
^^^^^^^^
每个实时驱动都是首次启用时才懒创建的,所以一只休眠中的桌宠
对你没开的驱动零 timer / 线程开销。每个驱动的状态都会被持久化;
打开它、关掉 Imervue、再启动,桌宠会带着同样的驱动复活。
.. list-table::
:header-rows: 1
:widths: 22 50 28
* - 驱动
- 作用
- 可选依赖
* - **Auto idle**
- 在标准参数(``ParamBreath`` 等)上加呼吸 + 轻微漂移,
让角色在什么都没动时也显得活着。
- 无
* - **Idle motions**
- 每隔几秒从角色的 ``Idle`` 组里随机挑一个动作播放。
如果当前已有动作在跑则跳过。
- 无
* - **Auto-blink**
- 每 ~4.5 s 用平滑的余弦曲线闭眼再睁眼。该驱动会强制
写入参数,避免其它触碰眼睛 open 值的驱动压制眨眼。
- 无
* - **Drag-track head**
- 头 + 眼睛即便光标不在桌宠上也会转向全局光标位置。
驱动 ``ParamAngleX`` / ``ParamAngleY`` /
``ParamEyeBallX`` / ``ParamEyeBallY``。
- 无
* - **Mic lip-sync**
- 麦克风 RMS 振幅驱动 ``ParamMouthOpenY``。
- ``sounddevice``
* - **Webcam tracking**
- MediaPipe FaceLandmarker 以 ~30 FPS 读取摄像头,驱动
头部姿态 + 眼 open + 嘴 open 参数。会打开一个小的实时
预览窗口让你确认摄像头看得见你的脸。
- ``opencv-python`` + ``mediapipe``
两个带可选依赖的驱动会优雅降级:如果依赖没装,勾选会被弹回,
工作区状态栏会提示安装 ``sounddevice`` / ``opencv-python +
mediapipe``。
Pet script — 自定义嗓音与定时事件
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
桌宠的气泡从一个你可以自己写的 JSON 文件取台词,文件通过标签
里的 **Pet script**(桌宠脚本)面板加载。脚本控制四件事:
* **Greetings**(问候) — 没有更具体匹配时使用的默认点击台词。
* **Hit-area responses**(命中区域回应) — 按 ``HitArea.id``
分桶的台词。
* **Motion lines**(动作台词) — 按动作名分桶的台词,在桌宠
开始播放该动作时触发(无论来自命中区域还是上下文菜单)。
* **Scheduled chimes**(定时提醒) — 定时驱动的台词,每过
``every_seconds`` 秒(按 monotonic 墙钟)触发一次。
Schema(带版本号 — 新字段向前兼容):
.. code-block:: json
{
"version": 1,
"name": "March 7th — playful voice",
"greetings": [
"Hi!", "Hello hello!", "Need a break?"
],
"hit_responses": {
"HitAreaHead": ["Hey, my head!", "Stop poking!"],
"HitAreaBody": ["Hehe~", "Pat pat?"]
},
"motion_lines": {
"wave": ["Hi!", "Hello!"],
"curtsy": ["Cheers!"]
},
"scheduled": [
{"every_seconds": 1800, "messages": ["Stretch break!"]}
]
}
加载规则:
* 每个桶内的列表按 round-robin 取样,用户不会连续看到同一句。
* 未知顶层 key 会被忽略(向前兼容 — 未来的 v2 文件仍能在 v1
运行时上加载)。
* 列表里坏掉的条目(类型不对、scheduled 条目畸形、
``every_seconds`` ≤ 0)会被跳过 — 单条坏行不会让整个加载
失败。只有彻底无法解析的 JSON 才会报错并把路径显示在状态栏。
* 命中区域 / 动作 / 问候按层级回退:一次左键先查
``hit_responses[area.id]``,然后 ``motion_lines[area.motion]``,
然后 ``greetings``,最后兜底的内置默认问候集。
* 时间跟踪使用 ``time.monotonic``,所以挂起笔记本或调系统时钟
也不会让排队事件批量爆发。
**Reset to default**(恢复默认)会丢掉用户脚本、回到内置问候集;
持久化的脚本路径会被清空,下次启动不再加载。
一个可用的示例位于
``examples/desktop_pet/march_7th.petscript.json`` — 六句问候、
两个命中区域桶(head / body)、三组动作台词(wave / curtsy /
cheer)、以及一个 30 分钟拉伸提醒。
持久化
^^^^^^
所有 Desktop Pet 状态都通过 ``user_setting_dict["desktop_pet"]``
(标准 Imervue 用户设置文件中的一个槽)round-trip。每个字段在
加载时都有默认值 + 范围钳制,所以坏掉的设置文件不会让启动崩溃。
.. list-table:: 持久化字段
:header-rows: 1
:widths: 28 18 54
* - 字段
- 默认值
- 说明
* - ``last_rig_path``
- ``""``
- 启动时若文件仍存在则自动恢复。
* - ``script_path``
- ``""``
- 启动时若脚本仍能解析则自动恢复;不可读的脚本会静默
回退到默认。
* - ``position``
- ``[-1, -1]``
- 上次松手后的屏幕坐标 ``(x, y)``。``-1, -1`` 表示
"使用主屏右下角"。两次会话之间拔掉显示器会用同样
的方式回退。
* - ``size_preset``
- ``"medium"``
- ``small`` / ``medium`` / ``large`` 之一。
* - ``opacity``
- ``1.0``
- 钳制到 ``[0.1, 1.0]``。越界值重置为默认。
* - ``click_through``
- ``false``
-
* - ``anchor_locked``
- ``false``
-
* - ``always_on_bottom``
- ``false``
- 与永远置顶互斥。
* - ``hide_on_fullscreen``
- ``true``
- 设为 ``false`` 可在全屏时仍保持桌宠可见。
* - ``snap_threshold``
- ``24``
- 钳制到 ``[0, 200]`` px。
* - ``drivers``
- 全部 ``false``
- 按驱动 id 索引的子 dict(``auto_idle``、
``idle_motion``、``auto_blink``、``drag_track``、
``mic_lipsync``、``webcam_tracking``)。未知 key
原样 round-trip 以便向前兼容。
* - ``show_on_launch``
- ``false``
- Imervue 启动时自动显示浮层。
* - ``speech_enabled``
- ``true``
- 为 false 时气泡永远不弹。
设置 dict 的合并行为是一层深的:缺少新 key 的旧设置文件加载
后仍会得到一个完整的状态 dict(默认值填空缺);你已保存的新
key 也能在不认识它们的旧运行时上幸存。
创作新桌宠
^^^^^^^^^^
任何 ``.puppet`` 文件都能作为桌宠角色 — Desktop Pet 标签纯粹
是渲染 + 交互外壳;角色制作在 Puppet 标签里完成(见
*Puppet Workspace (Puppet Tab)*)。
创建自己的桌宠角色:
#. 切到 Puppet 标签,通过 **File > Import PNG…**
(文件 > 导入 PNG…)或 **File > Import PSD…**
(文件 > 导入 PSD…)导入画稿,或通过
**File > Import Cubism…**(文件 > 导入 Cubism…)拉入
Cubism 模型。
#. 制作 rotation / warp deformer、parameters、motions、
expressions,以及(可选)绑到身体部位的 hit areas,让 Desktop
Pet 的左键处理器可以触发动作。
#. 通过 **File > Save As…**(文件 > 另存为…)保存为 ``.puppet``
zip。
#. 切回 Desktop Pet 标签,通过 **Open Puppet…** 加载新文件。
如果你的角色定义了 ``HitArea``,可以写一个 ``.petscript.json``,
让 ``hit_responses`` 的 key 匹配区域 id,即可为每个命中区域
单独写气泡台词。
疑难排查
^^^^^^^^
**桌宠出现在一个灰色矩形里,而不是完全透明。** OS 级别的半透明
背景属性需要带 alpha 的 GL surface 加上内嵌 GL widget 上的匹配
属性。确认没有第三方窗口管理工具覆盖浮层窗口上的
``WA_TranslucentBackground`` 属性(Linux 上的某些自定义窗口
管理器会这么做)。在 Windows / macOS 上应该 "开箱即用"。
**"Load bundled March 7th" 报告找不到文件。** 解析器先查
``examples_dir()``(打包构建使用的 frozen-safe 位置),再回退
到相对 CWD 的路径。如果两处都没有,状态栏会显示期望路径。
确认随安装一起发布的 ``examples/`` 目录存在 — 源代码 checkout
时请从仓库根目录启动 Imervue。
**点击桌宠没有说话。** 三处检查:
#. 确认 **Speech bubble on click**(点击时弹气泡)开关已开
(在标签或右键菜单里)。
#. 如果加载了自定义脚本,确认 JSON 能解析 — 加载错误会显示在
标签的状态栏。
#. 如果点击命中区域什么都没发生,说明该区域既没绑动作,脚本
里也没有该区域 id 对应的 ``hit_responses`` 条目。要么在
Puppet 标签里给该区域绑一个动作,要么在脚本的
``hit_responses`` 里加上该区域 id。
**摄像头追踪勾选会自动弹回。** Webcam tracking 需要在 Imervue
运行的同一个 Python 环境里装 ``opencv-python`` 与
``mediapipe``。安装命令 ``pip install opencv-python mediapipe``。
装好后再勾选应该会弹出一个显示检测到的人脸 landmark 的小预览
窗口。
**全屏应用时桌宠不自动隐藏。** 全屏检测器以 1 Hz 轮询前台
窗口。Windows 上用 ``GetWindowRect`` Win32 API;macOS / Linux
上没有可靠的跨平台等价物,会 no-op(桌宠保持可见)。在
Windows 上:确认 **Hide when other app is fullscreen**
(其它应用全屏时隐藏)已勾选,并确认全屏窗口确实覆盖了与桌宠
同一显示器的 ≥ 99 %。
**桌宠在两次启动之间漂到屏幕外。** 这发生在下次启动时桌宠
所在的屏幕已经不在连接的显示器里(笔记本脱坞、副屏被拔)。
这种情况下桌宠会自动回退到主屏右下角 — 拖到你想要的位置,
下次保存会覆盖掉过时的坐标。
----
命令行启动
----------
::
imervue # 正常启动
imervue 图片路径 # 直接打开指定图片
imervue 文件夹路径 # 直接打开指定文件夹
imervue --debug # 启用调试模式
imervue --software_opengl # 使用软件渲染(显卡不支持时)
----
MCP 服务器
----------
Imervue 内置一个 `Model Context Protocol `_
服务器,让 AI 助手(Claude Code、Claude Desktop、Cursor、Cline …)
可以直接调用项目的纯逻辑辅助函数,而无需启动 GUI。一行命令启动::
python -m Imervue.mcp_server
服务器不依赖 Qt,各工具按需懒加载。
可用工具
^^^^^^^^
.. list-table::
:header-rows: 1
:widths: 28 72
* - 工具
- 用途
* - ``list_images``
- 列出文件夹内的图片(路径、大小、修改时间)。传
``recursive=true`` 可递归遍历子目录。
* - ``read_image_metadata``
- 单张图片的尺寸、格式、EXIF、XMP sidecar。缺数据就回对应的
空值,不会 raise。
* - ``read_xmp_tags``
- 仅读 XMP 的快速路径 — 评级、色标、关键字、标题、描述。
* - ``convert_format``
- 图片格式转换。目标格式由目标文件的后缀决定(``png`` /
``jpg`` / ``jpeg`` / ``webp`` / ``tiff`` / ``bmp``)。
JPEG/WebP 可选择 ``quality``(1–100)。
* - ``puppet_from_png``
- 用 puppet 插件的 auto-mesh 从 PNG 建出 ``.puppet`` 动画文件。
自动注入 Cubism 标准参数,导入后可直接被驱动。
* - ``puppet_inspect``
- 打开 ``.puppet`` 并返回结构化清单:drawables、deformers、
parameters、motions、expressions、hit areas、parts、
parameter blends、physics rigs。
所有工具的返回会 JSON 序列化后包进 MCP 的 ``content`` / ``text``
信封;客户端可从 ``text`` 字段再 parse 回结构化数据。
Claude Code(项目级)
^^^^^^^^^^^^^^^^^^^^^
repo 根目录已附项目级 ``.mcp.json``:
.. code-block:: json
{
"mcpServers": {
"imervue": {
"type": "stdio",
"command": "python",
"args": ["-m", "Imervue.mcp_server"]
}
}
}
用 Claude Code 打开 repo 任何子目录都会自动发现这个服务器。
首次使用时 Claude Code 会询问是否启用项目 MCP 服务器,接受即可。
Claude Desktop
^^^^^^^^^^^^^^
把同样那段加进 Claude Desktop 的配置文件:
* macOS:``~/Library/Application Support/Claude/claude_desktop_config.json``
* Windows:``%APPDATA%\Claude\claude_desktop_config.json``
请使用绝对工作目录,或激活装了 Imervue 的 venv —
``python`` 必须能解析到能 ``import Imervue`` 的解释器。
通信协议
^^^^^^^^
服务器走 MCP ``2025-03-26`` 版的 stdio JSON-RPC 2.0:
* ``initialize`` — 握手,广告 ``capabilities.tools``。
* ``tools/list`` — 列出已注册工具与其 JSON-Schema 输入定义。
* ``tools/call`` — 用 ``{"name", "arguments"}`` 调用工具,结果回
在 ``content`` 数组。
* ``notifications/*`` — 静默接受(不响应)。
实现在 ``Imervue/mcp_server/``:
* ``server.py`` — 协议循环 + 工具注册表
* ``tools.py`` — 各工具的 handler 与默认工具集
* ``__main__.py`` — ``python -m Imervue.mcp_server`` 入口
自定义工具可以直接 :class:`MCPServer` 然后 :meth:`MCPServer.register`,
通过 :meth:`MCPServer.handle_message` 喂消息(或直接调用
:func:`run` 跑 stdio 循环)。