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