~■はじめにBBXで、「フォトショップの色相変化のように、テクスチャの模様を壊さずに色を変更させたいのです。」という質問があったので検証してみました。一度RGB成分をHSVに変換して、Hをずらした後、RGBに戻します。今回のアプリケーションでは、時間に応じて色相の変化量を変えています。「t-pot」の文字を虹のグラデーションで書いているのですが、この部分はスクロールします。いつものようにプログラムです。2_0])カーソルキーで、カメラが回ります。ソースには、いつものように適当にファイルが入っています。大事なファイルは次のものです。シェーダプログラム■HSV色座標系HSV色座標系とは、比較的理解しやすい、色の表現方法の1つです。HSV色座標系では、色はH(Hue/色相)、S(Saturation/彩度)、V(Value/明度)で表現されます。色相とは、赤、黄、緑、シアン、青、マゼンタを周期的につなげた輪のような構造(色相環)をしており、色合いを表現します。彩度とは、色の鮮やかさのことです。彩度を上げればより派手な色になり、彩度を下げれば鮮やかでない白色に近くなります。明度とは、色のもつ明るさの度合のことです。明度が高いほど明るい色になり、低ければ暗い色になります。■プログラムRGB色座標系からHSV色座標系への変換は色々なところに落ちているので、C言語のものをぱくって改良して使いましょう。元になる色ですが、デカールテクスチャの色を使います。変数「rgb」に変換する色を格納しておきます。元になる色RGBからHSVへの変換は、一番強い色をV値に、色の差を正規化したものをS値にします。H値は、一番強い色から別の色への距離として求められます。本来は、S値が0のときは、色味が無いので、H値には色実が無いことを表す「NO_HUE」を割り当てるのが普通ですが、今回はどうでもいいのでその処理は省きます。今回は、H、S、V各色共に0~1の間に正規化しました。}次に、まぁそのままではつまらないので、加工してみましょう。H値を適当に動かして、一様に色合いを変えて見ます。1.0;HSVからRGBへの逆変換もよく知られていて、そのまま実装してみます。}今回は、最終的に求められた色をシェーディング色とみなしてライティングして出力します。}■最後にやる前は命令数とかたらないのかなぁと思っていたのですが、意外と実現できますね。プログラムの長さの割りにできることはたいしたことが無いので、あまり使わないと思いますが...もどるimagire@gmail.com。