2008年06月18日
ランダム 3D モンドリアン - Randrian
掲題のようなものを作ろうと思った
-----
rez したものをリンクしようとも思ったのだが というか リンクの機能を試してみたかったんだが
-----
案外リンクするのって面倒そうだったので やっぱり 臨時オブジェクトにし 1分毎に rez し直す事にした
-----
後 ウェアして 自動生成するアクセサリみたいなことも考えたが パーミッションの加減で だめそうだなとか
-----
で こんな感じになった
-----
-----
-----
まあ ちょっとした 飾りとしては使えるかな w
-----
作り方は ほとんど ヒルベルトと同じ
-----
キューブな臨時オブジェクト(でファントムなもの)をコンテンツに入れておき それを rez する
-----
キューブにはスクリプトを入れておき それにより rez 時に ランダムに サイズ 色 アルファ 輝き を設定する
-----
で それを特定の個数 ランダムな位置に rez する
-----
キューブな臨時オブジェクトの中に入れておくスクリプトがこれ
適当なプリムに入れ キューブな臨時オブジェクトを バラバラと rez するスクリプトがこれ
-----
rez したものをリンクしようとも思ったのだが というか リンクの機能を試してみたかったんだが
-----
案外リンクするのって面倒そうだったので やっぱり 臨時オブジェクトにし 1分毎に rez し直す事にした
-----
後 ウェアして 自動生成するアクセサリみたいなことも考えたが パーミッションの加減で だめそうだなとか
-----
で こんな感じになった
-----
-----
-----
まあ ちょっとした 飾りとしては使えるかな w
-----
作り方は ほとんど ヒルベルトと同じ
-----
キューブな臨時オブジェクト(でファントムなもの)をコンテンツに入れておき それを rez する
-----
キューブにはスクリプトを入れておき それにより rez 時に ランダムに サイズ 色 アルファ 輝き を設定する
-----
で それを特定の個数 ランダムな位置に rez する
-----
キューブな臨時オブジェクトの中に入れておくスクリプトがこれ
//
// File: cube.lsl
// Date Author number of nodes
// 2008/6/18 walkinglint 8
//
default {
on_rez(integer param) {
vector scale;
scale.x = llFrand(1.0) * 0.1;
scale.y = llFrand(1.0) * 0.1;
scale.z = llFrand(1.0) * 0.1;
llSetScale(scale);
vector color;
color.x = llFrand(1.0);
color.y = llFrand(1.0);
color.z = llFrand(1.0);
llSetColor(color, ALL_SIDES);
llSetAlpha(llFrand(1.0), ALL_SIDES);
llSetPrimitiveParams([25, ALL_SIDES, llFrand(1.0) * 0.1]); // too bright
}
}
適当なプリムに入れ キューブな臨時オブジェクトを バラバラと rez するスクリプトがこれ
//タッチすると rez しだすようにしてある
// File: randrian.lsl
// Date Author number of nodes
// 2008/6/18 walkinglint 13
//
integer i;
integer num_of_box = 50;
float range = 0.5;
float distance = 0.7;
default {
state_entry() {
llSetTimerEvent(0.0);
}
on_rez(integer param) {
llResetScript();
}
touch_start(integer total_number) {
for (i = 0; i < num_of_box; i++) {
llRezObject("cube", llGetPos() + <0.0, 0.0, distance>
+ <(llFrand(1.0) - 0.5) * range, (llFrand(1.0) - 0.5) * range, (llFrand(1.0) - 0.5) * range>,
ZERO_VECTOR, ZERO_ROTATION, 0);
}
llSetTimerEvent(60.0);
}
timer() {
for (i = 0; i < num_of_box; i++) {
llRezObject("cube", llGetPos() + <0.0, 0.0, distance>
+ <(llFrand(1.0) - 0.5) * range, (llFrand(1.0) - 0.5) * range, (llFrand(1.0) - 0.5) * range>,
ZERO_VECTOR, ZERO_ROTATION, 0);
}
}
}
Posted by walkinglint at 20:12│Comments(0)
│walking のスクリプティング講座