2012-04-18 108 views
1

我正在寫一個工具來協助將新角色改裝成遊戲「十字軍國王II」,而且我有點卡住染髮和鬍鬚。如何混合這樣的顏色?

遊戲開始有這樣的結構:

http://serayen.com/ck2/bearduncoloured.png

它然後用三種顏色混合它 - 一個影子,一個基地,一大亮點,如:

  • 黑暗:10,10,10
  • 基數:125,85,56
  • 突出顯示:255,255,255

導致此:

http://serayen.com/ck2/beardcoloured.png

是用什麼樣的相融?我將如何去在C#中做這件事?

+0

作爲一種猜測,我會說它正在執行色彩倍增,根據像素的整體強度選擇三種顏色中的哪一種來增加像素,可能是使用三者之間的線性插值。除非您知道構成用於乘法的深色,基礎或高亮像素的閾值,否則您會難以正確地複製該內容。 – 2012-04-18 16:37:51

回答

0

決定這是一個完整的答案,因爲這裏更容易格式化和提供示例。

作爲一種猜測,我會說它正在執行色彩倍增,根據像素的整體強度選擇三種顏色中的哪一種來增加像素,可能是使用三者之間的線性插值。除非您知道構成用於乘法的深色,基礎或高亮像素的閾值,否則您會難以正確地複製該內容。

所以,我認爲他們的算法是:

(pixel(x,y).color * dark.color * THRESHDARK - min(pixel(x,y).intensity, THRESHDARK) //dark blending + 
(pixel(x,y).color * base.color * (pixel(x,y).intensity - THRESHDARK)/(THRESHLIGHT-THRESHDARK)) //middle blending + 
(pixel(x,y).color * highlight.color * pixel(x,y).intensity - THRESHLIGHT) //light blending 

或類似的東西。希望這可以幫助。

+0

如果這個乘法與Photoshop的效果相似,那麼它會比遊戲結束時更暗一些。另外,該例子中的像素強度是多少?我試圖在程序中實現,但無法弄清楚它是什麼。 – Measter 2012-04-20 09:19:13

+0

對不起,這是更多的猜測。正如我所說,由於權重等原因,要完美地重現它們的價值將非常困難,但是您可能會接近試驗和錯誤。在那個例子中,像素的強度是通過對該像素處的r,g和b分量的值進行平均來計算的。由於眼睛以不同的方式獲取光線,所以獲得像素強度有一些更好的方法,但簡單的平均值是一個很好的開始 – 2012-04-25 10:57:45