2007年10月22日
LSL スクリプティングの勘所
噴水のプログラム(/スクリプト)を作ったわけだけれど
-----
これ 1つ読めば LSL のスクリプトのかなりの部分を勉強できるな
-----
と思った
-----
とりあえずざっと思うだけで
-----
- 配列がないのでリストを扱わなくてはいけないんだけど その扱い方
- 多次元のリストはないので 1次元のリストで 2次元のリストをシミュレートする方法
- ダイアログの使い方(クリックで表示させたり)
- タイマーの使い方
- 文字列の使い方(比較は == で OK)
- リンクされたプリム間通信の方法
- プリム内に複数のスクリプトが存在する例
- パーティクル
- まあ普通に ループ とか 条件判断 とか 関数 とか
-----
とりあえず こんな所か
-----
これまで他に どれで どんな機能を使ってきたかな と思うに
-----
翼で
-----
- フレキシブルなもの(というかリンクされたもの)を回転させる方法(ドアとか作るのにすぐ応用可能)
- リンクされてないプリム間通信(チャネルを指定して llSay を使う)
-----
EndlessFall で
-----
- 臨時(/一時)オブジェクトの使い方
- 物理オブジェクトの使い方
-----
Kotoba EndkessFall で
-----
- チャットを聞く方法
-----
Action Bracelet で
-----
- ノートの内容を読み込む方法
- アクションを起動する方法(パーミッションの取得)
-----
後 カスタマイズしただけだけど SteamBit を拡張する中で
-----
- アバターの存在を調べる方法
- 物理なオブジェクトを動かす方法
- リストを使ってメンバー管理する方法
-----
後 これもカスタマイズしただけだけど チョコボで
-----
- 物理でない(/一時的に物理でなくした)オブジェクトを動かす方法
-----
後 形にはしてないけど 音の出し方とかは試したことがある
-----
プログラミングというか スクリプティングは 本を読んでても身につかなくて 実際になにか作ってみると分かってくるなと いつも思う...
-----
ちょっと作ろうとすると すっごくつまらない所で ひっかかったりするからね ^^
-----
この先 銃 とか 乗り物 とか あると思うんだけど どうかなあ... ボートみたいなのはカスタマイズしたことがあるけど そこまで 手を広げる必要はないような気はする... というか正直 手におえそうになく思ってるだけだが... あはは
-----
それより パーティクルラボの あれ どうしてるんだろう と思う... 今 見たら 見切れるだろうか...
-----
これ 1つ読めば LSL のスクリプトのかなりの部分を勉強できるな
-----
と思った
-----
とりあえずざっと思うだけで
-----
- 配列がないのでリストを扱わなくてはいけないんだけど その扱い方
- 多次元のリストはないので 1次元のリストで 2次元のリストをシミュレートする方法
- ダイアログの使い方(クリックで表示させたり)
- タイマーの使い方
- 文字列の使い方(比較は == で OK)
- リンクされたプリム間通信の方法
- プリム内に複数のスクリプトが存在する例
- パーティクル
- まあ普通に ループ とか 条件判断 とか 関数 とか
-----
とりあえず こんな所か
-----
これまで他に どれで どんな機能を使ってきたかな と思うに
-----
翼で
-----
- フレキシブルなもの(というかリンクされたもの)を回転させる方法(ドアとか作るのにすぐ応用可能)
- リンクされてないプリム間通信(チャネルを指定して llSay を使う)
-----
EndlessFall で
-----
- 臨時(/一時)オブジェクトの使い方
- 物理オブジェクトの使い方
-----
Kotoba EndkessFall で
-----
- チャットを聞く方法
-----
Action Bracelet で
-----
- ノートの内容を読み込む方法
- アクションを起動する方法(パーミッションの取得)
-----
後 カスタマイズしただけだけど SteamBit を拡張する中で
-----
- アバターの存在を調べる方法
- 物理なオブジェクトを動かす方法
- リストを使ってメンバー管理する方法
-----
後 これもカスタマイズしただけだけど チョコボで
-----
- 物理でない(/一時的に物理でなくした)オブジェクトを動かす方法
-----
後 形にはしてないけど 音の出し方とかは試したことがある
-----
プログラミングというか スクリプティングは 本を読んでても身につかなくて 実際になにか作ってみると分かってくるなと いつも思う...
-----
ちょっと作ろうとすると すっごくつまらない所で ひっかかったりするからね ^^
-----
この先 銃 とか 乗り物 とか あると思うんだけど どうかなあ... ボートみたいなのはカスタマイズしたことがあるけど そこまで 手を広げる必要はないような気はする... というか正直 手におえそうになく思ってるだけだが... あはは
-----
それより パーティクルラボの あれ どうしてるんだろう と思う... 今 見たら 見切れるだろうか...
2007年10月29日
スクリプトな日々
暇な時間があると また 何か思いついたら スクリプト に手を入れてるんだが
-----
噴水も だいたい 思ったようになってきた
-----

-----
メニューで選択できる噴水パターンの定義部分... 色も選択できるようにし マクロで 複数一度に設定できることも確認...
-----
なんちゃって人工無能の方も 少しずつ...
-----
Gorodish という名前にして Gorodish 君がしゃべっているかのようにしようと...
-----
後 自分だけでなく 近くの人のチャットを聞くようにしてるので 英文 とかばらばら表示されてしまうと それまで記憶しようとするので それをブロックするために アルファベットだけの言葉は無視するようにしようと思ってるんだが
-----

-----
正規表現が使えれれば 簡単なんだけど ないみたい... 文字型 もないみたいなので 文字列で使える操作を調べてみたんだが いまいちわからない... とりあえずできればいいや というわけで こんなの... とりあえずできてるけど... あはは もっといい方法あるよね... ^^
-----
噴水も だいたい 思ったようになってきた
-----

-----
メニューで選択できる噴水パターンの定義部分... 色も選択できるようにし マクロで 複数一度に設定できることも確認...
-----
なんちゃって人工無能の方も 少しずつ...
-----
Gorodish という名前にして Gorodish 君がしゃべっているかのようにしようと...
-----
後 自分だけでなく 近くの人のチャットを聞くようにしてるので 英文 とかばらばら表示されてしまうと それまで記憶しようとするので それをブロックするために アルファベットだけの言葉は無視するようにしようと思ってるんだが
-----

-----
正規表現が使えれれば 簡単なんだけど ないみたい... 文字型 もないみたいなので 文字列で使える操作を調べてみたんだが いまいちわからない... とりあえずできればいいや というわけで こんなの... とりあえずできてるけど... あはは もっといい方法あるよね... ^^
2007年11月27日
state_entry on_rez と attached
attached でフラグを設定すれば 装着されているかどうか分かるはずなんです
-----
論理的には(間違ってるかもしれないけど あはは)
-----
でも試して見るとどうにもうまくいかない(最初必ず装着されるとも限らないのでどこかで初期化は必要だし)
-----
暫くはでも いろいろ抵抗してみるわけです
-----
起動順を確認するために llOwnerSay を入れていろいろやってみたり
-----
でもそのうち ものごとのやりかたは一つではない とか
-----
どこかに必ずもっとシンプルなやり方が存在しているはず
-----
という重要な真理に行き着いたりするわけです
-----
そか llGetAttached で 0 かどうかを調べればいいのか
-----
ということを知ってしまえば そういう厄介な問題はどうでも良くなります
-----
モード(/ステート)は分かりにくさの元だよなあ... みたいな...
-----
そうそう 逆引き本欲しいなあ... したいことで引けるような
-----
論理的には(間違ってるかもしれないけど あはは)
-----
でも試して見るとどうにもうまくいかない(最初必ず装着されるとも限らないのでどこかで初期化は必要だし)
-----
暫くはでも いろいろ抵抗してみるわけです
-----
起動順を確認するために llOwnerSay を入れていろいろやってみたり
-----
でもそのうち ものごとのやりかたは一つではない とか
-----
どこかに必ずもっとシンプルなやり方が存在しているはず
-----
という重要な真理に行き着いたりするわけです
-----
そか llGetAttached で 0 かどうかを調べればいいのか
-----
ということを知ってしまえば そういう厄介な問題はどうでも良くなります
-----
モード(/ステート)は分かりにくさの元だよなあ... みたいな...
-----
そうそう 逆引き本欲しいなあ... したいことで引けるような
タグ :スクリプト
2008年02月04日
ダイアログの落とし穴
上のお家の庭の噴水が豪華になりました w
-----

-----

-----

-----
purin が 2つ組み合わせて違うパターンにすればいい というのを思いついたからなのですが ^^
-----
まあ 小さなコマンドを組み合わせて 必要な機能を実現するという意味では UNIX 哲学にも通じうるわけですが w
-----
で タイトルなんですが
-----
最初 一方のパターンをダイアログで選択すると他方も同じパターンになってしまったんです...
-----
なんでだろうと思ったわけですが
-----
LSLスクリプトTips集|ダイアログボックスを表示する|llDialog,llListen,llListenRemove
-----
を見てわけもわからずコーディングしてて ここのサンプルのように touch した時点で listen させてハンドルを後で削除するようなことをしてればよかったんだが
-----
そうしないで state_entry とかで listen させたりしていたのが敗因
-----
これだと 当然 123 チャネルを見てるだけなので 一方を設定すると他方も設定されてしまうわけなんです...
-----
で それはわりと直ぐ気が付いたので どうしようと思ったのですが touch したかどうかフラグを立てて フラグが立っていたら touch して ダイアログが表示されているというわけなので
-----
その場合だけ処理すればいいだろうと でまあ それでインプリもしていたのですが...
-----
でもそれっていまいち美しくないよな~ と思いまた調べていたら
-----
Makapu@BlackSheep-LSL:ダイアログを使おう(初級スクリプト第八回)
-----
にもサンプルが
-----
あ~ なるほど こうするのか~ listen で touch した人の UUID を渡すわけね というのと 前に気付くべきであったハンドラの扱いね に気が付いて
-----
売りもの入れかえときました... コピー可能なので programmable fountain お買いいただければ 組み合わせて楽しめます
-----
設定する時は 透明な本体をクリックしなくてはいけないので
-----
ビュー > 透明オブジェクトを強調表示
-----
をチェックしてクリックすることをお奨めします って 癖があるのがたまにきづ w
-----

-----

-----

-----
purin が 2つ組み合わせて違うパターンにすればいい というのを思いついたからなのですが ^^
-----
まあ 小さなコマンドを組み合わせて 必要な機能を実現するという意味では UNIX 哲学にも通じうるわけですが w
-----
で タイトルなんですが
-----
最初 一方のパターンをダイアログで選択すると他方も同じパターンになってしまったんです...
-----
なんでだろうと思ったわけですが
-----
LSLスクリプトTips集|ダイアログボックスを表示する|llDialog,llListen,llListenRemove
-----
を見てわけもわからずコーディングしてて ここのサンプルのように touch した時点で listen させてハンドルを後で削除するようなことをしてればよかったんだが
-----
そうしないで state_entry とかで listen させたりしていたのが敗因
-----
これだと 当然 123 チャネルを見てるだけなので 一方を設定すると他方も設定されてしまうわけなんです...
-----
で それはわりと直ぐ気が付いたので どうしようと思ったのですが touch したかどうかフラグを立てて フラグが立っていたら touch して ダイアログが表示されているというわけなので
-----
その場合だけ処理すればいいだろうと でまあ それでインプリもしていたのですが...
-----
でもそれっていまいち美しくないよな~ と思いまた調べていたら
-----
Makapu@BlackSheep-LSL:ダイアログを使おう(初級スクリプト第八回)
-----
にもサンプルが
-----
あ~ なるほど こうするのか~ listen で touch した人の UUID を渡すわけね というのと 前に気付くべきであったハンドラの扱いね に気が付いて
-----
売りもの入れかえときました... コピー可能なので programmable fountain お買いいただければ 組み合わせて楽しめます
-----
設定する時は 透明な本体をクリックしなくてはいけないので
-----
ビュー > 透明オブジェクトを強調表示
-----
をチェックしてクリックすることをお奨めします って 癖があるのがたまにきづ w
2008年03月21日
クォータニオンの威力
フリーでデザートイーグルをゲットした時 何か撃ってみようと思い ShootingStar とか出してみたが
-----
そこで バグを発見(今は修正済みです ^^)
-----
箱の向きを変えても生成される星がそれに対応して向きを変えてないのだ
-----
これではいけない(向きで動く方向を決めているので 位置関係が変になってしまう)
-----
というわけで 早速 デバッグ
-----
と言いながら きちんと理解していないので ほとんど試行錯誤 w
-----
で分かったのが 星を生成するときの向きを箱の向きに揃えることができていないらしい ということ
-----
そこで llGetRot() を渡してやるとそれっぽくはなったのだが
-----
星は TOKOROTEN で上向きに造られているので それを 前に向けなくてはいけない
-----
どうしたらいいのか?
-----
というわけだが rotation は クォータニオンなので 掛けるだけで良いのだ
-----
下の写真の llEuler2Rot(<90, 0, 0> * DEG_TO_RAD) * llGetRot() の部分だ
-----
偉いぞ クォータニオン w
-----
-----
そこで バグを発見(今は修正済みです ^^)
-----
箱の向きを変えても生成される星がそれに対応して向きを変えてないのだ
-----
これではいけない(向きで動く方向を決めているので 位置関係が変になってしまう)
-----
というわけで 早速 デバッグ
-----
と言いながら きちんと理解していないので ほとんど試行錯誤 w
-----
で分かったのが 星を生成するときの向きを箱の向きに揃えることができていないらしい ということ
-----
そこで llGetRot() を渡してやるとそれっぽくはなったのだが
-----
星は TOKOROTEN で上向きに造られているので それを 前に向けなくてはいけない
-----
どうしたらいいのか?
-----
というわけだが rotation は クォータニオンなので 掛けるだけで良いのだ
-----
下の写真の llEuler2Rot(<90, 0, 0> * DEG_TO_RAD) * llGetRot() の部分だ
-----
偉いぞ クォータニオン w
-----

2008年03月21日
オブジェクトの位置って?
LlGetPos - lslWiki
-----
を見ると
-----
Returns the object's position in region coordinates, which are relative to the simulator's southwest corner.
When called from within a child prim in a linked set, it returns the position of the child in region coordinates, not the parent's position. To get the position of a child object relative to its parent, use llGetLocalPos. To get the position of the parent from a script within a child prim, use llGetRootPosition.
-----
のようなことが書かれてあるわけです
-----
前も 回転で同じようなことに悩んだことがあるような気もするのですが
-----
リンクされたオブジェクトの位置ってどこ?
-----
リンクされているものには中心が表示されているように思うわけですが 当然そこでは と考えるのが 極自然 だと思われるのですが
-----
とりあえず試してみました
-----

-----
なんと 実はそうではなく ルートの位置なのです
-----
へ~ そうなんだ
-----
で 子供のプリムで llGetPos をするとそのプリムの位置を返すので ルートのプリムの位置を調べるには llGetRootPosition を使えと
-----
ん~ なにか記述がねじまがっているような気がするのは気のせい? w
-----
を見ると
-----
Returns the object's position in region coordinates, which are relative to the simulator's southwest corner.
When called from within a child prim in a linked set, it returns the position of the child in region coordinates, not the parent's position. To get the position of a child object relative to its parent, use llGetLocalPos. To get the position of the parent from a script within a child prim, use llGetRootPosition.
-----
のようなことが書かれてあるわけです
-----
前も 回転で同じようなことに悩んだことがあるような気もするのですが
-----
リンクされたオブジェクトの位置ってどこ?
-----
リンクされているものには中心が表示されているように思うわけですが 当然そこでは と考えるのが 極自然 だと思われるのですが
-----
とりあえず試してみました
-----

-----
なんと 実はそうではなく ルートの位置なのです
-----
へ~ そうなんだ
-----
で 子供のプリムで llGetPos をするとそのプリムの位置を返すので ルートのプリムの位置を調べるには llGetRootPosition を使えと
-----
ん~ なにか記述がねじまがっているような気がするのは気のせい? w
2008年03月22日
またプチ挫折
前に ドミノのような物理なものが作れなかった
-----
シミュレータの性能のせいだと思っている w
-----
昨日 太陽 地球 月 を 3つのオブジェクトで作ろうとしてうまくいかなかった(地球がどこかに飛んで行ってしまったが 大丈夫だろうか w)
-----
最初 物理で作ったが動きが変
-----
動きはじめと終わりで速度が変わるから滑らかに動かない
-----
llSetPos に変えてみたら動きがかくかくする
-----
timer をもっと頻繁に起動すれば滑らかにできたのだろうか
-----
でもそれも負荷だよな というわけで...
-----
ブレンダーで布シミュレーションみたいな高度なモデリングの機能を使ってスカルプトを作るというのも挫折している
-----
その一方で ふと それっぽい AO を買ってみたり(たまーに売れたり イベントで貰ったりして 少しは L$ も溜まるのだ)
-----
きっと 何かしたいしたい と思っていても だめな時はだめで
-----
できることをやっていくというのがよさそうだ
-----
そういえば 人工無能 もプチ挫折してたような気がするが 教えてもらったスクリプトで もう少しは進むことができるだろうか
-----
後退しなければ 前に進むしかないのだ w
-----
シミュレータの性能のせいだと思っている w
-----
昨日 太陽 地球 月 を 3つのオブジェクトで作ろうとしてうまくいかなかった(地球がどこかに飛んで行ってしまったが 大丈夫だろうか w)
-----
最初 物理で作ったが動きが変
-----
動きはじめと終わりで速度が変わるから滑らかに動かない
-----
llSetPos に変えてみたら動きがかくかくする
-----
timer をもっと頻繁に起動すれば滑らかにできたのだろうか
-----
でもそれも負荷だよな というわけで...
-----
ブレンダーで布シミュレーションみたいな高度なモデリングの機能を使ってスカルプトを作るというのも挫折している
-----
その一方で ふと それっぽい AO を買ってみたり(たまーに売れたり イベントで貰ったりして 少しは L$ も溜まるのだ)
-----
きっと 何かしたいしたい と思っていても だめな時はだめで
-----
できることをやっていくというのがよさそうだ
-----
そういえば 人工無能 もプチ挫折してたような気がするが 教えてもらったスクリプトで もう少しは進むことができるだろうか
-----
後退しなければ 前に進むしかないのだ w
2008年03月26日
SL とオープンソース
という話だと
-----
Open Tech Press | オープンソース化から1年を経たSecond Life
-----
の
-----
ミシガン大学(University of Michigan)の立体視ビューアや、現段階では試験的なものでまだ広くは使われていない慶応義塾大学による脳トラッキングビューアなど、もっと進化した実験的なビューアもある
-----
というクライアントの話が気になったりもするわけだが
-----
Philip Rosedale 氏が Forbes.com に書いた記事
-----
Alter Egos - Forbes.com
-----
に
-----
Many interactive objects in Second Life (for example, a wristwatch with moving hands that tells the correct time) are built on small chunks of scripted code that can easily be passed among builders.
-----
というのは SL におけるプログラミングモデルの特徴を良く捉えた話で(まああたりまえだが w)
-----
For every clever new idea, at least one designer is willing to serve up his code for the fun of being remembered as the guy who seeded the design community.
-----
というのはオープンソースコミュニティにおける動機についての話でもあるなと...
-----
歴史(/記憶)に残るクリエータになりたいという欲望 w
-----
Open Tech Press | オープンソース化から1年を経たSecond Life
-----
の
-----
ミシガン大学(University of Michigan)の立体視ビューアや、現段階では試験的なものでまだ広くは使われていない慶応義塾大学による脳トラッキングビューアなど、もっと進化した実験的なビューアもある
-----
というクライアントの話が気になったりもするわけだが
-----
Philip Rosedale 氏が Forbes.com に書いた記事
-----
Alter Egos - Forbes.com
-----
に
-----
Many interactive objects in Second Life (for example, a wristwatch with moving hands that tells the correct time) are built on small chunks of scripted code that can easily be passed among builders.
-----
というのは SL におけるプログラミングモデルの特徴を良く捉えた話で(まああたりまえだが w)
-----
For every clever new idea, at least one designer is willing to serve up his code for the fun of being remembered as the guy who seeded the design community.
-----
というのはオープンソースコミュニティにおける動機についての話でもあるなと...
-----
歴史(/記憶)に残るクリエータになりたいという欲望 w