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
色変更スクリプト最近では、色んな物に入ってて、もはや当たり前?のような気もしますけど、
初めてみた時は、驚きました^^ 「い、色がかわる~」って。
え~私の時計も微妙に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
Posted by natu(DCCXXIII) at 03:58│Comments(0)
│商品開発秘話(スクリプト、プリムなど)