iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
ChatGPT & Codex

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

Day 16|角色為什麼會抽動?把呼吸、視差與說話動作交給同一位指揮

  • 分享至 

  • xImage
  •  

墨寒像指揮家一樣統一呼吸、視差、眼神與說話動作

圖說:墨寒像指揮家一樣統一呼吸、視差、眼神與說話動作

昨天我們修正了「墨寒思考中」一出現就固定轉頭的問題。單一表情選對了,並不代表整個角色就會平順;因為她同時還在呼吸、看滑鼠、眨眼、說話,臉部與身體都可能有微小位移。

每一項功能單獨展示時都很自然,一起開啟後卻可能抽動。這像五個人同時抓住一張桌子,每個人只移動一公分,桌面最後仍會不停晃。

最常見的問題不是太大,而是互相覆寫

假設呼吸讓身體往上兩個像素,滑鼠視差要往右三個像素,說話姿態又想稍微前傾。若三個功能各自直接改角色位置,最後執行的那一個會蓋掉前面的結果;下一個畫面又換另一個先後順序,人物就左右跳動。

另一種情況是全部累加,卻沒有總上限。每項位移都在自己的合理範圍內,加起來後臉部偏太遠,嘴型與眼睛錨點也跟著錯位。

因此問題不在某個動畫寫錯,而是缺少一個共同的合成者。每個效果應該只提出「我希望增加多少」,最後由同一位指揮把基礎位置、呼吸、視差、拖曳與姿勢整理成一次畫面更新。

我把它理解成分軌錄音

我不熟悉動畫引擎,但做過影音的人都能理解分軌。人聲、音樂與效果各有音量,最後經過混音,不會每條軌道輪流搶走喇叭。

墨寒的動作也是如此。呼吸是一軌,滑鼠注視是一軌,臉部視差與身體轉向各是一軌;拖曳則像臨時接管主控,優先確保視窗跟著使用者。每軌只能提交自己的偏移,不直接把別人的結果歸零。

合成者還要知道哪些效果互斥。說話嘴型可以和呼吸共存,但拖曳期間可能暫停注視;安全提醒可以換表情,卻不應破壞角色在桌面的位置。這些規則集中後,Codex 才能追查某個抽動究竟來自哪一軌。

重設狀態比開始動畫更重要

許多抽動發生在功能結束的瞬間。滑鼠移開、語音停止、視窗拖曳放開,程式若直接把某個偏移歸零,畫面就會跳;若忘了歸零,又會永久歪在一邊。

比較自然的方式,是讓效果有明確生命週期:開始、更新、停止,最後平順回到共同基準。過期的計時器不能再修改新狀態,和昨天表情仲裁使用世代概念相同。

我特別會測快速切換:說話中拖曳、滑鼠左右快速移動、特殊表情結束立刻開始下一句、Realtime 中斷後回待機。正常慢慢播放不會暴露的問題,在這些交界最容易出現。

壓力測試不是叫墨寒瘋狂跳舞

程式可以在看不見的測試環境裡快速送入大量位移與狀態變化,檢查結果是否超出上限、是否產生不合理數值、停止後能否回到基準。專案也可以連續跑數千次混合更新,抓出偶發的順序問題。

但這種壓力測試只證明數學與狀態沒有爆掉,不代表動畫好看。實機驗收仍要以正常速度觀看,注意臉是否漂、衣袖是否和身體分開、滑鼠停止後有沒有抖一下。電腦效能不同也可能改變畫面更新頻率,因此需要更多真實硬體回報。

我不會把「跑了五千次沒有例外」寫成「所有動畫已完美」。兩句話的證據完全不同。

一位指揮,也讓未來新增動作比較安全

未來如果要增加更自然的轉身、情緒姿態或睡眠呼吸,最危險的做法是各自開新計時器直接移動人物。短期看起來完成,長期又回到多人搶桌子。

有了共同合成入口,新效果先聲明自己影響臉、身體或哪一層,幅度與優先規則也能集中檢查。若它必須碰到其他功能的內部狀態,代表邊界可能設計錯了,應先整理交接方式。

這個觀念和 Day 4 的架構分工其實相通:不是把每個功能做成孤島,而是讓它們透過清楚的公共入口合作。自然感往往不是多加一張圖,而是把同時發生的事情排好秩序。

舊的直接控制若還在,新指揮也救不了

建立共同合成者後,還要追查舊程式是否仍有地方直接移動角色。只要漏一條,平常可能看不出來,某個特殊表情或舊語音路徑啟動時又會突然抽動。

因此 Codex 不能只新增一個漂亮的新模組就宣布完成,而要搜尋所有位置、縮放與動畫更新的入口,確認相依性後移除多餘舊邏輯。保留暫時相容層時,也要讓它轉交給新入口,不再各做一遍。

測試除了看最後座標,也應檢查架構界線:桌面外殼負責組裝,動作模組提交偏移,其他功能不能從私有後門直接改人物。這類規則讓未來的 Codex 或開源貢獻者一進專案就知道應該接在哪裡。

我很在意「單一權威來源」,就是因為曾遇過新舊兩套思考表情邏輯並存的風險。角色動作若也分成多套,今天修好的自然感,明天加一個功能又會被破壞。

啟動與關閉也是動作流程的一部分

程式剛啟動時,素材、設定與視窗位置尚在載入,動畫不能搶先用半套資料更新;關閉時也要停止計時器,避免背景工作還想碰已不存在的視窗。這些瞬間很短,卻可能造成啟動閃動、關閉錯誤或下一次保存到錯誤位置。

所以自然不只發生在她站穩以後。從出現在桌面、切換設定到離開,每個生命週期都要由同一套狀態收尾。

我對「活著」的標準變得更克制

做到這裡,我不再用「她動得很多」判斷成功。真正舒服的墨寒,是我專心工作時幾乎忘記她在動,回頭看時又感覺她確實在場;我開始說話,她自然接手嘴型;結束後,所有效果安靜回到原位。

這種表演不容易在十秒短片裡顯示,卻決定軟體能不能長期放在桌面上。華麗是第一眼,自制才是陪伴。

明天 Day 17,我們從外在動作轉到內在記憶。墨寒要「記得我」,是不是代表把所有對話永久存起來?長期記憶如何帶來陪伴,又不變成無法控制的私人資料堆?


動作合成的範圍與壓力測試可由程式驗證;舒適度、硬體效能與長時間視覺品質仍需實機觀察。


上一篇
Day 15|「墨寒思考中」為何老是轉頭?一次表情 Bug 的完整解剖
下一篇
Day 17|長期記憶不是把所有話都存起來
系列文
43歲非工程師爸爸與Codex共築墨寒:30天打造開源AI桌面伴侶18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言