我正在编写一个工具来帮助将新角色改装到游戏十字军之王 II 中,但我有点坚持给头发和胡须上色。
游戏以这样的纹理开始:
(来源:serayen.com)
然后将其与三种颜色混合——阴影、底色和高光,例如:
- 黑暗:10、10、10
- 基数:125、85、56
- 亮点:255、255、255
结果是:
(来源:serayen.com)
它使用什么样的混合方式?我将如何在 C# 中进行操作?
我正在编写一个工具来帮助将新角色改装到游戏十字军之王 II 中,但我有点坚持给头发和胡须上色。
游戏以这样的纹理开始:
(来源:serayen.com)
然后将其与三种颜色混合——阴影、底色和高光,例如:
结果是:
(来源:serayen.com)
它使用什么样的混合方式?我将如何在 C# 中进行操作?
决定将其作为完整的答案,因为它更易于格式化并在此处提供示例。
作为一种猜测,我会说它正在执行颜色乘法,根据像素的整体强度选择三种颜色中的哪一种来乘以像素,可能使用三者之间的线性插值。除非您知道构成乘法的暗像素、基本像素或高光像素的阈值,否则您将很难正确复制它。
所以我假设他们的算法是:
(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
或类似的东西。希望这可以帮助。