1

ゲーム「クルセイダーキングスII」に新しいキャラクターを改造するのに役立つツールを書いていますが、髪の毛やあごひげの色付けに少しこだわっています。

ゲームは次のようなテクスチャで始まります。


(出典:serayen.com

次に、シャドウ、ベース、ハイライトの3色とブレンドします。

  • ダーク:10、10、10
  • ベース:125、85、56
  • ハイライト:255、255、255

その結果、次のようになります。


(出典:serayen.com

どんなブレンドを使っていますか?C#でそれを行うにはどうすればよいですか?

4

1 に答える 1

0

ここで例をフォーマットして提供する方が簡単なので、これを完全な回答にすることにしました。

推測として、おそらく3つの間の線形補間を使用して、ピクセルの全体的な強度に基づいてピクセルを乗算する3つの色を選択して、色の乗算を実行していると思います。乗算のための暗い、ベース、またはハイライト ピクセルを構成するしきい値を知らない限り、これを正しく複製するのは難しいでしょう。

したがって、彼らのアルゴリズムは次のとおりだと思います。

(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 に答える