セカCHU☆

SecondLifeのこと

絶対遵守の力作成その2

2008年06月26日 04時01分44秒 | セカンドライフのものづくり
Newmew Skinstadが命じる、
3の倍数はアホになって、5の倍数で犬っぽくなーれ!


ギアス発動をHUDにしたよ。
目をclickだと押しにくいもんね。
HUDから目の通信は、llSayとllListenを使ってるよ。
だけどHUDをclickした時にどうしてもそっち向いちゃう。どうにかならないかなぁ。

仕組みとしては、llSetTextureAnimしてるだけ。
だけどこの命令って、いろんなトコで書かれてるけど、みんな使ってないのかな、最初は上手く動きませんでした。
ループするアニメはすぐ動くんだけどね、
ループしないアニメにすると、とたんに上手く動かなくなっちゃいます。
touchイベントでllSetTextureAnimを使って、左clickしても。。。

全然アニメがスタートしてくれないの

なのに、右clickでパイメニューを開くとアニメがスタートするんだよ?
おかしいよー。

それでイロイロ実験した結果、
llSetTextureAnimをオフしておかないと、次に実行した時にうまくアニメしてくれないみたい
もちろん、ループするアニメはオフしなくてもちゃんと動くよ。
llSetTextureAnimのパラメータはいろんな所で説明されてるけれど、オフの仕方を書いてくれてる所はほとんど無いみたい。
オフは、パラメータにFALSEを指定すればいいよ。

llSettextureAnim(FALSE, 0, 0, 0, 0, 0, 1.0);

こう書くの。
FALSEってパラメータの説明がどこにもないっていう事は、みんなループアニメしか使ってないってことだよね
最初のアニメを動かした後にちゃんとオフすれば、次実行した時のアニメもきちんと動いてくれたよー。

右clickでアニメが再スタートしちゃうのは謎のまんまです

llSetTextureAnimの後にllSetTextureしたほうがいいみたい
llSetTextureAnimの実行時間は0秒、だけどllSetTextureには0.2秒かかっちゃう。
先にllSetTextureでパラパラアニメのtextureを読み込むと、アニメの全コマが0.2秒だけ表示されちゃうんだよね。
だけど順序を逆にして、llSetTextureAnimしてからllSetTextureすると、きれいにアニメがスタートするよ

llSetTextureAnimは他の人と見えてるのが一緒じゃないみたい
llSetTextureAnimはサーバじゃなくってローカル処理らしいよ。
だからサーバの負荷はぜんぜんないの。
けどローカルなので、人によって見えてるものとかタイミングが違ってるかも。



とりあえずギアスアニメは出来ましたぁ。
今は普通のシリンダー(ギアスの紋章アニメ)と、薄い球(黒目アニメ)を組み合わせてて、ほぼ平面なコンタクトになってます。
正面から見れば普通に見えるけれど、
ちょっとナナメから見ると浮いちゃってる。。。
ギアスアニメも球にしちゃうと、テクスチャが歪んじゃうんだよねー
なにかいい解決方法ないかなぁ。

絶対遵守の力作成中

2008年06月23日 20時36分07秒 | セカンドライフのものづくり
Newmew Skinstadが命じる、
あの着物買って!


という感じのものを作ってまぁす
今はまだギアスアニメの実験中で、ポーズとか音とか入ってません。
完成版で考えてるのは、

HUDを押したときに「○○が命じる」って発言と、
きゅいーんっていう効果音と、
左手をさっと掲げるポーズを発動させたいな

ギアスを相手に飛ばせるのもアリだけど、
結局相手に「イエス、ユアハイネス!」って言わせたり、
目を赤く光らせたりは出来ないから、
命じた後はオーナーさんのおまかせっていう事でっ

今、時間があんまり取れないから、出来るのずーっと後になっちゃうかも


p.s.
お引越しの関係で、7月からしばらくの間はオフラインになってしまいます・・・

最近ハマってること

2008年06月10日 04時03分43秒 | セカンドライフのできごと
dotでお絵かきしています
これはパフェのつもりだったんだけど・・・ゴチャゴチャしてきて失敗作です。



最近dot絵を描く装置があるのを知ってから、よくこれを使って遊んでます。
機械は3つだけど、描いた絵はちゃんと保存することができて、internetからでも見ることができるよ


面積が小さくて難しそうに見えるけれど、じつは広いほうが逆に難しいのがdot絵なの。
描くものによってはとっても簡単で、上手(そう)に見えるのをいきなり描いちゃうことだってできるよ。

描くのが簡単なものは
 ・形が単純なもの
 ・色数が少ないもの
 ・形からすぐに連想出来ちゃう誰でも知ってるもの
逆はとっても難しくなっちゃう
 ・形が複雑なもの
 ・とてもカラフルなもの
 ・形だけでは何か分からないようなもの
は、難しい上に伝わりにくいから、私は最初から描こうとしないんだー
例えばね、乾電池は簡単だけど、ボタン電池は難しい。だって連想しにくいもん。

おんなじように、白い楕円を描けば。。。
誰が見てもタマゴを連想しちゃう。
タマゴって1度思うと、どんなふうに円を描いててもタマゴに見えてきちゃう
さらにっ
タマゴって大体ニワトリのタマゴを想像するよね。だから
白い半円(ギザギザならもっとGood)から黄色いお顔が覗いてたら。。。
それがどんなに形を省略されててもひよこに見えちゃうw
ぜんぜんひよこの形してないのにねー
これが茶色いお顔で地面から出てたら、もぐらを連想しそうだよね。
こんな感じで、細かく描けないところは見る人の想像力を使っちゃえばいいと思うの
私は、dot絵の題材を決めたときには、もう半分出来が決まっちゃうって思ってるよ。

そして、あとの半分は、ちょこちょこした表現かな。

似た色同士を近くに置いてグラデーション(アンチエイリアス)を付けるとか、
光と影を付けただけで上手そうに見えるとか、
まっすぐじゃなくて、少しナナメに描いてみると途端にすごく上手そうに見えるとか
うん、全部見掛け倒しのテクニック

プロの人なら決められた物を枠内に描ききるんだろうけど、私プロじゃないし、気持ちよく描けたらそれでいいもんね
やっぱり絵描くのって楽しーい

足跡ってこんなの?

2008年06月02日 01時00分12秒 | セカンドライフのすくりぷと
お友達から質問されたので、足跡発生装置を作ってみたよ


rez禁止のトコロでも使えるように、particleで作ってみたんだぁ。
一定時間ごとにparticleを出せばいいというのはスグ分かったんだけど、なかなか出した所に止まったままになるparticleが出来ません
webを探しても、あんまりそういうscriptの説明も無いみたい。うーん。
何時間かパラメータをいじってみて、原因判明
PSYS_SRC_ACCEL と PSYS_SRC_BURST_SPEED_MIN と PSYS_SRC_BURST_SPEED_MAX の数値を0にしても、PSYS_PART_FOLLOW_VELOCITY_MASKを指定してたらparticleが表示されないみたいだよ。
VELOCITY_MASKを指定すると、必ず動いてなきゃいけないようです。
どこにも書いてないけれど、排他パラメータだねこれって

出した位置で止まったままのscriptが出来れば、あとは左と右を一定間隔で出すだけだよね。
なるべく歩いたときに足元の高さをキープできるように、chestに箱を2つ装着して
最初に、右足scriptにだけsleep0.5秒入れてみたけれど、上手く均等に足跡が付きませんでした。
wearするのは同時のタイミングでも、scriptが動き始めるのは同時じゃないんだねー。
今回は安易にtimerイベント使っちゃったけど、もっと他にいい方法があるんじゃないかなぁ。

試作品はこんなふうになりました
欠点といえば、timerイベント使ってるから少し負荷を掛けちゃう事と、
particleは常に正面に見えちゃうから、地面に近い位置から見た時に影が立ってるように見えちゃう事かな。
それ以前に、足跡のしくみってこれで合ってたんでしょうか


ルートプリムの左足scriptだよ
float KANKAKU = 0.5;     // 1po ni kakaru jikan (sec)
integer NAGASA = 10;     // asiato nokoru jikan (sec)

integer NUM = 1;

default
{
    state_entry()
    {     
      llSetTimerEvent(KANKAKU);
    }
   
    timer(){
      llMessageLinked(NUM,NAGASA,"","");
      if (NUM == 1) {
          NUM = 2;
      } else {
          NUM = 1;
      }
    }
   
    link_message(integer sendnum,integer num, string str, key id){
        llParticleSystem(
        [  PSYS_PART_FLAGS , (  0 |
            PSYS_PART_INTERP_COLOR_MASK |
            PSYS_PART_INTERP_SCALE_MASK
            )
           ,PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE
           ,PSYS_PART_START_ALPHA, 1.0
           ,PSYS_PART_END_ALPHA, 1.0
           ,PSYS_PART_START_COLOR, <0.0, 0.0, 0.0>
           ,PSYS_PART_END_COLOR, <0.0, 0.0, 0.0>
           ,PSYS_PART_START_SCALE, <0.1, 0.1, 0.1> // particle ookisa
           ,PSYS_PART_END_SCALE, <0.1, 0.1, 0.1>   // particle ookisa
           ,PSYS_SRC_MAX_AGE, 0.5                      
           ,PSYS_PART_MAX_AGE, (float)num
           ,PSYS_SRC_ACCEL, <0,0,0>
           ,PSYS_SRC_ANGLE_BEGIN, PI
           ,PSYS_SRC_ANGLE_END, PI
           ,PSYS_SRC_OMEGA, <0.0, 0.0, 0.0>
           ,PSYS_SRC_BURST_PART_COUNT, 1    // asiato kazu(ikutu?)
           ,PSYS_SRC_BURST_RATE, 1.0        // asiato kankaku(nan byou?)
           ,PSYS_SRC_BURST_SPEED_MIN, 0.0
           ,PSYS_SRC_BURST_SPEED_MAX, 0.0
           ,PSYS_SRC_TEXTURE,"asiato-dogL"  // asiato texture namae
        ]);
    }
}

右足scriptだよ
default
{
    state_entry()
    {

    }
   
    link_message(integer sendnum,integer num,string str, key id){
        llParticleSystem(
        [  PSYS_PART_FLAGS , (  0 |
           PSYS_PART_INTERP_COLOR_MASK |
           PSYS_PART_INTERP_SCALE_MASK
           )
          ,PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE
          ,PSYS_PART_START_ALPHA, 1.0
          ,PSYS_PART_END_ALPHA, 1.0
          ,PSYS_PART_START_COLOR, <0.0, 0.0, 0.0>
          ,PSYS_PART_END_COLOR, <0.0, 0.0, 0.0>
          ,PSYS_PART_START_SCALE, <0.1, 0.1, 0.1> // particle ookisa
          ,PSYS_PART_END_SCALE, <0.1, 0.1, 0.1>   // particle ookisa
          ,PSYS_SRC_MAX_AGE, 0.5                      
          ,PSYS_PART_MAX_AGE, (float)num
          ,PSYS_SRC_ACCEL, <0,0,0>
          ,PSYS_SRC_ANGLE_BEGIN, PI
          ,PSYS_SRC_ANGLE_END, PI
          ,PSYS_SRC_OMEGA, <0.0, 0.0, 0.0>
          ,PSYS_SRC_BURST_PART_COUNT, 1   // asiato kazu(ikutu?)
          ,PSYS_SRC_BURST_RATE, 1.0       // asiato kankaku(nan byou?)
          ,PSYS_SRC_BURST_SPEED_MIN, 0.0
          ,PSYS_SRC_BURST_SPEED_MAX, 0.0
          ,PSYS_SRC_TEXTURE,"asiato-dogR"  // asiato texture namae
        ]);
    }
}

scriptここまでー