1

我正在编写一个工具来帮助将新角色改装到游戏十字军之王 II 中,但我有点坚持给头发和胡须上色。

游戏以这样的纹理开始:


(来源:serayen.com

然后将其与三种颜色混合——阴影、底色和高光,例如:

  • 黑暗:10、10、10
  • 基数:125、85、56
  • 亮点:255、255、255

结果是:


(来源:serayen.com

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

4

1 回答 1

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

或类似的东西。希望这可以帮助。

于 2012-04-18T16:46:33.273 回答