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(VRAM/快取/執行緒) * - 像素檢視 - ``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 確認、status bar 的 autosave 狀態段、開啟時自動偵測前次 session 的 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(VRAM、快取、執行緒) * - ``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,並依 Hamming 距離遞增列出索引中的近似圖。 可藉由「Max distance」調整寬鬆度。 自動標記 ^^^^^^^^ ``Extra Tools`` > ``Library & Metadata`` > ``Auto-Tag Images`` 會將經驗式標籤套用於 ``auto/...`` (``photo`` / ``document`` / ``screenshot`` / ``landscape`` / ``portrait``)。若系統已安裝 ``onnxruntime`` 並於 ``models/clip_vit_b32.onnx`` 放置 CLIP 模型,還會加入 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`` 以「日/月/年」方式分組目前圖片集 (date-grouped library views 樣式)。日期優先使用 EXIF ``DateTimeOriginal``,否則退回檔 案修改時間。雙擊圖片即可進入深度縮放。 拖放至外部應用程式 ^^^^^^^^^^^^^^^^^^ 由**已選取** tile 按住拖曳,可將檔案直接丟到檔案總管、Chrome、Discord 等 支援檔案 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 重設為 identity 也不會消失。 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-TW.md``(英文版 ``puppet_guide.md``、簡體中文版 ``puppet_guide.zh-CN.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-TW.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 runtime 共用一切(動作、表情、物理、idle driver、麥克風 / 攝影機輸入)。桌寵可以對點擊有反應、跑計時器驅動的動畫、追隨你的游標、其他 App 全螢幕時自動藏起來,還能用你寫在 JSON 檔裡的台詞說話。 本章是這個分頁的完整參考手冊,章節安排如下: #. **快速上手** — 從「我剛打開 Imervue」到「桌面上出現桌寵了」的五步流程。 #. **載入 rig** — 檔案選擇器、內附範例、跨啟動的還原。 #. **浮層視窗** — 所有視窗層級的行為(拖曳移動、邊緣吸附、點擊穿透、位置鎖定、永遠置底、全螢幕自動隱藏、隱藏時暫停、透明度、尺寸、多螢幕還原)。 #. **互動模型** — 左鍵 hit area、完整右鍵選單、系統匣。 #. **Live driver** — 六個可開關的輸入 driver 與其選用依賴。 #. **桌寵腳本** — 一個 JSON 檔,讓你能換掉桌寵的台詞、安排提醒,並對每個 hit area / 每個 motion 綁定反應。 #. **持久化** — 哪些東西會跨啟動記住、以及完整的設定 schema。 #. **製作新桌寵** — 指向 Puppet 分頁與 ``.puppet`` 檔案格式。 #. **疑難排解** — 常見狀況與處理方式。 快速上手 ^^^^^^^^ 1. 切換到 **Desktop Pet** 分頁。 2. 點 **Load bundled March 7th** 用內附的角色,或 **Open Puppet…** 選自己的 ``.puppet`` 檔。 3. 浮層出現在桌面上,**Show pet on desktop** 勾選框會自動勾起來。(要在不關閉 Imervue 的情況下把桌寵藏起來,把勾選框取消、或用系統匣圖示。) 4. 把角色拖到想要的位置,放開時靠近螢幕邊緣會吸附貼齊。 5. 從分頁或桌寵的右鍵選單挑你要的 **Live driver** — idle 呼吸、眨眼、游標追隨、麥克風對嘴、攝影機追蹤。 你設定的一切都會跨啟動保留下來,所以步驟 5 是每個 rig / 角色一次的決定。 載入 rig ^^^^^^^^ 分頁提供三條載入途徑: * **Open Puppet…** — 從硬碟挑任何 ``.puppet`` 檔。 * **Load bundled March 7th** — 開啟內附在 ``examples/puppet/march_7th.puppet`` 的 rig。Resolver 會先查 ``examples_dir()``(對 Nuitka 打包 / pip 安裝版本是 frozen-safe),找不到再退回 repo 根目錄相對路徑,所以這顆按鈕在兩種執行模式下都能用。 * **上次的 rig** — Imervue 啟動時會從 ``last_rig_path`` 設定欄位自動還原上次載入的 rig;Desktop Pet 分頁會靜默重建浮層,所以你和上次離開時的狀態之間只差一個點擊。 載入成功會自動勾起 **Show pet on desktop**,桌寵立刻現身。失敗時勾選框不會動,錯誤訊息會寫在分頁的狀態列上。 浮層視窗 ^^^^^^^^ 角色待在一個獨立於 Imervue 主視窗之外的最上層視窗。視窗是無邊框、不出現在工作列、預設永遠浮在所有其他視窗的上面。 .. list-table:: 視窗行為 :header-rows: 1 :widths: 28 72 * - 行為 - 細節 * - 無邊框浮層 - 沒有視窗外框、沒有最小化 / 關閉按鈕、不出現在工作列。整個可見表面就是角色本身。 * - 透明背景 - 角色沒覆蓋到的地方完全透明,後面的桌面 / App 像素級透出來。 * - 拖曳移動 - 在身體任意位置左鍵按下、拖、放開。游標移動少於 6 px 才會被當成點擊;移得更遠就視為拖曳,點擊處理器不會觸發。 * - 邊緣吸附 - 在螢幕邊緣附近放開(預設:24 px 以內),桌寵會「卡」上去貼齊邊緣。閾值可在 0(關閉)到 200(很黏)之間調整。X、Y 兩軸各自獨立判斷,所以拖到角落時會同時吸附兩條邊。 * - 越界夾回 - 拖到螢幕邊緣外才放開的,會被夾回螢幕內。你沒辦法把桌寵丟到螢幕外面、再也抓不回來。 * - 點擊穿透模式 - 開啟後,所有滑鼠事件穿過桌寵直達後面的東西。角色仍然看得見,但無法拖、無法右鍵、也無法用來觸發動作。桌寵純粹當裝飾時打開它。 * - 鎖定位置 - 停用拖曳移動,但不影響點擊穿透。把桌寵放好了、不想被誤拖時很有用。 * - 永遠置底 - 把桌寵從永遠置頂翻成永遠置底。桌寵會待在所有其他視窗的後面,像桌面小工具。同時取消接受 focus 的旗標,所以點桌寵不會把它升到前面。 * - 全螢幕自動隱藏 - 一個 1 Hz 的背景輪詢監看桌寵所在螢幕上的前景視窗。當該視窗覆蓋 ≥ 99 % 螢幕、且每邊容差 ≤ 4 px(真正的全螢幕和無邊框視窗遊戲都抓得到),桌寵自動藏起來。全螢幕結束後桌寵會回到原本的位置。Windows 上偵測器走 Win32 ``GetWindowRect`` API;macOS / Linux 上會優雅 no-op(桌寵保持可見)。 * - 隱藏時暫停 - ~30 FPS 的繪圖 tick 和 1 Hz 的腳本 tick 都會在 ``hideEvent`` 時停掉,所以藏起來的桌寵 CPU 用量為零。下次 ``showEvent`` 時重新啟動。 * - 尺寸預設 - 小(200 × 300)、中(320 × 480)、大(480 × 720)。桌寵以目前中心為錨點縮放,調尺寸時不會跳位。Snap 會在 resize 之後重跑一次。 * - 透明度滑桿 - 10 – 100 %。作用在視窗層級(透過 ``setWindowOpacity``),所以整個桌寵一起淡出,不是只淡材質。10 % 是下限,是為了讓你永遠看得到、抓得到桌寵 — 完全透明會讓你弄丟它。 * - 位置記憶 - 每次放開後吸附完成的 ``(x, y)`` 都會被保存。下次啟動時桌寵會回到那個螢幕座標。如果保存的位置已經不在任何連接的螢幕內(你從上次啟動到現在拔掉了一個螢幕),桌寵會退回主螢幕的右下角。 互動模型 ^^^^^^^^ 桌寵透過三個獨立通道回應滑鼠輸入。 **左鍵點身體** 點擊位置會反映射回 puppet canvas 座標(抵銷 canvas 的平移 / 縮放),再丟進現有的 ``hit_test`` 流程。結果如下驅動行為: #. 如果有 ``HitArea`` 覆蓋了被點到的 drawable、且該 area 有綁定 motion,就播這個 motion。 #. 不論 motion 有沒有播,桌寵都可能彈出對話泡泡 — 台詞挑選的優先順序見 *桌寵腳本* 段。 #. 沒有任何 hit area 覆蓋點擊時,桌寵退回打招呼(從腳本的 ``greetings`` 清單,或內建 fallback)。 拖曳移動的手勢會壓抑點擊處理器,所以移動桌寵不會觸發動作 / 對話。 **右鍵點身體任意位置** 開啟右鍵選單,結構如下: * **Hide pet** — 最上層動作,關閉浮層。 * **Live drivers** 子選單 — 六個可勾選 toggle(Auto idle、Idle motions、Auto-blink、Drag-track head、Mic lip-sync、Webcam tracking)。勾選狀態鏡像 live driver 的真實狀態,所以選單顯示的就是目前在跑什麼。 * **Play motion** 子選單 — 由當前 rig 的 ``document.motions`` 清單填入。選一項就播該動作(如果腳本對該動作綁了台詞,可能會同時觸發桌寵的聲音)。 * **Apply expression** 子選單 — 由 rig 的 ``document.expressions`` 填入。選一項會切換該表情的參數 overlay。 * 五個最上層的可勾選 toggle:**Lock position**、**Click-through**、**Always on bottom**、**Hide on fullscreen**、**Speech bubble** — 快速存取分頁裡同樣的 toggle。 * **Size** 子選單 — Small / Medium / Large;目前的預設會被勾起來。 沒載入 rig 時,motion / expression 子選單會 disabled。 **系統匣圖示** 系統匣圖示(僅在支援系統匣的平台上建立)提供第四個操作面,給最常用的動作: * 左鍵單擊切換桌寵顯示。 * 右鍵開啟選單:**Show pet**(可勾選)、**Click-through**、**Open puppet…**、**Hide pet**。 * 可勾選的 Show / Click-through 項目透過 ``sync_visibility`` / ``sync_click_through`` 鏡像分頁的勾選狀態,所以不論使用者從哪邊切,狀態都會同步。 Live driver ^^^^^^^^^^^ 每個 live driver 都是第一次開啟時才 lazy-create,所以沒在用的 driver,閒置的桌寵不會花任何 timer / thread 成本。每個 driver 的狀態會被保存;開啟、關閉 Imervue、再重啟,桌寵會帶著同樣的 driver 重新打開。 .. list-table:: :header-rows: 1 :widths: 22 50 28 * - Driver - 做什麼 - 選用依賴 * - **Auto idle** - 在標準參數(``ParamBreath`` 等)上加呼吸 + 微幅漂移,沒其他東西在動的時候讓角色看起來有生命。 - 無 * - **Idle motions** - 每幾秒從 rig 的 ``Idle`` 群組隨機挑一個 motion 播。目前有 motion 在跑就停下不挑。 - 無 * - **Auto-blink** - 每 ~4.5 秒沿著平滑的 cosine 曲線闔眼再睜眼。Driver 會強制寫入該參數,所以其他會碰到 eye-open 的 driver 不會壓掉眨眼。 - 無 * - **Drag-track head** - 頭和眼睛會轉向全域游標位置,即使游標不在桌寵上也一樣。驅動 ``ParamAngleX`` / ``ParamAngleY`` / ``ParamEyeBallX`` / ``ParamEyeBallY``。 - 無 * - **Mic lip-sync** - 麥克風 RMS 振幅驅動 ``ParamMouthOpenY``。 - ``sounddevice`` * - **Webcam tracking** - MediaPipe FaceLandmarker 以 ~30 FPS 讀你的攝影機,驅動頭部姿態 + eye-open + mouth-open 參數。會開一個小的即時預覽視窗讓你確認攝影機有看到你的臉。 - ``opencv-python`` + ``mediapipe`` 兩個帶選用依賴的 driver 會優雅降級:所需套件沒裝時,勾選框會自動彈回去,分頁的狀態列會顯示「install sounddevice」/「install opencv-python + mediapipe」提示。 桌寵腳本 — 自訂台詞與排程事件 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 桌寵的對話泡泡內容來自一個 JSON 檔,你可以自己寫,並從分頁上的 **Pet script** 群組載入。腳本管四件事: * **Greetings** — 沒有更具體匹配時的預設點擊台詞。 * **Hit-area responses** — 按 ``HitArea.id`` 分桶的台詞。 * **Motion lines** — 按 motion 名稱分桶的台詞,桌寵開始播該 motion 時觸發(不論是 hit area 觸發還是右鍵選單觸發)。 * **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 runtime 上仍能載入)。 * 垃圾清單項(型別錯誤、scheduled 項格式錯誤、``every_seconds`` 為零或負數)會被跳過 — 一筆爛資料不會弄爛整個載入。只有完全無法 parse 的 JSON 才會 raise 錯誤、把路徑寫到狀態列上。 * hit-area / motion / greeting 的層疊:左鍵點擊先查 ``hit_responses[area.id]``、再查 ``motion_lines[area.motion]``、再查 ``greetings``,最底層才是內建預設打招呼集。 * 時間追蹤用 ``time.monotonic``,所以筆電休眠或系統時鐘跳變不會把排隊的事件一次連發出來。 **Reset to default** 會丟掉使用者腳本、回到內建打招呼集;保存的腳本路徑也會清空,下次啟動不會再載入它。 可用的範例放在 ``examples/desktop_pet/march_7th.petscript.json`` — 六句打招呼、兩個 hit-area 桶(head / body)、三個 motion 台詞(wave / curtsy / cheer),以及一個 30 分鐘的伸展提醒。 持久化 ^^^^^^ 所有 Desktop Pet 狀態都透過 ``user_setting_dict["desktop_pet"]``(Imervue 標準使用者設定檔裡的一個 slot)來回。每個欄位在載入時都有預設值 + 範圍夾取,所以損壞的設定檔不會讓啟動 crash。 .. list-table:: 持久化欄位 :header-rows: 1 :widths: 28 18 54 * - 欄位 - 預設值 - 備註 * - ``last_rig_path`` - ``""`` - 啟動時若檔案仍存在會自動還原。 * - ``script_path`` - ``""`` - 啟動時若腳本仍可 parse 會自動還原;無法讀的腳本會靜默退回預設。 * - ``position`` - ``[-1, -1]`` - 上次拖曳放開的螢幕座標 ``(x, y)``。``-1, -1`` 表示「使用主螢幕的右下角」。跨 session 拔掉多螢幕也會走同樣的 fallback。 * - ``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`` - 以 driver id 為 key 的子 dict(``auto_idle``、``idle_motion``、``auto_blink``、``drag_track``、``mic_lipsync``、``webcam_tracking``)。未知 key 會原樣往返保留以向前相容。 * - ``show_on_launch`` - ``false`` - Imervue 啟動時自動顯示浮層。 * - ``speech_enabled`` - ``true`` - 設成 false 時對話泡泡永遠不彈。 設定 dict 的 merge 行為是淺一層的:缺少新 key 的舊設定檔,載入後仍會產生完整的狀態 dict(預設值補洞);你存過的新 key,即使降級到不認得它們的舊 runtime 上也能保留下來。 製作新桌寵 ^^^^^^^^^^ 任何 ``.puppet`` 檔都能當 Desktop Pet 的角色用 — Desktop Pet 分頁純粹是 renderer + 互動殼層;rig 的製作在 Puppet 分頁裡發生(見 *Puppet 工作區(Puppet 分頁)*)。 製作自己的桌寵 rig: #. 切換到 Puppet 分頁,透過 **File > Import PNG…** 或 **File > Import PSD…** 匯入美術素材,或透過 **File > Import Cubism…** 拉入 Cubism 模型。 #. 製作旋轉 / warp deformer、參數、動作、表情,以及(選用)綁定到身體部位的 hit area,讓 Desktop Pet 的左鍵處理器能觸發動作。 #. 透過 **File > Save As…** 把 rig 存成 ``.puppet`` zip。 #. 切回 Desktop Pet 分頁,用 **Open Puppet…** 載入新檔。 如果你的 rig 定義了 ``HitArea`` 項目,可以在 ``.petscript.json`` 裡寫對應的 ``hit_responses`` key(key 要對得上 area id),就能為每個 hit area 寫自訂對話泡泡台詞。 疑難排解 ^^^^^^^^ **桌寵出現在灰色矩形裡,而不是完全透明。** OS 層級的半透明背景屬性需要 alpha-aware 的 GL surface 加上嵌入 GL widget 的對應屬性。確認沒有任何第三方視窗管理工具在浮層視窗上覆寫 ``WA_TranslucentBackground``(Linux 上某些自製視窗管理員會這樣做)。Windows / macOS 上應該「直接能用」。 **「Load bundled March 7th」說檔案找不到。** Resolver 先查 ``examples_dir()``(打包版用的 frozen-safe 位置),再退回 CWD 相對路徑。兩者都沒有 rig 時,狀態列會列出預期路徑。檢查你安裝中附的 ``examples/`` 資料夾 — 如果是從原始碼 checkout 執行,要從 repository 根目錄啟動 Imervue。 **桌寵被點了不講話。** 三個檢查點: #. 確認 **Speech bubble on click** toggle 是開的(在分頁或右鍵選單裡)。 #. 如果你載了自訂腳本,確認 JSON 能 parse — 分頁的狀態列會顯示載入錯誤。 #. 如果 hit-area 點擊沒反應,那個 area 大概是沒綁 motion 而且腳本裡也沒有對應 area id 的 ``hit_responses`` 項。要嘛在 Puppet 分頁把 motion 綁上去,要嘛把 area id 加到腳本的 ``hit_responses``。 **Webcam tracking 勾選框自己彈回去。** Webcam tracking 需要在 Imervue 跑的同一個 Python 環境裡裝 ``opencv-python`` 和 ``mediapipe``。用 ``pip install opencv-python mediapipe`` 安裝。裝完後,切換勾選框應該會跳出一個小預覽視窗顯示偵測到的臉部 landmark。 **桌寵沒在其他 App 全螢幕時自動藏起來。** 全螢幕偵測器以 1 Hz 輪詢前景視窗。Windows 上用 ``GetWindowRect`` Win32 API;macOS / Linux 上沒有可靠的跨平台對等物,會 no-op(桌寵保持顯示)。在 Windows 上:確認 **Hide when other app is fullscreen** 是勾的,並確認全螢幕視窗確實覆蓋了與桌寵同一個螢幕的 ≥ 99 %。 **桌寵的位置在跨啟動之間漂到螢幕外。** 這發生在桌寵原本所在的螢幕在下次啟動時不再連接(筆電 dock、第二個螢幕被拔掉)。這種情況下桌寵會自動退回主螢幕的右下角 — 把它拖到你想要的地方,下次保存就會覆蓋掉那個過時的位置。 ---- 命令列啟動 ---------- :: 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 迴圈)。