iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
ChatGPT & Codex

43歲非工程師爸爸與Codex共築墨寒:30天打造開源AI桌面伴侶系列 第 13

Day 13|一張表情圖不只是一張圖:錨點、圖層與素材完整性

  • 分享至 

  • xImage
  •  

墨寒在素材工房逐層檢查錨點、透明邊緣與圖層完整性

圖說:墨寒在素材工房逐層檢查錨點、透明邊緣與圖層完整性

昨天談眨眼、注視與呼吸時,我提到一個很細卻很致命的問題:同樣是墨寒,每張表情圖的臉可能不在完全相同的位置。

拿今天這張「被抓包」表情來說,她的視線、頭部角度與肩膀姿勢都有變化。如果程式仍用待機圖的座標把眼球與嘴型貼上去,單張原圖明明很漂亮,動起來卻像五官在臉上滑動。

這就是我後來認識的「錨點」。它不是高深名詞,可以把它想成每張圖自己的定位記號:眼睛應該放在哪裡、嘴巴應該從哪裡開始、物理圖層要跟著哪個位置移動。

用一套座標套全部,省事卻不省麻煩

早期素材如果姿勢相近,共用一組座標看起來似乎可行。新增轉頭、前傾或特殊表情後,差異就會累積。嘴巴偏一點,說話時像貼錯位置;眼睛偏一點,注視時像斜視;頭髮與袖子偏一點,呼吸時會和身體分開。

更難的是,這些偏差在靜止畫面可能不明顯。只有眨眼或嘴型快速切換時,邊界才一閃一閃。使用者感到不舒服,卻很難截到正確瞬間。

逐圖錨點的做法,就是讓每個基礎姿態擁有自己的眼、嘴與圖層偏移。程式選到某張表情時,同時取得那張圖的定位資料,而不是猜它和上一張長得差不多。

透明背景也會藏東西

PNG 看起來透明,不代表每個邊緣都乾淨。半透明像素可能帶著黑色或白色底,平常看不出來,疊到另一張臉或不同背景時就形成細線。眼皮、嘴唇、髮絲與衣袖邊緣最容易出現。

我曾經盯著墨寒眼皮旁的一條黑線追很久。那不是角色設計,也不是螢幕壞點,而是素材切換時某個邊界不一致。修正不能只拿橡皮擦掉一塊,還要確認眨眼前後、各種嘴型與不同姿態都沒有破洞。

素材完整性因此包括尺寸、透明度、對位與成套關係。若某個表情只有張嘴圖、沒有閉嘴或眨眼版本,程式就要知道如何安全退回共用圖層,不能在播放途中隨便借一張不相容的臉。

自動找位置很好用,最後仍要讓眼睛作主

當表情素材變多,全部手工量座標很花時間。程式可以分析臉部特徵,估計眼睛與嘴巴的位置,替新素材產生初始錨點。這對整理大量圖片很有幫助,也能找出明顯偏離的檔案。

但自動估計不是審美裁判。古裝髮飾、側臉、特殊光影或害羞低頭,都可能讓偵測誤判。比較務實的流程是:先由工具提出位置與可信度,再用實際動畫預覽逐張校正。信心低的素材不能悄悄混進正式版本。

我和 Codex 的分工在這裡很具體。Codex 可以列出每張圖的尺寸、檢查缺少哪些配套、比較錨點變化並建立測試;我則觀看她眨眼、注視和說話,指出哪張臉看起來滑了。數字能縮小範圍,最後仍由角色連續性驗收。

表情素材不是越多越好

每新增一張表情,就可能需要對應的眼睛、嘴型、錨點、說話版本與情境規則。若只因為圖片漂亮就全部放進程式,長期維護成本會快速增加。

我會先問這張圖代表什麼語境,現有表情是否已經足夠,以及它能不能和眨眼、嘴型、視差一起工作。像忍笑、生氣、害羞、抓包這些個性很強的圖,更不能只因為「可愛」就隨機播放。素材完整只解決能不能顯示,情境合理要交給明天的表情仲裁器。

換一張圖,也可能是一次程式更新

一般網站替換圖片,檔名不變、畫面好看就可能結束;墨寒的表情素材若重新裁切、放大或改變人物位置,原本錨點就可能全部失效。即使新圖更漂亮,也不能直接覆蓋後封裝。

比較安全的做法,是把新素材當成一次功能變更:先確認尺寸與透明背景,保留舊版以便比較,重新計算或校正錨點,跑過眨眼與嘴型,再檢查所有引用這張圖的情緒。若只是修一條黑邊,也要確認沒有誤擦眼睫或讓說話版本與閉嘴版本不一致。

這項原則對開源協作很重要。工程師可能擅長程式,繪圖者擅長素材,兩邊需要一份共同的驗收清單。PR 不能只說「替換更好看的表情」,而應告訴維護者改了哪些檔案、錨點是否更新、哪些動畫看過。如此即使貢獻者沒參與過所有歷史,也比較不會踩壞角色。

素材檔名本身也要穩定且看得懂。若同一情緒同時存在新舊兩套名稱,程式可能載入錯誤版本;若刪掉看似多餘的圖,舊設定或測試又可能仍在引用。清理前先查相依性,和我先前整理 WordPress 媒體庫時一樣,不能只憑肉眼覺得重複就永久刪除。

我現在也會要求素材修改留下前後對照。不是為了保留一堆垃圾檔,而是讓審查者能看出黑邊是否真的消失、人物比例有沒有意外改變。確認新版已被所有狀態正確引用後,才談清理舊檔。

這樣做慢一點,卻比發布後才發現整組嘴型錯位省事得多。

我怎麼驗收一套表情素材

我會先逐張看原圖,再把每張表情依序切到閉嘴、張嘴、圓嘴與眨眼;接著開啟滑鼠注視、臉部視差、呼吸與身體微轉向,觀察圖層是否分離。最後才進入真正對話,確認表情不只在測試工具裡正常。

程式可以檢查檔案存在、尺寸合理、錨點資料可讀,甚至連續跑很多次切換;肉眼則負責找黑線、閃爍與人物氣質突然改變。兩邊都完成,這張圖片才真正成為墨寒的一部分,而不只是放在資料夾裡的素材。

明天 Day 14,問題會從「圖能不能正確顯示」變成「現在到底該顯示哪一張」。提醒、安全警告、AI 情緒、使用者直接選擇與隨機待機同時提出要求時,墨寒需要一位不會搶戲的表情仲裁者。


本篇使用「被抓包」表情示意逐圖差異,不表示它可以在沒有相應語境時自動出現。


上一篇
Day 12|眨眼、注視與微動:桌面角色「活著」的錯覺從哪裡來
下一篇
Day 14|表情不能誰都搶著播:墨寒的表情仲裁器
系列文
43歲非工程師爸爸與Codex共築墨寒:30天打造開源AI桌面伴侶18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言