使用GIMP輕松地設(shè)置圖片透明度
使用色鍵(或綠屏)技巧來(lái)設(shè)置你電腦游戲中圖片的透明度。
不管你是否正在使用 Python 或 Lua 編程一個(gè)游戲或一個(gè) APP,你都有可能在你的游戲資源中使用 PNG 圖像。PNG 格式圖像的一個(gè)優(yōu)點(diǎn)是能夠存儲(chǔ)一個(gè) alpha 通道,這在一個(gè) JPEG 格式的圖像中是不可能獲得的。alpha 在本質(zhì)上是不可見的或透明的“顏色”。alpha 是你圖像 不可見 的一部分。例如,你要繪制一個(gè)甜甜圈,甜甜圈的空洞將使用 alpha 填充,你就可以看到它后面的任何東西。
一個(gè)常見的問(wèn)題是如何找到一幅圖像的 alpha 部分。有時(shí)你的編程框架,不管它是 Python Arcade、Pygame、LÖVE,或者其它的任何東西都會(huì)檢測(cè)出 alpha 通道,(在適當(dāng)?shù)卣{(diào)用函數(shù)后)將其作為透明處理。這意味著它將不會(huì)在 alpha 部分來(lái)渲染新的像素,而留下甜甜圈的空洞。100% 是透明的,0% 是不透明的,在功能上起到“不可見”的作用。
有些時(shí)候,你的框架與你的圖像資源在 alpha 通道的位置上是不一致的(或者,alpha 通道根本就不存在),你在你想要透明度的地方卻得到像素。
這篇文章描述了我所知道的最可靠的方法來(lái)解決透明度的問(wèn)題。
色鍵
在計(jì)算機(jī)圖形學(xué)中,有一些有助于確定每一個(gè)像素是如何渲染的值。色度(或者 chroma),描述一個(gè)像素的飽和度或強(qiáng)度。色鍵技術(shù)(也稱為綠屏)最初是作為一種化學(xué)工藝而發(fā)展起來(lái)的,在復(fù)印一張底片時(shí),使用一種特定的 無(wú)光澤 的顏色(最初是藍(lán)色,后來(lái)是綠色)來(lái)故意遮掩,以允許使用另一幅圖像來(lái)取代曾經(jīng)有藍(lán)色或綠色屏幕的地方。這是一種簡(jiǎn)化的解釋,但是它說(shuō)明了計(jì)算機(jī)圖形學(xué)中被稱為 alpha 通道的起源。
alpha 通道是保存在圖像中的信息,用以標(biāo)識(shí)要透明的像素。例如,RGB 圖像有紅、綠、藍(lán)通道。RGBA 圖像包含紅、綠、藍(lán)通道,以及 alpha 通道。alpha 值的范圍可以從 0 到 1 ,使用小數(shù)是也有效的。
因?yàn)橐粋€(gè) alpha 通道可以用幾種不同的方法表達(dá),因此依賴于嵌入的 alpha 通道可能是有問(wèn)題的。作為替代方案,你可以在你的游戲框架中選擇一種顏色并將其轉(zhuǎn)化為一個(gè) 0 的 alpha 值。要做到這一點(diǎn),你必須知道在你圖像中的顏色值。
準(zhǔn)備你的圖片
要準(zhǔn)備一個(gè)專門為色度鍵保留明確顏色的圖形,在你最喜歡的圖片編輯器中打開圖片。我建議使用 GIMP 或 Glimpse,但是 mtPaint 或 Pinta,甚至 Inkscape 也能很好地工作,這取決于你的圖像的性質(zhì),以及你將這些操作指南轉(zhuǎn)換到一種不同圖片編輯器工具的能力。
首先打開這幅 Tux 企鵝的圖像:
Tux 企鵝
選擇圖片
在圖片打開后,轉(zhuǎn)到 窗口 菜單,選擇 可停靠對(duì)話框 ,接下來(lái)選擇 圖層。在 圖層 面板中 Tux 圖層上右擊。從彈出菜單中,選擇 Alpha 到選區(qū) 。如果你的圖像沒有內(nèi)置的 alpha 通道,那么你必須手動(dòng)創(chuàng)建你自己的選區(qū)。
Alpha 到選區(qū)
為手動(dòng)創(chuàng)建一個(gè)選區(qū),單擊來(lái)自工具箱的 路徑 工具。
GIMP 的路徑工具
使用 路徑 工具,在圖像周圍移動(dòng)鼠標(biāo),在其輪廓的每個(gè)主要交叉點(diǎn)處都單擊和釋放(不要拖動(dòng))。 不要擔(dān)心沿著曲線走;只需要找到主要的交叉點(diǎn)和拐角。這將在每個(gè)點(diǎn)處創(chuàng)建一個(gè)節(jié)點(diǎn),并在節(jié)點(diǎn)中間繪制一條條線段。你不需要閉合你的路徑,因此當(dāng)你最后到達(dá)你開始時(shí)的交叉點(diǎn)時(shí),你就完成了。
在 GIMP 中創(chuàng)建一個(gè)路徑
在你創(chuàng)建你的輪廓路徑后,轉(zhuǎn)到 窗口 菜單,選擇 可停靠對(duì)話框 ,接下來(lái)選擇 工具選項(xiàng) 。在 工具選項(xiàng) 面板中,選擇 編輯 (Ctrl) 。隨著這項(xiàng)操作的激活,你可以編輯你剛剛通過(guò)單擊線或單擊節(jié)點(diǎn)繪制的路徑,并通過(guò)調(diào)整它們來(lái)更好地適應(yīng)你的圖像。你甚至能夠?qū)⒅本€彎曲。
編輯路徑
現(xiàn)在從 窗口 > 可??繉?duì)話框 菜單中選擇 路徑 面板。在 路徑 面板中,單擊 路徑到選區(qū) 按鈕。你的繪圖現(xiàn)在已經(jīng)被選中了。
擴(kuò)大選區(qū)
如果你覺得你的選區(qū)太緊貼了,你可以通過(guò)擴(kuò)大來(lái)給予你自己的選區(qū)一些富余。當(dāng)我想在一張圖像周圍采用或加厚一個(gè)邊框時(shí),我有時(shí)會(huì)這么擴(kuò)大選區(qū)。
為擴(kuò)大一個(gè)選區(qū),單擊 選擇 菜單,選擇 擴(kuò)大 。輸入一個(gè)像素值并單擊 確定 。
反轉(zhuǎn)選區(qū)
你已經(jīng)選擇了你的圖形,但是你真正想選擇的東西卻 不包括 你所選擇的圖像。這是因?yàn)槟阋獎(jiǎng)?chuàng)建一個(gè) alpha 蒙版來(lái)定義圖像中的一些內(nèi)容的來(lái)被其它一些內(nèi)容所替換。換句話說(shuō),你需要標(biāo)記那些將被轉(zhuǎn)變?yōu)椴豢梢姷南袼亍?/p>
為了反轉(zhuǎn)選擇區(qū),單擊 選擇 菜單,選擇 反轉(zhuǎn) ?,F(xiàn)在除你的圖像以外的一切東西都是被選擇的。
使用 alpha 填充
隨著選擇了除了你的圖像以外的一切東西,再選擇你想使用的顏色來(lái)指定你的 alpha 蒙版。最常用的顏色是綠色(正如你可能從術(shù)語(yǔ)“綠屏”中所猜到的一樣)。綠色不是什么神奇的顏色,甚至也不是特定的綠色色調(diào)。之所以使用它是因?yàn)槿藗兘?jīng)常處理不包含綠色色素的圖像,這樣人們能夠很容易分離出綠色,而不會(huì)意外地分離出圖像中重要的部分。當(dāng)然,如果你的圖像是一位綠色的外星人或一枚綠寶石或一些 確實(shí) 包含綠色的東西,那么你應(yīng)該使用一種不同的顏色。只要你所選擇的顏色是單一的單色,那么你就可以使用你所希望的任意顏色。如果你正在處理很多圖像,你的選擇應(yīng)該在所有圖像中保持一致。
在工具箱中的前景色
使用你選擇的顏色值來(lái)設(shè)置你的前景色。為確保你的選擇是精確的,使用 HTML 或 HSV 表示的顏色。例如,如果你正在使用純綠色,它可以在 GIMP(以及大多數(shù)的開放源碼圖像應(yīng)用程序)中表示為 00ff00
(00
是紅色,FF
是綠色,00
是藍(lán)色,F
是最大值)。
設(shè)置顏色值
不管你選擇什么顏色,務(wù)必記錄下 HTML 或 HSV 的值,以便你可以為每一張圖像使用完全相同的顏色。
為填充你的 alpha 蒙版,單擊 編輯 菜單,選擇 使用前景色填充 。
平整和導(dǎo)出
如果你在你的圖像周圍留下邊框,設(shè)置背景顏色來(lái)著色你想使用的邊界筆刷。這通常是黑色或白色,但是它也可以是任何適宜你游戲?qū)徝烙^的顏色。
在你設(shè)置背景顏色后,單擊 圖像 菜單,選擇 平整圖像。不管你是否添加了邊框,這樣做都是安全的。這個(gè)過(guò)程將從圖像中移除 alpha 通道,并使用背景色填充任何“透明的”像素。
平整圖像
你現(xiàn)在已經(jīng)為你的游戲引擎準(zhǔn)備好了一張圖像。導(dǎo)出圖像為你的游戲引擎喜歡的任何格式,接下來(lái)使用游戲引擎所需要的每一個(gè)函數(shù)來(lái)將圖像導(dǎo)入的你的游戲中。在的代碼中,設(shè)置 alpha 值為 00ff00
(或你使用的任何顏色),接下來(lái)使用游戲引擎的圖像轉(zhuǎn)換器來(lái)將該顏色作為 alpha 通道處理。
其它的方法
這不是唯一能在你游戲圖像中獲取透明度的方法。查看你游戲引擎的文檔來(lái)找出它是如何默認(rèn)嘗試處理 alpha 通道的,在你不確定的時(shí)候,嘗試讓你的游戲引擎來(lái)自動(dòng)偵測(cè)圖像中透明度,然后再去編輯它。有時(shí),你游戲引擎的預(yù)期值和你圖像的預(yù)設(shè)值恰巧匹配,那么你就可以直接獲取透明度,而不需要做任何額外的工作。
不過(guò),當(dāng)這些嘗試都失敗時(shí),嘗試一下色鍵。它為電影業(yè)工作了將近 100 年,它也可以為你工作。