ColorChangeScript (RGB調整)

こんばんは、なつです。
Scriptのお話の前にちょっと前説を^^

サイドバーにも、リンク貼らせて頂いてますが、
SL Fashion Divaさんfri.-Tabsって髪がバーゲン中の情報をゲットして、速攻で購入^^

090908-1
で、この髪フード付きで、friでは、このフードと同色の服も売ってるんですけど、
人と同じになるのが、いやなんで^^
別のお店の服を合わせたんですけど、
当然、色が合いません><

この髪のフードは「タッチ→ダイアログ」で12色のカラーチェンジが出来るスクリプトが入ってますが、
同じ黒でも、微妙に違います(当然ですけど)
微調整は、編集可能なので、編集画面からできますけども~

ちょっと、自作のスクリプトを組み込みました^^
スクリプトは下に書きますが、
この髪は、元からのスクリプトが入っているので、
今回のスクリプトは、
髪の選択しといて編集画面を出して、リンクパーツ単体で編集できるようにしといて、
フードのパーツの中に組み込みます。

こうすると、髪の毛の部分をタッチすると、元からのダイアログが出て、
フードをタッチすると新しいダイアログがでます。

新しいダイアログってのは、これです
090909-1

メッセージの部分のCOLOR RGB = <___,___,___>は、その都度のRGB値が表示されます。
「WHITE」、「GRAY」、「BLACK」は、プリムカラーを
<1.0,1.0,1.0>、<0.5,0.5,0.5>、<0.0,0.0,0.0>にします。
強制的に、黒、ねずみ色、白にしちゃいます。

「default」は、
ダイアログを開いた時のRGB値に戻します。

「RGB+」と「RGB-」は、
R、G、Bを0.01単位で3つ共、プラス(マイナス)します。
色の濃さ調整として使います。

「R+」、「R-」は、
赤のプラス(マイナス)、

「G+」、「G-」は、
緑のプラス(マイナス)、

「B+」、「B-」は、
青のプラス(マイナス)、をそれぞれ個別で0.05づつ変化させます。

それぞれ、最大値=1.0、最小値=0.0なので、
090909-2
↑これは、Rが最大値(1.0)になった状態です。
「R+」のボタンが、「R maximum」になってます(もう足せませんってことです^^)
尚且つ
「RBG+」のボタンも、「RGB maximu」になって足せないようにしました。

こういう、色変更の仕方ってのは、あまり他の物に流用できそうもないですけど・・・^^
今回は、この髪のフードの色調整に特化したので、これでいいのかな>と思ってます。

編集画面から調整したほうが早くない?とか言わないの~><

あ、調整後↓
090909-3
大体、合ってるでしょ?^^服と。

じゃ、今日はこのへんで^^
スクリプトは、コメントとして追加します。

~ : dccxxiii : 2009年9月10日.

3件のフィードバック to “ColorChangeScript (RGB調整)”

  1. カールさん^^勝手にリンクして、勝手に記事引用してます^^
    いつも、みてますよ~更新楽しみにしてます~

  2. なっちゃんリンクありがと!

  3. float fx = 0.05;

    key toucher;
    integer LHandle;
    integer CHANNEL = -723723;

    string Rplus = “R+”;
    string Gplus = “G+”;
    string Bplus = “B+”;

    string Rminus = “R-”;
    string Gminus = “G-”;
    string Bminus = “B-”;

    string Dminus = “RGB-”;
    string Dplus = “RGB+”;

    list Colors = [Rplus, Gplus,Bplus, Rminus, Gminus, Bminus, Dminus, "default",Dplus,"WHITE","GRAY","BLACK"];//maximum minimum

    vector my_color;
    vector d_color;

    syoki(){
    Rplus = “R+”; Gplus = “G+”; Bplus = “B+”; Rminus = “R-”; Gminus = “G-”; Bminus = “B-”; Dminus = “RGB-”; Dplus = “RGB+”;

    if (my_color.x >= 1.0)
    {
    my_color.x = 1.0;
    Rplus = “R maximum”;
    }
    else
    {
    Rplus = “R+”;
    }

    if(my_color.x = 1.0)
    {
    my_color.y = 1.0;
    Gplus = “G maximum”;
    }
    else
    {
    Gplus = “G+”;
    }

    if(my_color.y = 1.0)
    {
    my_color.z = 1.0;
    Bplus = “B maximum”;
    }
    else
    {
    Bplus = “B+”;
    }

    if(my_color.z <= 0.0)
    {
    my_color.z = 0.0;
    Bminus = "B minimum";
    }
    else
    {
    Bminus = "B-";
    }

    if(my_color.x == 1.0||my_color.y == 1.0||my_color.z == 1.0)
    {
    Dplus = "RGB maximum";
    }
    else
    {
    Dplus = "RGB+";
    }

    if(my_color.x == 0.0||my_color.y == 0.0||my_color.z == 0.0)
    {
    Dminus = "RGB minimum";
    }
    else
    {
    Dminus = "RGB-";
    }

    Colors = [Rplus, Gplus,Bplus, Rminus, Gminus, Bminus, Dminus, "default",Dplus,"WHITE","GRAY","BLACK"];
    Menu();
    }

    Menu(){
    llDialog(llGetOwner(), "Select command \n ==========================\nCOLOR RGB = " + (string)my_color+"\n==========================", Colors, CHANNEL);
    llSetTimerEvent(30);
    }

    default
    {
    state_entry()
    {
    LHandle = llListen(CHANNEL, "", llGetOwner(), "");
    llListenControl(LHandle, FALSE);

    }
    changed(integer change)
    {
    if(change & CHANGED_OWNER)
    {
    llResetScript();
    }
    }
    touch_start(integer total_number)
    {
    toucher = llDetectedKey(0);
    if(toucher == llGetOwner())
    {
    d_color = llGetColor(ALL_SIDES);
    my_color = d_color;
    llListenControl(LHandle, TRUE);
    llDialog(llGetOwner(), "Select command \n ==========================\nCOLOR RGB = " + (string)my_color+"\n==========================", Colors, CHANNEL);
    llSetTimerEvent(30);
    }
    }
    listen(integer channel, string name, key id, string message)
    {
    if(message == "R+")
    {
    my_color.x = my_color.x + fx;
    }
    else if(message == "G+")
    {
    my_color.y = my_color.y + fx;
    }

    else if(message == "B+")
    {
    my_color.z = my_color.z + fx;
    }
    else if(message == "R-")
    {
    my_color.x = my_color.x – fx;
    }
    else if(message == "G-")
    {
    my_color.y = my_color.y – fx;
    }
    else if(message == "B-")
    {
    my_color.z = my_color.z – fx;
    }
    else if(message == "RGB-")
    {
    my_color = my_color – ;
    }
    else if(message == “RGB+”)
    {
    my_color = my_color + ;
    }
    else if(message == “default”)
    {
    my_color = d_color;
    }
    else if(message == “WHITE”)
    {
    my_color = ;
    }
    else if(message == “GRAY”)
    {
    my_color = ;
    }
    else if(message == “BLACK”)
    {
    my_color = ;
    }

    syoki();
    llSetColor(my_color,ALL_SIDES);
    //llSetText((string)my_color,,1.0);
    //Menu();
    llSetTimerEvent(30);
    }
    timer()
    {
    llSetTimerEvent(0);
    llListenControl(LHandle, FALSE);
    }
    }

コメントする