我如何混合这样的颜色?

时间:2012-04-18 16:19:40

标签: c# colors blending mixing

我正在编写一个工具,以协助将新角色修改为游戏“十字军国王II”,而且我有点卡在着色头发和胡须上。

游戏以这样的纹理开始:

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

然后将它与三种颜色混合 - 阴影,基底和高光,例如:

  • 黑暗:10,10,10
  • 基地:125,85,56
  • 突出显示:255,255,255

结果如下:

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

它使用什么样的混合?我将如何在C#中进行操作?

1 个答案:

答案 0 :(得分: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

或类似的东西。希望这会有所帮助。