電影「達文西密碼(The Da Vinci Code)」中,被通緝的蘭登(Langdon)與納佛(Neveu)來到提賓(Teabing)的豪宅。提賓告訴他們一個隱藏在達文西畫作「最後的晚餐」中的秘密:耶穌右邊的人並非使徒約翰(Apostle John),而是耶穌的妻子、抹大拉的瑪利亞(Mary Magdalene)。為了說服蘭登與納佛,提賓在電腦上將使徒約翰的影像從耶穌右邊移到左邊,結果那人緊靠著耶穌,影像剛好吻合。目睹此景,蘭登與納佛震驚不已。
我從網路上找出達文西的「最後的晚餐」影像,試著重複電影中的這段動畫。實做結果如下(點圖放大,450×243 GIF,3.7 MB;檔案較大,需一段時間才能完成下載):
我有點不太記得在電影中提賓把使徒約翰的影像移走後,留下的背景是不是一片空白。在我的版本中,我把空缺背景中應有的牆、窗及遠景都填補回去了。整體的效果不錯,不曉得有沒有比電影中的畫面炫。
我使用的軟體和前一篇「達文西密碼與 GIMP:蘭登教授的簡報」用的完全一樣,是 GIMP 動畫套件 GAP(GIMP Animation Package)。以下是邊學邊做的記錄,並非完整教學。關於 GIMP 的使用,可以參閱 GIMP 使用手冊與維基百科上的 GIMP 文件(英文)。關於 GAP 的使用,可以閱讀 “AnimatedGif – Wilber’s Wiki” 及 “GAP Tutorial (Flash)” 兩篇文章。
1. 來源檔與動畫檔
我從 Portraits of Jesus/Christ 網站下載了達文西「最後的晚餐」影像檔後,裁剪畫面中間的部分影像並調整大小為 450×243。
以快速遮罩及橡皮擦工具選取使徒約翰的影像,複製後貼成有透明背景的新影像。存成 PNG 檔以保留透明度,這就是動畫的來源檔。
移除使徒約翰的影像後,原圖就多了一片空白。以選取及模仿工具逐漸以附近的類似影像填補空缺的背景,這需要有點耐心慢慢做。填好後,就是沒有使徒約翰的「最後的晚餐」。存成 last-supper-000001.xcf,這就是動畫檔。
選 Video → Duplicate Frames,複製約 47 個畫格。第一個檔案的檔名結尾數字是必要的,GAP 會根據它產生每一個畫格,例如 daemon_000001.xcf 到 daemon_000048.xcf。GAP 產生很多檔案,所以動畫相關的檔案最好放在獨立的目錄。
2. Move Path
在動畫檔視窗的主選單,選 Video → Move Path。在 Move Path 的使用者介面,從 Source Image/Layer 選擇來源檔,並將 Stepmode 設為 None。將 Instant Apply 打勾,可以立即看到改變的效果。然後,調整來源影像的位置,設定三個控制點。
第一個控制點,使徒約翰在原來的位置:
第二個控制點,使徒約翰在耶穌左邊的位置:
第三個控制點,使徒約翰在原來的位置:
按 Anim Preview 預覽。預覽結果無誤,按「確定」產生動畫。此時,動畫檔的下方會顯示 “Copying layers into frames…”。這需要一些時間,請耐心等候。
3. VCR Navigator
在動畫檔視窗的主選單,選 Video → VCR Navigator,檢查畫格的分佈。在這個例子中,從第一個控制點到第三個控制點大約經過 33 個畫格。我把最後 15 個畫格刪掉,再把第 17 個畫格(第二個控制點)複製 7 次,第一個畫格(第一個控制點)複製 8 次。以每秒 12 畫格播放時,使徒約翰在新舊位置會停留各約 0.6 秒。
4. 存成 GIF 檔
在動畫檔視窗的主選單,選 Video → Frames to Image。按「確定」,會產生一個影像檔,每一個圖層就是一個畫格。儲存時,選擇存成 GIF 檔,並選擇存成動畫(預設值是合併圖層),每個圖層就會成為 GIF 動畫檔中的一個畫格。你也可以選擇循環播放,或是只播放一次。
儲存之前,記得先把生成影像的色彩模式從 RGB 轉換為索引色。選擇「擬色」可以讓轉換後的顏色不致和原圖差太多,但會花相當長的時間計算,請耐心等候。