ソラマメブログ

2008年12月20日

色変更(スクリプト)

さむいですね>< こんばんは、なつです。

色変更スクリプト最近では、色んな物に入ってて、もはや当たり前?のような気もしますけど、
初めてみた時は、驚きました^^ 「い、色がかわる~」って。

え~私の時計も微妙にHUDから色変ります。

色変更も色々な方法があるようです、たとえば、テクスチャを変えてしまう方法とか・・・いろいろ^^
私の場合は、テクスチャはそのままで、その上からプリムの色変更をかけてます。

造る時は、テクスチャを貼って、プリム色を白で作っていきます。

HUDからの信号は、色パターン1、色パターン2、色パターン3・・・と、大まかな段階の信号だけで、
時計側で、色パターン1の時は、ダイヤル部分は、この色合い、チェーン部分はこの色合い・・・
と、親プリム内のスクリプトが、子プリムに対して命令してます。

で、問題なのは、作ってる途中の段階です。
総数100プリム200プリムもあるのを、それぞれ編集画面で色を変えてチェック?とんでもないです><
想像するだけで、おそろしい~

でも、数個だけ色変えても、イメージつかめないし・・・

そこで、秘密兵器↓
色変更(スクリプト)
簡易版色変更リモコン^^

私の時計は、HUDからの信号の聞き耳を立ててるので、そこに直接RGBのVector型のデーターを送って
色合いの変化を見ます。

文字ボタンで、変更箇所を選択して、色変更ボタン(赤UP、赤DOWN、緑UP、緑DOWN、青UP、青DOUN)で、
色を変えます。
フローティングテキストで、色合いのデータ→<0.05、0.95、0.2>とか出るので、それをメモして、
時計の親プリムのスクリプトに写します(ココは手作業・・・問題あり?)

このリモコンのスクリとか、時計のスクリプトは、ちょっと公開できませんので・・・

こんなのを造ってみました↓
色変更(スクリプト)

手前のがリモコン(簡易版)、奥の球がターゲット(非リンク)です。
やることは、最初のリモコンと同じですが、機能は最小限にしてます。
リモコンの楕円の白が、親プリムです。親プリムスクリプトは、これに入れます。
その他のプリムは、スクリプトなしです。

ただ、ボタンプリムには、下記の名前を付けます。
赤の濃いボタン=red_up
赤の薄いボタン=red_down
緑の濃いボタン=green_up
緑の薄いボタン=green_down
青の濃いボタン=blue_up
青の薄いボタン=blue_down
これ、間違うと動きません><

---------------------リモコン親プリムのスクリプト-----------------ここから-----------------------------
vector c;
integer CHANNEL = -723;

default
{

touch_start(integer total_number)
{

string prim_name = llGetLinkName(llDetectedLinkNumber(0));

if(prim_name == "red_up"){
c.x = c.x + 0.05;
}
else if(prim_name == "red_down"){
c.x = c.x - 0.05;
}
else if(prim_name == "green_up"){
c.y = c.y + 0.05;
}
else if(prim_name == "green_down"){
c.y = c.y - 0.05;
}
else if(prim_name == "blue_up"){
c.z = c.z + 0.05;
}
else if(prim_name == "blue_down"){
c.z = c.z - 0.05;
}

if(c.x > 1)c.x = 1;
if(c.x < 0)c.x = 0;
if(c.y > 1)c.y = 1;
if(c.y < 0)c.y = 0;
if(c.z > 1)c.z = 1;
if(c.z < 0)c.z = 0;

llSetText((string)c, <1,1,1>, 1.5);
llSetColor(c,ALL_SIDES);
llRegionSay(CHANNEL,(string)c);


}
}

---------------------リモコン親プリムのスクリプト-----------------ここまで-----------------------------

解説;
vector c; は、最初に宣言してますけど、タッチイベント内でいいと思いますけど、今後の拡張にため、ここでしてます。

もう、要はタッチされた時につきますが、
タッチされた時に、どのボタンが押されたか?をボタンプリムの名前から判断して、
たとえば、赤の濃いボタン(red_up)なら、c.x = c.x + 0.05;

c.x は、vector c の中の最初の部分・・・・・ vector c = c.x , c.y , c.z となってるらしいです^^

c.x = c.x + 0.05 c.xに0.05を足して、c.xの新しい数値にするって事ですが、
これは、ちょっとややこしい書き方ですけど、私は分かりやすいので、こう書いてます。

if(c.x > 1)c.x = 1;
if(c.x < 0)c.x = 0;
if(c.y > 1)c.y = 1;
if(c.y < 0)c.y = 0;
if(c.z > 1)c.z = 1;
if(c.z < 0)c.z = 0;
この部分もこれでいいのか?って書き方ですけど、動いてるからいいのかな?
とにかく、各値が、0~1の間からはみ出ないようにしてるだけです。

後は簡単、
llSetText((string)c, <1,1,1>, 1.5); は、フローティングテキストで、数値表示
llSetColor(c,ALL_SIDES); は、楕円の親プリムの色を変える(見本ですね)
llRegionSay(CHANNEL,(string)c);  ターゲットに数値を文字として、送信

です。



--------------------ターゲットプリムスクリプト----------------------ここから------------------------------
integer LHandle;
integer CHANNEL = -723;

default
{
state_entry()
{
LHandle = llListen(CHANNEL, "", "NULL_KEY", "");
}

listen(integer channel, string name, key id, string message)
{
llSetColor((vector)message,ALL_SIDES);
}
}
--------------------ターゲットプリムスクリプト----------------------ここまで------------------------------

こっちは、もう説明なしでもいいぐらいですよね^^
送られたきた文字列をvector型の数値に直して、自分自身の色を変える
です。

毎回ながら、ですけども、当然このままでは、な~んの使い道もない物ですけど、
機能拡張したり、何かに組み込んだりして、おもちゃとか作れる方は、どぞ、試してみてください。

すごく乱暴なスクリプトになってますので、実用される場合は、よく吟味してご使用くださいませ。
(これ、使う人はいないと思うけど・・・^^

さて、宣伝させてください~

これ↓
色変更(スクリプト)

タッチでこう↓
色変更(スクリプト)

鬼プリム竜頭↓
色変更(スクリプト)

装着位置はここ↓
色変更(スクリプト)
ふとももです^^

なんだこれ?ですよね~ これが当然の反応だと思います^^

以前、懐中時計に付いて色々調べて、気になる記事を見つけました。
覚えてる範囲で・・・・

「1930年代前半の飛行機乗りの人たちのお話・・・
当時の飛行機にも時計は装備されてたそうですけど、多くの飛行機乗りは、それでも自分の信頼できる相棒
(懐中時計のことですね)と飛行機に乗り込んだそうです。

そんな飛行機乗りたちの中に、狭い操縦席でグローブをした手で、ポケットから懐中時計が出しにくい!
って人が、自分の懐中時計に鉄板を溶接して、それに紐を付けて太ももに巻いた・・・らしい」

残念ながら、写真とかの資料を見つけれなかったし、
まさか、紐を付けた懐中時計もあれだし~
で、ほぼ、想像で作って見ました。

普通のプリムだけで、無骨な感じを出してみました^^

飛行機乗り専用・・・それも、古い時代の・・・・
また、売れないんだろうな~><

販売できるようになったら、また、お知らせします~

では、今日はこの辺で、おやすみなさいm(__)m






同じカテゴリー(商品開発秘話(スクリプト、プリムなど))の記事画像
普通のプリム?スカルププリム?の続き
普通のプリム?スカルププリム?
心が折れた・・・><
作業進行状況
色変更スクリプト(RGB微調整)
もうすぐ発売
 普通のプリム?スカルププリム?の続き (2009-12-09 15:58)
 普通のプリム?スカルププリム? (2009-12-07 20:44)
 心が折れた・・・>< (2009-10-28 15:48)
 作業進行状況 (2009-09-21 21:59)
 色変更スクリプト(RGB微調整) (2009-09-11 03:11)
 もうすぐ発売 (2009-09-07 00:51)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。