2007年12月30日
期間限定配布。
先日AirLandメンバーへのプレゼント用に作成した、「回転カクレクマノミ・ペア」ですが、けっこう好評だったので、Aqua Sop Gonbeからお年賀として、一般の皆さんへも期間限定で配布したいと思います。
商品は「編集不可」、「コピー可能」、「再販不可」の設定になっています。個人的にお楽しみ下さい。

配布は以下の要領で行います。
<お正月期間限定プレゼント>
1.配布期間:2008年1月1日~5日(日本時間)
2.配布場所:SASUKE SEA GARDEN 2F Aqua Shop Gonbe入り口。
「SASUKE SEA GARDEN」
3.配布内容
************************************************************************************
回転するクマノミのペアです。
水槽内に置いても使えますし、アバターに装着しても使えます。
<設置時>
持ち物から取り出して、好きな場所に置いてください。
回転軸(水色のプリム)又はクマノミをタッチすると、回転軸が透明になって、クマノミが回りだします。
止めたいときは、再度タッチすれば止まり、回転軸が見えるようになります。
<装着時>
持ち物から右クリックで装着を選んで下さい。
デフォルトでは右肩に装着されます。
装着時もタッチすると止まったり、また回転し始めたりします。
クマノミは1匹あたり3プリムで構成されています。
2匹+回転軸で7プリムです。
尾びれと胸びれを動かしながら、愛らしく周りをペアで泳ぎ回ります。
お楽しみ下さい。
************************************************************************************
4.取得方法
1月1日~5日の間、SASEKE SEA GARDENのお店の前に、↓のようにBoxを置いておきます。

Boxをタッチすると、自動的にクマノミがパッケージ毎渡されますので、受け取ってください。
尚、Boxはスクリプトで、日本時間の1月1日午前0時~5日の24時まで配布され、それ以前も以降も「ごめんなさいメッセージが出て配布されません(6日になった瞬間から配布されなくなります)。
最初は1日~3日までの3日間限定で考えていたのですが、SASUKEのマネージャーから「3日までじゃINできない人も居るから、5日までやって」と言われてしまい、OKしてしまいました。^ ^;
このカクレクマノミは別途販売も検討中ですので、この機会に是非貰っちゃって下さい。^ ^
商品は「編集不可」、「コピー可能」、「再販不可」の設定になっています。個人的にお楽しみ下さい。

配布は以下の要領で行います。
<お正月期間限定プレゼント>
1.配布期間:2008年1月1日~5日(日本時間)
2.配布場所:SASUKE SEA GARDEN 2F Aqua Shop Gonbe入り口。
「SASUKE SEA GARDEN」
3.配布内容
************************************************************************************
回転するクマノミのペアです。
水槽内に置いても使えますし、アバターに装着しても使えます。
<設置時>
持ち物から取り出して、好きな場所に置いてください。
回転軸(水色のプリム)又はクマノミをタッチすると、回転軸が透明になって、クマノミが回りだします。
止めたいときは、再度タッチすれば止まり、回転軸が見えるようになります。
<装着時>
持ち物から右クリックで装着を選んで下さい。
デフォルトでは右肩に装着されます。
装着時もタッチすると止まったり、また回転し始めたりします。
クマノミは1匹あたり3プリムで構成されています。
2匹+回転軸で7プリムです。
尾びれと胸びれを動かしながら、愛らしく周りをペアで泳ぎ回ります。
お楽しみ下さい。
************************************************************************************
4.取得方法
1月1日~5日の間、SASEKE SEA GARDENのお店の前に、↓のようにBoxを置いておきます。

Boxをタッチすると、自動的にクマノミがパッケージ毎渡されますので、受け取ってください。
尚、Boxはスクリプトで、日本時間の1月1日午前0時~5日の24時まで配布され、それ以前も以降も「ごめんなさいメッセージが出て配布されません(6日になった瞬間から配布されなくなります)。
最初は1日~3日までの3日間限定で考えていたのですが、SASUKEのマネージャーから「3日までじゃINできない人も居るから、5日までやって」と言われてしまい、OKしてしまいました。^ ^;
このカクレクマノミは別途販売も検討中ですので、この機会に是非貰っちゃって下さい。^ ^
2007年12月29日
ナポちゃんの販売再開。
ナポレオンフィッシュのヒレ等が徐々にズレてしまう現象のため、販売を延期していましたが、この1週間で現象の確認と対処が完了したので、本日より販売を開始しました。ふ~疲れた。。。

ズレの原因は明確には分かりませんでしたが、ズレが発生する条件と対処方法は検証できたので、これで問題無く泳ぎ続けると思います。^ ^
検証結果等に関しては、コチラを参照下さい。↓
http://aquarium.slmame.com/e99833.html
と言う事で、ナポレオンフィッシュはAqua Shop Gonbeの最高傑作と思いますので、是非是非多くの人に楽しんでいただきたいと思います。
宜しくお願いしまーす。m(._.)m

ズレの原因は明確には分かりませんでしたが、ズレが発生する条件と対処方法は検証できたので、これで問題無く泳ぎ続けると思います。^ ^
検証結果等に関しては、コチラを参照下さい。↓
http://aquarium.slmame.com/e99833.html
と言う事で、ナポレオンフィッシュはAqua Shop Gonbeの最高傑作と思いますので、是非是非多くの人に楽しんでいただきたいと思います。
宜しくお願いしまーす。m(._.)m
2007年12月29日
パーツズレの結論
ナポレオンフィッシュのリンクパーツがズレてしまう現象だが、その後の追加確認で以下のような結論に達した。
<現象>
llMoveToTargetで移動している状態で、同時に2つのパーツがSculptedアニメで動いている場合に、リンクされた子プリムの位置がズレてくる。
ズレるのは、Sculptedパーツだけでは無く、リンクされている通常プリムのパーツも同様にズレる。
ズレは非常に少しづつズレて行くようで、時間の経過と共にズレは大きくなる。
ズレる方向は一定しており、空中よりも水中の方が著しくズレる。水中では1時間程度でズレを認識できるが、空中だと1日以上経過しないと認識できない。
1週間泳がせ続けた結果がコレ↓

あれから検証用に状態を変えた物で色々と試した。検証風景はコレ↓

その結果は以下のようになった。
<検証>
1.サメやイッカク等llMoveToTarget移動時に本体が同時にSculptedアニメで動いていても発生していない。
2.ナポレオンフィッシュで胸鰭の動きを止めて泳がせた場合にもズレは発生しない。
3.同様に尾びれの動きを止め、胸鰭だけ動かしてもズレは発生しない。
4.胸鰭と尾びれを同時に動かしても、llMoveToTargetを止めて動かないようにした場合はズレは発生しない。(物理属性でも)
5.胸鰭と尾びれがSculptedアニメで動き、目玉とか他のパーツには動くスクリプトが存在しないカクレクマノミでも同様の現象が発生した。
6.非物理のまま胸鰭と尾びれを動かしながらllSetPosで移動させ続けてもズレ無い。
7.X軸方向のみ往復させた場合、ズレは発生するが程度は小さい。(空中と同程度かそれ以下)
8.Y軸方向のみ往復させた場合、ズレの程度は大きく、短時間でズレが確認できる。
9.各子プリム・パーツに10分間隔で相対位置をチェックし、規定位置からズレて居た場合、元に戻すスクリプトを入れるとズレは補正され、ズレた状態にはならなくなる。
<結論>
llMoveToTargetで移動している状態で、同時に2つのパーツがSculptedアニメで動いている場合に発生する。
ズレは水中でY軸方向への移動時に著しく発生し、X軸方向への移動及び空中での移動時にはズレは少ない。
ただし、何故このような状態の時に、リンクプリムの位置がズレるのか?と言う事は分からない。
この辺はリンデン社に問い合わせるべきなのだろうか?
と言う事で、非常に限られた条件で発生するようなので、一般的には認識されていない現象と思う。
で対処としては、ズレが一気にズレるのでは無く、徐々にズレて行くことから、適当な時間毎に、リンクプリムの相対位置をチェックして、ズレが認められたら、強制的に補正する事にで解決できる。
まあ、こんな所でしょう。
このようなオブジェクトを作る人は、他には居ないと思うのだが、仮に上記条件に該当するようなオブジェクトを作った場合は、ズレるので気をつけましょう。
<現象>
llMoveToTargetで移動している状態で、同時に2つのパーツがSculptedアニメで動いている場合に、リンクされた子プリムの位置がズレてくる。
ズレるのは、Sculptedパーツだけでは無く、リンクされている通常プリムのパーツも同様にズレる。
ズレは非常に少しづつズレて行くようで、時間の経過と共にズレは大きくなる。
ズレる方向は一定しており、空中よりも水中の方が著しくズレる。水中では1時間程度でズレを認識できるが、空中だと1日以上経過しないと認識できない。
1週間泳がせ続けた結果がコレ↓

あれから検証用に状態を変えた物で色々と試した。検証風景はコレ↓

その結果は以下のようになった。
<検証>
1.サメやイッカク等llMoveToTarget移動時に本体が同時にSculptedアニメで動いていても発生していない。
2.ナポレオンフィッシュで胸鰭の動きを止めて泳がせた場合にもズレは発生しない。
3.同様に尾びれの動きを止め、胸鰭だけ動かしてもズレは発生しない。
4.胸鰭と尾びれを同時に動かしても、llMoveToTargetを止めて動かないようにした場合はズレは発生しない。(物理属性でも)
5.胸鰭と尾びれがSculptedアニメで動き、目玉とか他のパーツには動くスクリプトが存在しないカクレクマノミでも同様の現象が発生した。
6.非物理のまま胸鰭と尾びれを動かしながらllSetPosで移動させ続けてもズレ無い。
7.X軸方向のみ往復させた場合、ズレは発生するが程度は小さい。(空中と同程度かそれ以下)
8.Y軸方向のみ往復させた場合、ズレの程度は大きく、短時間でズレが確認できる。
9.各子プリム・パーツに10分間隔で相対位置をチェックし、規定位置からズレて居た場合、元に戻すスクリプトを入れるとズレは補正され、ズレた状態にはならなくなる。
<結論>
llMoveToTargetで移動している状態で、同時に2つのパーツがSculptedアニメで動いている場合に発生する。
ズレは水中でY軸方向への移動時に著しく発生し、X軸方向への移動及び空中での移動時にはズレは少ない。
ただし、何故このような状態の時に、リンクプリムの位置がズレるのか?と言う事は分からない。
この辺はリンデン社に問い合わせるべきなのだろうか?
と言う事で、非常に限られた条件で発生するようなので、一般的には認識されていない現象と思う。
で対処としては、ズレが一気にズレるのでは無く、徐々にズレて行くことから、適当な時間毎に、リンクプリムの相対位置をチェックして、ズレが認められたら、強制的に補正する事にで解決できる。
まあ、こんな所でしょう。
このようなオブジェクトを作る人は、他には居ないと思うのだが、仮に上記条件に該当するようなオブジェクトを作った場合は、ズレるので気をつけましょう。
2007年12月28日
AirLandメンバー限定プレゼント
以前からAirLandメンバー限定商品を作りたいと思っていたのですが、中々広く使えるものが無くて実現できませんでした。
今回カクレクマノミを作って、その商品化を検討していて思いついたのですが、装着して使えるカクレクマノミを作りました。
で、それを今日からAirLandグループのメンバー限定で配布することにしました。^ ^

このBoxをAirLandの3SIM(Callingwood / Wedgewood / Dingercat)にそれぞれ設置してきました。
Callingwood は私の空き地です。
Wedgewood はchiさんのカフェ。
Dingercatは海辺のバーです。
このカクレクマノミは、Sculptedで作成した2匹のクマノミが回転しながら泳ぐタイプです。コピーも可能です。^ ^
水槽や水中に置いても使えますし、装着すれば頭の上で回転しながら泳ぎます。実物はこんな感じですね。↓

AirLandグループも新しいスタートをきった事ですし、そのお祝いと言う訳では無いですが、メンバーの人達に楽しんでもらえれば嬉しいと思います。
PS.ちなみにクマノミは体が大きい方がメスです。後ろをちょこちょこついて来る小さい方がオスです。^ ^;
今回カクレクマノミを作って、その商品化を検討していて思いついたのですが、装着して使えるカクレクマノミを作りました。
で、それを今日からAirLandグループのメンバー限定で配布することにしました。^ ^

このBoxをAirLandの3SIM(Callingwood / Wedgewood / Dingercat)にそれぞれ設置してきました。
Callingwood は私の空き地です。
Wedgewood はchiさんのカフェ。
Dingercatは海辺のバーです。
このカクレクマノミは、Sculptedで作成した2匹のクマノミが回転しながら泳ぐタイプです。コピーも可能です。^ ^
水槽や水中に置いても使えますし、装着すれば頭の上で回転しながら泳ぎます。実物はこんな感じですね。↓

AirLandグループも新しいスタートをきった事ですし、そのお祝いと言う訳では無いですが、メンバーの人達に楽しんでもらえれば嬉しいと思います。
PS.ちなみにクマノミは体が大きい方がメスです。後ろをちょこちょこついて来る小さい方がオスです。^ ^;
2007年12月28日
フェアリー好き
以前ATRUSでピクシーを配った時は、気づくのが遅かったし、製作で忙しかったので貰いそびれてしまいました。><
その後忘れていたのですが、先日ソラマメの新着Blogを見ていたら、こんな記事を発見!
http://dragon01.slmame.com/e97788.html
で早速飛んで行ったのですが、やっぱラッキーチェアには「G]は出てこなくて、我慢できずに「お買い上げ~」してしまいました。^ ^
その場には記事を書いた人も偶然来ており、その人は後日めでたくGet!されたようです。
で、その後更に同じ人のBlogにフェアリーのアバター情報も出ていたので、それもラッキーチェアの景品でもあったのですが、忍耐力の無いゴンベは10分待って「お買い上げ~」してしまいました。><
更に更にフェアリー好きは止まらなくなって、以前貰いそびれたピクシーが、今はATLUSで販売していると聞き、これまた「お買い上げ~」してしまう始末。><
でも、お気に入りが手に入ったので、上機嫌でお買い上げ商品をそろえて記念撮影しました。^ ^

実はATLUSの前に、ANIMANIAのグループ情報で新作でフェアリーを販売していると知り、ANIMANIAにも飛んでいました。
で、その商品がコレ↓

えっ?L$1250を特価L$995???う~ん・・・こ・これは高いな~。。。
と思って眺めていると、周りに光を纏った物体が近づいてくるでは無いですか。それがフェアリーのようです。
で、ジッと見てみると。。。が~ん。

か・顔が怖いー!
ANIMANIAの商品なので、人が来ると近づいていき、その周りを飛び回るのは、ハミングバード等と同じですし、その他にも色々機能が有るのかもしれません。
が、やっぱフェアリーは顔が命。現バージョンはちょっと・・・と思いました。
で、流石にこれはお買い上げはぜず、ハミングバードとトンボを買って帰ってきました。
ANIMANIAの事ですから、きっと更に改良を加えて、素晴らしいフェアリーを作ることでしょう。その時には・・・でもやっぱ高いな~。。。また考えよう。
その後忘れていたのですが、先日ソラマメの新着Blogを見ていたら、こんな記事を発見!
http://dragon01.slmame.com/e97788.html
で早速飛んで行ったのですが、やっぱラッキーチェアには「G]は出てこなくて、我慢できずに「お買い上げ~」してしまいました。^ ^
その場には記事を書いた人も偶然来ており、その人は後日めでたくGet!されたようです。
で、その後更に同じ人のBlogにフェアリーのアバター情報も出ていたので、それもラッキーチェアの景品でもあったのですが、忍耐力の無いゴンベは10分待って「お買い上げ~」してしまいました。><
更に更にフェアリー好きは止まらなくなって、以前貰いそびれたピクシーが、今はATLUSで販売していると聞き、これまた「お買い上げ~」してしまう始末。><
でも、お気に入りが手に入ったので、上機嫌でお買い上げ商品をそろえて記念撮影しました。^ ^

実はATLUSの前に、ANIMANIAのグループ情報で新作でフェアリーを販売していると知り、ANIMANIAにも飛んでいました。
で、その商品がコレ↓

えっ?L$1250を特価L$995???う~ん・・・こ・これは高いな~。。。
と思って眺めていると、周りに光を纏った物体が近づいてくるでは無いですか。それがフェアリーのようです。
で、ジッと見てみると。。。が~ん。

か・顔が怖いー!
ANIMANIAの商品なので、人が来ると近づいていき、その周りを飛び回るのは、ハミングバード等と同じですし、その他にも色々機能が有るのかもしれません。
が、やっぱフェアリーは顔が命。現バージョンはちょっと・・・と思いました。
で、流石にこれはお買い上げはぜず、ハミングバードとトンボを買って帰ってきました。
ANIMANIAの事ですから、きっと更に改良を加えて、素晴らしいフェアリーを作ることでしょう。その時には・・・でもやっぱ高いな~。。。また考えよう。
2007年12月28日
正月の準備でもするかな
ボチボチと正月準備を始めました。^ ^
まずは門松とかしめ縄飾りとか鏡餅とかが欲しいので、ソラマメでそれらの記事を探しては現地へ。
とりあえず何点かゲットしたので、Callingwood の空き地から準備を始めました。

例の大きなウサギさんを中心に、門松を取り付けてみました。
門松はALCと言うSIMのEnglish Cafeで貰いました。元記事はこちら↓
http://alc.slmame.com/e98544.html
羽子板もあるようですが、今日はまだ無かったです。後日また行って見たいと思います。
ここでは他にも幾つかのフリーアイテムがありました。その中で「熊のぬいぐるみ」が有ったので、そちらもいただきました。
ウサギさんに座っているクマさんがそうです。^ ^
そうそう、キノコ・スタンドの前にある、かぼちゃのライトもここでもらいました。来年のハロウィンにも使えそうです。
他に「コアラのぬいぐるみ」も有ったのですが、そちらはタッチしても動作せず手に入りませんでした。残念。
ウサギさんが手に持っているのは「年越しそば」です。
これはNoN-STANDARDさんが今日から始めたイベントだそうです。元記事はこちら↓
http://nonstandard.slmame.com/e100270.html
屋上で除夜の鐘をつくと、年越しそばがもらえます。(はずれアイテムもありますが・・・中身は・・・うん。好き好きでしょうw)
この年越しそばを持って1月4日以降に再度行くと、素敵なアイテムが更に貰えるそうです。なんでしょうね?楽しみ^ ^
それと、正月とは関係無いですが、Callingwood の空き地が寂しいので、ANIMANIAへ行って、ハミングバードとトンボを買ってきてしまいました。
これらは以前から欲しかったのですが、「う~ん。。。でも自分で作れるじゃん。」と言う事から購入しませんでした。
でも、作る手間と時間を考えると、買った方が断然安いから思い切って買ってしまいました。
多分将来鳥シリーズとか昆虫シリーズとかを作る日が来るかも知れませんが、まだまだ先の話になりそうですからね。
他にもお正月飾りをSt.Monica Shopping Mallでもらい、ついでに鏡餅をL$10で買ってきました。
元記事はこちら↓
http://monica.slmame.com/e99635.html
これらはDingercatのお店に飾りました。


まだまだアイテムが少ないので、これからもポチポチと探して増やして行きたいと思います。
まずは門松とかしめ縄飾りとか鏡餅とかが欲しいので、ソラマメでそれらの記事を探しては現地へ。
とりあえず何点かゲットしたので、Callingwood の空き地から準備を始めました。

例の大きなウサギさんを中心に、門松を取り付けてみました。
門松はALCと言うSIMのEnglish Cafeで貰いました。元記事はこちら↓
http://alc.slmame.com/e98544.html
羽子板もあるようですが、今日はまだ無かったです。後日また行って見たいと思います。
ここでは他にも幾つかのフリーアイテムがありました。その中で「熊のぬいぐるみ」が有ったので、そちらもいただきました。
ウサギさんに座っているクマさんがそうです。^ ^
そうそう、キノコ・スタンドの前にある、かぼちゃのライトもここでもらいました。来年のハロウィンにも使えそうです。
他に「コアラのぬいぐるみ」も有ったのですが、そちらはタッチしても動作せず手に入りませんでした。残念。
ウサギさんが手に持っているのは「年越しそば」です。
これはNoN-STANDARDさんが今日から始めたイベントだそうです。元記事はこちら↓
http://nonstandard.slmame.com/e100270.html
屋上で除夜の鐘をつくと、年越しそばがもらえます。(はずれアイテムもありますが・・・中身は・・・うん。好き好きでしょうw)
この年越しそばを持って1月4日以降に再度行くと、素敵なアイテムが更に貰えるそうです。なんでしょうね?楽しみ^ ^
それと、正月とは関係無いですが、Callingwood の空き地が寂しいので、ANIMANIAへ行って、ハミングバードとトンボを買ってきてしまいました。
これらは以前から欲しかったのですが、「う~ん。。。でも自分で作れるじゃん。」と言う事から購入しませんでした。
でも、作る手間と時間を考えると、買った方が断然安いから思い切って買ってしまいました。
多分将来鳥シリーズとか昆虫シリーズとかを作る日が来るかも知れませんが、まだまだ先の話になりそうですからね。
他にもお正月飾りをSt.Monica Shopping Mallでもらい、ついでに鏡餅をL$10で買ってきました。
元記事はこちら↓
http://monica.slmame.com/e99635.html
これらはDingercatのお店に飾りました。


まだまだアイテムが少ないので、これからもポチポチと探して増やして行きたいと思います。
2007年12月26日
パーツ・ズレ現象に関して
ナポレオンフィッシュで起こった、遊泳中に各パーツがズレていく現象に関して記録しておきたいと思う。
まずは2日半遊泳させた場合の状況は、以下のように体からパーツが飛び出してしまう。

これは水中での使用時には著しく、2時間程度で目に見えてズレが生じる。胸鰭の方がズレの程度が大きい。目玉は胸鰭よりは小さいが、こちらも両目玉とも同じ方向へとズレて行く。
陸上(空中)での使用時には、これ程大きなズレは発生しない。が、5日間水槽内で遊泳させた物を見ると、やはりズレは発生している。コチラの場合は、胸鰭は向かって右に、目玉は前にズレているようだ。

サメ・シリーズとかでは、このようにパーツがズレる現象は発生していない。考えられるのは、ナポレオンのみで行っている仕組みに起因していると言う事になる。
試しに昨夜から泳がせて見た、ナポレオンと同様の作りをしているカクレクマノミも、程度は小さいが1日経過でやはりズレが見られる。
この場合は胸鰭と背ビレ部分も同じ方向にズレてきている。

具体的なナポレオンの構造を以下に示す。↓

各パーツでの稼動スクリプトは以下のようになる。
目玉:タイマーで2秒毎に左右別々に乱数で回転角度を発生させ、llSetLocalRotで目玉を少し回転させている。
胸鰭:2枚のSculptedテクスチャを2秒毎に切り替えて、胸鰭が動いているように見せている。
本体:llMoveToTargetで移動しつつ、同時に2枚のSculptedテクスチャを2秒毎に切り替えて、尾びれを動かしている。
従来品と異なる点は、本体以外のパーツでもSculptedテクスチャの張替えを同時に行っていると言う点だ。
同様に2箇所同時にSculptedテクスチャを張替えている、カクレクマノミも1日経過時点で同様の現象を起こしている。
更に今回の現象で不可解な事は、ナポレオンはフリー・ムーブだからランダムに方向転換して、確率的には前後左右同等にズレが発生する可能性を持っている。
にも関わらず、ズレる方向が常に一定しているのは何故であろう?(水中と空中では若干異なるようだが・・・)
これは設置場所に関係無く、本体の左側へとズレて行く。
カクレクマノミでも同様で、同じ方向へとパーツはズレる。
それと、空中と水中では顕著にズレの程度が違う。
これも、もしかしたら物理属性で動いているから、空気中より水中の方が抵抗が大きくて、その影響で差が出ているのかも知れない???
ってそんな所までSLの世界は再現しているのだろうか?だとすると凄いな~。。。
で、対処なのだが、非常に泥臭い方法ではあるが、リンク位置を一定時間毎にチェックして、もし最初の位置とズレていたら、元に戻すと言う処理を、各パーツに入れてみた。
具体的には次のような内容になる。
vector base_pos;
float t=600;
default
{
state_entry()
{
base_pos = llGetLocalPos();
llSetTimerEvent(t);
}
timer(){
if(base_pos != llGetLocalPos()){
llSetPrimitiveParams([PRIM_POSITION, base_pos]);
}
}
}
これで補正してやった場合、2日半経過時点でのズレは見られない。

もともと1時間に数cmレベルのズレなので、10分間隔でチェックしていれば、まず問題は無さそうだ。スクリプト負荷的にも影響は微々たるもののようなので、この状態で安定するなら、販売を開始したいと思う。
ただ、原因が明確には分からないので、それが気持ち悪い。
多分今後はSculptedテクスチャを張替えた、アニメーション効果を利用したオブジェクトが増えると思う。その場合の制約事項になるのであれば、ちょっと悩ましい気もする。
現時点で知っている限り、2パーツを同時にSculptedでアニメーションさせている物は無いと思う。
ちなみに、最近はSASUKE SIMでスクリプト負荷のチェックが具体的にできるので助かる。
ナポレオンに関して言えば、サメやマンタと同程度と言う事で、地域/不動産のデバッグ画面で調べても、0.03ms~0.05ms程度であった。
まずは2日半遊泳させた場合の状況は、以下のように体からパーツが飛び出してしまう。

これは水中での使用時には著しく、2時間程度で目に見えてズレが生じる。胸鰭の方がズレの程度が大きい。目玉は胸鰭よりは小さいが、こちらも両目玉とも同じ方向へとズレて行く。
陸上(空中)での使用時には、これ程大きなズレは発生しない。が、5日間水槽内で遊泳させた物を見ると、やはりズレは発生している。コチラの場合は、胸鰭は向かって右に、目玉は前にズレているようだ。

サメ・シリーズとかでは、このようにパーツがズレる現象は発生していない。考えられるのは、ナポレオンのみで行っている仕組みに起因していると言う事になる。
試しに昨夜から泳がせて見た、ナポレオンと同様の作りをしているカクレクマノミも、程度は小さいが1日経過でやはりズレが見られる。
この場合は胸鰭と背ビレ部分も同じ方向にズレてきている。

具体的なナポレオンの構造を以下に示す。↓

各パーツでの稼動スクリプトは以下のようになる。
目玉:タイマーで2秒毎に左右別々に乱数で回転角度を発生させ、llSetLocalRotで目玉を少し回転させている。
胸鰭:2枚のSculptedテクスチャを2秒毎に切り替えて、胸鰭が動いているように見せている。
本体:llMoveToTargetで移動しつつ、同時に2枚のSculptedテクスチャを2秒毎に切り替えて、尾びれを動かしている。
従来品と異なる点は、本体以外のパーツでもSculptedテクスチャの張替えを同時に行っていると言う点だ。
同様に2箇所同時にSculptedテクスチャを張替えている、カクレクマノミも1日経過時点で同様の現象を起こしている。
更に今回の現象で不可解な事は、ナポレオンはフリー・ムーブだからランダムに方向転換して、確率的には前後左右同等にズレが発生する可能性を持っている。
にも関わらず、ズレる方向が常に一定しているのは何故であろう?(水中と空中では若干異なるようだが・・・)
これは設置場所に関係無く、本体の左側へとズレて行く。
カクレクマノミでも同様で、同じ方向へとパーツはズレる。
それと、空中と水中では顕著にズレの程度が違う。
これも、もしかしたら物理属性で動いているから、空気中より水中の方が抵抗が大きくて、その影響で差が出ているのかも知れない???
ってそんな所までSLの世界は再現しているのだろうか?だとすると凄いな~。。。
で、対処なのだが、非常に泥臭い方法ではあるが、リンク位置を一定時間毎にチェックして、もし最初の位置とズレていたら、元に戻すと言う処理を、各パーツに入れてみた。
具体的には次のような内容になる。
vector base_pos;
float t=600;
default
{
state_entry()
{
base_pos = llGetLocalPos();
llSetTimerEvent(t);
}
timer(){
if(base_pos != llGetLocalPos()){
llSetPrimitiveParams([PRIM_POSITION, base_pos]);
}
}
}
これで補正してやった場合、2日半経過時点でのズレは見られない。

もともと1時間に数cmレベルのズレなので、10分間隔でチェックしていれば、まず問題は無さそうだ。スクリプト負荷的にも影響は微々たるもののようなので、この状態で安定するなら、販売を開始したいと思う。
ただ、原因が明確には分からないので、それが気持ち悪い。
多分今後はSculptedテクスチャを張替えた、アニメーション効果を利用したオブジェクトが増えると思う。その場合の制約事項になるのであれば、ちょっと悩ましい気もする。
現時点で知っている限り、2パーツを同時にSculptedでアニメーションさせている物は無いと思う。
ちなみに、最近はSASUKE SIMでスクリプト負荷のチェックが具体的にできるので助かる。
ナポレオンに関して言えば、サメやマンタと同程度と言う事で、地域/不動産のデバッグ画面で調べても、0.03ms~0.05ms程度であった。
2007年12月26日
ニモ(カクレクマノミ)を作ってみた。
SLで一番最初に作ろう!と思ったのは、マンタとカクレクマノミだったのですが、カクレクマノミは完全に挫折。。。orz
が、最近Sculptedの作り方がパーツ分けして作るようになったので、再度挑戦してみました。
できたのがコレ↓

う~ん。。。今回はナイス!じゃ~。
いけてますね。ウン。
これもナポちゃんと同じで、尾びれと胸鰭の両方がSculptedアニメーションで動きます。
パーツとしては、もう一つ前方の背ビレと腹ビレ部分があります。つまり3プリムね。
魚系の場合は、このような感じでヒレ部分を上手くパーツ分けすれば作りやすいです。
サメで苦労した結果が活きてきました。^ ^
ちなみにナポちゃんのパーツズレに関しては、対策を入れたものもテスト中で、そちらは1昼夜経過してもズレていませんでした。もう少しだけ様子を見て、念願の販売にしたいと思います。
カクレクマノミも作りは同じなので、ナポちゃんと同じ現象がでるかどうか?のテストも兼ねて、今泳がせて見ています。
それらの結果は別途報告したいと思います。
尚、カクレクマノミに関しては、全く今までとは違った形態での商品化を考えています。
そちらも後日発表したいと思います。お待ちくださいね。
が、最近Sculptedの作り方がパーツ分けして作るようになったので、再度挑戦してみました。
できたのがコレ↓

う~ん。。。今回はナイス!じゃ~。
いけてますね。ウン。
これもナポちゃんと同じで、尾びれと胸鰭の両方がSculptedアニメーションで動きます。
パーツとしては、もう一つ前方の背ビレと腹ビレ部分があります。つまり3プリムね。
魚系の場合は、このような感じでヒレ部分を上手くパーツ分けすれば作りやすいです。
サメで苦労した結果が活きてきました。^ ^
ちなみにナポちゃんのパーツズレに関しては、対策を入れたものもテスト中で、そちらは1昼夜経過してもズレていませんでした。もう少しだけ様子を見て、念願の販売にしたいと思います。
カクレクマノミも作りは同じなので、ナポちゃんと同じ現象がでるかどうか?のテストも兼ねて、今泳がせて見ています。
それらの結果は別途報告したいと思います。
尚、カクレクマノミに関しては、全く今までとは違った形態での商品化を考えています。
そちらも後日発表したいと思います。お待ちくださいね。
タグ :ものづくりSecondLife
2007年12月24日
クリエイターズスタンプラリー2007冬へ行って来ました。
22日から始まっていたんですね。今日知人のBlogで知って行って来ました。
詳しくはコチラ↓
http://edelweiss.sc/csr2007w/
で、欲しいなーと思ったのは、やっぱSickのマシンガン。

それで何か買い物して、スタンプ・カードをGetしようと、色々と店を回りました。
やっぱ女性物が多いんですよね。なかなか決まらないままお店めぐりをしていると、大きなウサギさんを発見しました。

このウサギ、色々な所で見かけていて「良いな~。。。」って思ってましたが、こんな所で売っていたんですね。
即購入しました。
それでめでたくカードもGet!
と、隣のお店も対象店らしいので行って見ると、知人が購入したと言う大きなキノコ型のランプがありました。
これも欲しくなって購入!2枚目のカードをGetです。^ ^
そして、各店を回ってはスタンプを押してきました。すると、*Edelweiss*が出てきました。

このお店は危険なんですよね~w
何が危険かと言うと、売っているのがメイド服や女子高生の制服。しかも、物凄くリアルで良くできている。
自分で着る気は全く無いのですが、見ていると何故か欲しくなってしまうほど良くできているんですよ。
実にオジサンには危険なお店です。
が、スタンプを貰うには入らないといけない。。。で、入って何気にラッキーチェアを見ると「G」になっているでは無いですか!
思わず座って女性用の下着をGet!って、どうすりゃ良いのだ・・・
でも・・・せっかくなので着てみました・・・うわぁー変態じゃー!

そんなこんなでノンビリと回ってスタンプを集め終わったら、景品交換所へ行って景品をもらいました。
それがコレ↓

多分初めて手にした武器です。^ ^
格好良いですねー。ちなみにタヌキ姿ではフィットしませんでした。
そして今回購入した物はコレラです。

大きなキノコ型スタンドと大きなウサギ人形です。
そして、ウサギの頭の上に居るのはコレ↓

ちょっと目つきの悪いネコですね。
これがもう一つの景品です。提供先はウサギ人形のお店でした。
景品を貰うのに20店舗を回らないといけませんが、けっこう洒落たお店も多いし、思わず「欲しい!」と思うような商品も結構ありました。
それと凄く素敵なお店や、美しい景観のSIMもありましたので、けっこう楽しく過ごせました。
やっぱ売れているお店と言うのは、店自体もお洒落で素敵ですよね。
それに比べて我が店は・・・う~ん。。。少しちゃんと造ろうかな?
このようなイベントは素晴らしいと思います。
各お店の商品も売れますし、宣伝にもなるでしょう。
そして購入側としても、欲しいアイテムがオマケ的にもらえてしまうのですからね。
また、こう言う企画でもあったら、我が店も参加させてもらいたいものです。
AirLandでも、こう言うイベントができれば面白いのですけどね~。。。
詳しくはコチラ↓
http://edelweiss.sc/csr2007w/
で、欲しいなーと思ったのは、やっぱSickのマシンガン。

それで何か買い物して、スタンプ・カードをGetしようと、色々と店を回りました。
やっぱ女性物が多いんですよね。なかなか決まらないままお店めぐりをしていると、大きなウサギさんを発見しました。

このウサギ、色々な所で見かけていて「良いな~。。。」って思ってましたが、こんな所で売っていたんですね。
即購入しました。
それでめでたくカードもGet!
と、隣のお店も対象店らしいので行って見ると、知人が購入したと言う大きなキノコ型のランプがありました。
これも欲しくなって購入!2枚目のカードをGetです。^ ^
そして、各店を回ってはスタンプを押してきました。すると、*Edelweiss*が出てきました。

このお店は危険なんですよね~w
何が危険かと言うと、売っているのがメイド服や女子高生の制服。しかも、物凄くリアルで良くできている。
自分で着る気は全く無いのですが、見ていると何故か欲しくなってしまうほど良くできているんですよ。
実にオジサンには危険なお店です。
が、スタンプを貰うには入らないといけない。。。で、入って何気にラッキーチェアを見ると「G」になっているでは無いですか!
思わず座って女性用の下着をGet!って、どうすりゃ良いのだ・・・
でも・・・せっかくなので着てみました・・・うわぁー変態じゃー!

そんなこんなでノンビリと回ってスタンプを集め終わったら、景品交換所へ行って景品をもらいました。
それがコレ↓

多分初めて手にした武器です。^ ^
格好良いですねー。ちなみにタヌキ姿ではフィットしませんでした。
そして今回購入した物はコレラです。

大きなキノコ型スタンドと大きなウサギ人形です。
そして、ウサギの頭の上に居るのはコレ↓

ちょっと目つきの悪いネコですね。
これがもう一つの景品です。提供先はウサギ人形のお店でした。
景品を貰うのに20店舗を回らないといけませんが、けっこう洒落たお店も多いし、思わず「欲しい!」と思うような商品も結構ありました。
それと凄く素敵なお店や、美しい景観のSIMもありましたので、けっこう楽しく過ごせました。
やっぱ売れているお店と言うのは、店自体もお洒落で素敵ですよね。
それに比べて我が店は・・・う~ん。。。少しちゃんと造ろうかな?
このようなイベントは素晴らしいと思います。
各お店の商品も売れますし、宣伝にもなるでしょう。
そして購入側としても、欲しいアイテムがオマケ的にもらえてしまうのですからね。
また、こう言う企画でもあったら、我が店も参加させてもらいたいものです。
AirLandでも、こう言うイベントができれば面白いのですけどね~。。。
タグ :イベント
2007年12月24日
ナポちゃんは販売延期
昨夜から販売開始したのですが、事情があってナポレオンフィッシュは販売を延期します。
で、今朝撤去。
事情ですが、自分の海で泳がせているナポちゃんが、何故かヒレや目玉の位置がズレていました。

このように、ヒレが大きくズレ、目玉も少しズレています。
SASUKE SEA GARDENやお店の水槽に泳がせてあるのは、全く問題ないのですが、海の中に入れている奴だけは、このような状態になっていました。
これは今回初めてでは無く、テスト中にも見られた現象なので、何か問題が有るのか?再度追跡調査をしてから販売しようと思います。
一応、この海だけの問題なのか?他の水中でも出る問題なのか?を現在モニターをお願いして確認中です。
その結果が出るまでは、販売は見送りたいと思います。
うー。。。本当に良いできなのにな・・・
最近SL自体の調子も悪いようで、変な現象が色々と発生したりもしています。
SASUKEのクジラ(Splashの物)が突然スクリプトがRunしなくなったようで、御臨終状態になったり、先日サメシリーズを購入したブラジル人からは、ハンマーは頭が無いし、ジンベイはヒレしか無いと連絡があったし。
今朝も昨夜ジンベイを購入した人からは、クジラと同じようにスクリプトが動かなくなったと連絡は有るし・・・
ナポちゃんの問題も、SL側の問題かもしれませんが、とにかく様子を見てから販売をしたいと思います。
しばしお待ち下さい。m(。_。)m
あっ!イッカクの方は販売していますので、そちらは宜しくお願いします。
で、今朝撤去。
事情ですが、自分の海で泳がせているナポちゃんが、何故かヒレや目玉の位置がズレていました。

このように、ヒレが大きくズレ、目玉も少しズレています。
SASUKE SEA GARDENやお店の水槽に泳がせてあるのは、全く問題ないのですが、海の中に入れている奴だけは、このような状態になっていました。
これは今回初めてでは無く、テスト中にも見られた現象なので、何か問題が有るのか?再度追跡調査をしてから販売しようと思います。
一応、この海だけの問題なのか?他の水中でも出る問題なのか?を現在モニターをお願いして確認中です。
その結果が出るまでは、販売は見送りたいと思います。
うー。。。本当に良いできなのにな・・・
最近SL自体の調子も悪いようで、変な現象が色々と発生したりもしています。
SASUKEのクジラ(Splashの物)が突然スクリプトがRunしなくなったようで、御臨終状態になったり、先日サメシリーズを購入したブラジル人からは、ハンマーは頭が無いし、ジンベイはヒレしか無いと連絡があったし。
今朝も昨夜ジンベイを購入した人からは、クジラと同じようにスクリプトが動かなくなったと連絡は有るし・・・
ナポちゃんの問題も、SL側の問題かもしれませんが、とにかく様子を見てから販売をしたいと思います。
しばしお待ち下さい。m(。_。)m
あっ!イッカクの方は販売していますので、そちらは宜しくお願いします。
2007年12月23日
ナポちゃんの販売開始。
ナポレオンフィッシュとイッカクを今日から販売開始しました。^ ^


本当はもっと色々と芸を仕込もうと思っていたのですが、やはりスクリプト作成には時間がかかりそうなので、それらは高機能バージョンとして、後日完成し次第別途販売したいと思います。
と言う事で、現バージョンを普及版として販売開始しました。どちらもコピー不可がL$350.コピー可がL$1000での販売になります。高機能版が完成したら、それらはもう少し高い値段になってしまうと思います。m(._.)m
機能的には以下のような内容になります。
1.ナポレオンフィッシュ(4prim)
・サイズ変更機能:1m、2m、3mの3段階で変更可能です。
・遊泳範囲:最低2m四方~最大40m四方までの範囲で設定ができます。
・水中モード:水中モードONの場合は水面より上には行かなくなります。
・アニメーション:Sculptedでのアニメーションで、尾びれと胸びれを動かしながら泳ぎ回ります。
・キョロキョロ目玉:泳ぎながらナポレオンフィッシュ特有の愛嬌のあるドングリ眼でキョロキョロします。
と言う事で、ゲンバージョンでも機能盛り沢山!
今までの製作物で一番良いできとも思います。かなり本物のナポレオンフィッシュの動きに近いと思いますよ。^ ^
2.イッカク(2prim)
・サイズ変更機能:2m(3m)、4m(6m)、6m(9m)の3段階で変更可能です。
※()内は角の長さを含めた大きさです。
・遊泳範囲:最低2m四方~最大40m四方までの範囲で設定ができます。
・水中モード:水中モードONの場合は水面より上には行かなくなります。
・アニメーション:Sculptedでのアニメーションで、尾びれと胸びれを動かしながら泳ぎ回ります。
これもイッカクにしては愛嬌のある顔立ちと動きになっています。角もSculptedなので結構リアルな感じも出てます。
なお、以前も書いたように、ナポレオンフィッシュはペットモードのような機能を検討中です。人が一定範囲に来ると近づいてきて周りを泳ぐような機能です。
相手がアバターだと、アバターが動いてしまった場合とかの処置をどうするか?この辺で仕様が煮詰め切れていません。
少し時間をかけて、ジックリと検討して対応したいと思います。
この機能が完成したら、「番サメ」も考えたいと思っています。要は番犬代わりをするサメですね。
人が一定範囲に来ると近づいて行き、大きく口を空けて威嚇するようなアニメーションを付加したいと考えています。
イッカクに関しては、泣き声を入れたいので、現在シンセサイザー・ソフトを検討中です。声作りにも時間がかかりそうです。
それと水面に体を出して、角を振りかざしながらユックリ回転させて、ダンスを踊るような仕草もさせてみたいと思っています。
その際に潮も吹かせたいと思います。
そこまで作るには、それなりに時間もかかりそうなので、今後ユックリと研究して対応をしたいとは思います。
尚、他にも作りたい物が山積みでして、以前ちょっと書いたブルーマーリンもそうですし、マダラトビエイも作りたい。それとウミガメもついに作ろうと決心しました。
後は、一番最初に作ろうとして、何度も挫折してきたカクレクマノミにも再度チャレンジ中です。
これは販売用になるかどうか?分からないのですが、けっこう良い感じにはなりつつあります。
これらもある程度製作が進んだらご紹介したいと思います。
それでは、ナポちゃんとイッカクちゃんも宜しくお願いいたします。


本当はもっと色々と芸を仕込もうと思っていたのですが、やはりスクリプト作成には時間がかかりそうなので、それらは高機能バージョンとして、後日完成し次第別途販売したいと思います。
と言う事で、現バージョンを普及版として販売開始しました。どちらもコピー不可がL$350.コピー可がL$1000での販売になります。高機能版が完成したら、それらはもう少し高い値段になってしまうと思います。m(._.)m
機能的には以下のような内容になります。
1.ナポレオンフィッシュ(4prim)
・サイズ変更機能:1m、2m、3mの3段階で変更可能です。
・遊泳範囲:最低2m四方~最大40m四方までの範囲で設定ができます。
・水中モード:水中モードONの場合は水面より上には行かなくなります。
・アニメーション:Sculptedでのアニメーションで、尾びれと胸びれを動かしながら泳ぎ回ります。
・キョロキョロ目玉:泳ぎながらナポレオンフィッシュ特有の愛嬌のあるドングリ眼でキョロキョロします。
と言う事で、ゲンバージョンでも機能盛り沢山!
今までの製作物で一番良いできとも思います。かなり本物のナポレオンフィッシュの動きに近いと思いますよ。^ ^
2.イッカク(2prim)
・サイズ変更機能:2m(3m)、4m(6m)、6m(9m)の3段階で変更可能です。
※()内は角の長さを含めた大きさです。
・遊泳範囲:最低2m四方~最大40m四方までの範囲で設定ができます。
・水中モード:水中モードONの場合は水面より上には行かなくなります。
・アニメーション:Sculptedでのアニメーションで、尾びれと胸びれを動かしながら泳ぎ回ります。
これもイッカクにしては愛嬌のある顔立ちと動きになっています。角もSculptedなので結構リアルな感じも出てます。
なお、以前も書いたように、ナポレオンフィッシュはペットモードのような機能を検討中です。人が一定範囲に来ると近づいてきて周りを泳ぐような機能です。
相手がアバターだと、アバターが動いてしまった場合とかの処置をどうするか?この辺で仕様が煮詰め切れていません。
少し時間をかけて、ジックリと検討して対応したいと思います。
この機能が完成したら、「番サメ」も考えたいと思っています。要は番犬代わりをするサメですね。
人が一定範囲に来ると近づいて行き、大きく口を空けて威嚇するようなアニメーションを付加したいと考えています。
イッカクに関しては、泣き声を入れたいので、現在シンセサイザー・ソフトを検討中です。声作りにも時間がかかりそうです。
それと水面に体を出して、角を振りかざしながらユックリ回転させて、ダンスを踊るような仕草もさせてみたいと思っています。
その際に潮も吹かせたいと思います。
そこまで作るには、それなりに時間もかかりそうなので、今後ユックリと研究して対応をしたいとは思います。
尚、他にも作りたい物が山積みでして、以前ちょっと書いたブルーマーリンもそうですし、マダラトビエイも作りたい。それとウミガメもついに作ろうと決心しました。
後は、一番最初に作ろうとして、何度も挫折してきたカクレクマノミにも再度チャレンジ中です。
これは販売用になるかどうか?分からないのですが、けっこう良い感じにはなりつつあります。
これらもある程度製作が進んだらご紹介したいと思います。
それでは、ナポちゃんとイッカクちゃんも宜しくお願いいたします。
2007年12月20日
新作は中々良い感じ^ ^
新作も少しづつ進行中です。
今回はモデリングが結構上手く行ってくれており、動きとかもだいぶ良い感じになってきています。
まずはイッカクですが、こんな感じになってきました。

角もSculptedプリムで作成しました。ねじれた感じがなかなかグー!です。^ ^
現在店の下の海で泳がせていますが、胸鰭と尾びれが動くので、可愛い感じの動きになりました。
そして泳ぐ姿を見ていて、なんとなく家族で泳がせてみようと思い、こんなのも作ってみました。

写真では見づらいですが、角を持ったオスの横に、角の無いメスと間に小さな子供を入れてみました。
これらは3頭が寄り添うように一緒に泳ぎまわります。かなり可愛いですww
そしてブルー・マーリンですが、かなりダイナミックなアクションもつけようと製作中です。

こんな感じでジャンプさせたら・・・釣りの好きな人は堪らないでしょうね。
最後にもう一つ。かなり凄いのができつつあります。それはコレ↓

ナポレオン・フィッシュです。
思いの他モデリングが上手くできてしまい、更に動きがすごく良いです。
尾びれを動かして泳ぐだけでは無く、胸鰭も動きます。
そして、なんと両目がギョロッと動くのです。これはかなりリアルな感じに仕上がりそうです。
ナポレオンは人懐っこい性格で、ダイバーに近づいてきて横目で物欲しそうな顔をして見つめてきます。
そんな感じを出したくて、両目は単独のプリムで作り、キョロキョロ動くようにスクリプトを入れてみました。
それがかなりリアルな動きをするので、本物のナポレオン・フィッシュのような錯覚をしてしまう程、良くできてしまいました。
今は普通に泳ぐだけならイッカクとナポレオンは完成です。
ただ、今回は少し芸を仕込みたいと思います。
具体的には、イッカクには水面に角を出させてダンスを躍らせたいと思っています。できれば声も出すようにしたいし、潮も吹かせたいと思ってます。
ナポレオンですが、人懐っこいナポレオンにするため、初めてセンサーにも挑戦しようと思っています。
人が近くに来たら寄ってきて、周りを横目で見ながら泳ぎ回る感じにしてみたいと思います。
仕組み自体は難しくないのですが、人の周りを泳がすには、多少工夫が必要でしょう。
その辺は、今後少しづつ組み込みながら試してみたいと思います。
まだ販売は先になりますが、今回の作品はモデリングが上手く行っているので、かなり期待できそうです。ご期待下さい。^ ^
今回はモデリングが結構上手く行ってくれており、動きとかもだいぶ良い感じになってきています。
まずはイッカクですが、こんな感じになってきました。

角もSculptedプリムで作成しました。ねじれた感じがなかなかグー!です。^ ^
現在店の下の海で泳がせていますが、胸鰭と尾びれが動くので、可愛い感じの動きになりました。
そして泳ぐ姿を見ていて、なんとなく家族で泳がせてみようと思い、こんなのも作ってみました。

写真では見づらいですが、角を持ったオスの横に、角の無いメスと間に小さな子供を入れてみました。
これらは3頭が寄り添うように一緒に泳ぎまわります。かなり可愛いですww
そしてブルー・マーリンですが、かなりダイナミックなアクションもつけようと製作中です。

こんな感じでジャンプさせたら・・・釣りの好きな人は堪らないでしょうね。
最後にもう一つ。かなり凄いのができつつあります。それはコレ↓

ナポレオン・フィッシュです。
思いの他モデリングが上手くできてしまい、更に動きがすごく良いです。
尾びれを動かして泳ぐだけでは無く、胸鰭も動きます。
そして、なんと両目がギョロッと動くのです。これはかなりリアルな感じに仕上がりそうです。
ナポレオンは人懐っこい性格で、ダイバーに近づいてきて横目で物欲しそうな顔をして見つめてきます。
そんな感じを出したくて、両目は単独のプリムで作り、キョロキョロ動くようにスクリプトを入れてみました。
それがかなりリアルな動きをするので、本物のナポレオン・フィッシュのような錯覚をしてしまう程、良くできてしまいました。
今は普通に泳ぐだけならイッカクとナポレオンは完成です。
ただ、今回は少し芸を仕込みたいと思います。
具体的には、イッカクには水面に角を出させてダンスを躍らせたいと思っています。できれば声も出すようにしたいし、潮も吹かせたいと思ってます。
ナポレオンですが、人懐っこいナポレオンにするため、初めてセンサーにも挑戦しようと思っています。
人が近くに来たら寄ってきて、周りを横目で見ながら泳ぎ回る感じにしてみたいと思います。
仕組み自体は難しくないのですが、人の周りを泳がすには、多少工夫が必要でしょう。
その辺は、今後少しづつ組み込みながら試してみたいと思います。
まだ販売は先になりますが、今回の作品はモデリングが上手く行っているので、かなり期待できそうです。ご期待下さい。^ ^
タグ :SecondLife物造り
2007年12月19日
回転マンタ・スクリプトの総括(番外編)
これで最後ですが、今回の製作時に気が付いた点、困った点等を番外編としてまとめておきます。
1.販売モードの問題
回転マンタは当初次の2タイプでの販売を考えていました。
・「編集不可」「コピー不可」「再販可」
・「編集不可」「コピー可」「再販不可」
ところが様々な制約の関係上、可能となったのは次の2タイプでした。
・「編集不可」「コピー不可」「再販不可」
・「編集不可」「コピー可」「再販不可」

ところが、表示上は上記の通りなのですが、実態はまた違うのです。
詳しく書くと、
・回転軸オブジェクト:「編集可」「コピー可」「再販不可」
・回転軸スクリプト :「編集不可」「コピー不可」「再販可」
・コンテンツ内マンタ:「編集可」「コピー可」「再販不可」
・マンタ内スクリプト:「編集不可」「コピー不可」「再販可」
と設定されています。結果として総合では「全て不可」になる訳です。
「編集不可」「コピー可」「再販不可」タイプはスクリプトも同じ設定にするから、総合でも同じタイプになります。
この辺のモード設定は、けっこう悩ましいです。良くあるのは、オブジェクトの設定とコンテンツ内のテクスチャとかスクリプトの設定が違っていて、思うようなモードにならずに販売してしまったとか・・・気をつけましょう。
で、結局回転マンタは再販可能バージョンが作れなくなってしまったのです。これはけっこう痛い結果です。プレゼント品としては使えないと言う事ですよね。基本的には再販可能モードが一番望ましいと思っていました。不要になったら、誰か欲しい人にでもプレゼントして、長く使ってもらいたかったからです。
その希望は敢え無く消え去りました。。。
2.編集ができてしまう問題
実態はオブジェクトの編集ができてしまいますから、次のような問題が発生し得ると言う事です。
・オブジェクトサイズの変更
これはリンク距離にも関係してしまいますから、スクリプト内で強制的に最大サイズにしたりしてますが、それでも変えられる事にかわりは無いです。
・コンテンツ内の変更ができてしまう。
スクリプトは「編集不可」ですから、スクリプトを書き換えられる心配はありません。しかし、スクリプトを削除する事は可能です。そして、別のスクリプトを入れる事も可能です。
この辺に関して、どう考えるか?悩みどころです。
3.リンク解除やリンク追加なんてのもできちゃう。
編集可能だから、リンクの追加や解除なんてのもできてしまうんですね。

回転中のマンタに、更に別のオブジェクトをリンクさせるとか。。。まあ、別にいいじゃん!と言えばそれまでなんですが・・・
ちなみにリンクの解除をすると、マンタは自動的に消滅してしまいます。
その際、回転軸は透明化されたままなので、一見全て消えてしまったように見えて、けっこう慌てるかもしれません。
あ~。。。そう言うのにも対処しておかないと駄目かな~。。。どんどん面倒な事が増えていく。
そして、姑息な手段ですが、現在の仕様の場合、マンタの中の消滅スクリプトを削除してしまって、リンクを解除すると、マンタ単独のオブジェクトが手に入ってしまいます。
もっとも「再販不可」だから、そうなっても別に構わないと言えば構わないのですが・・・でも、知らない所で、違う使い方されているのは、ちょいと気持ちが悪いかも?
この辺はSculpted Dolphins Shopのイルカとオルカも同じです。実際に試してみたら、オルカのオブジェクトが単独で手に入りました。
が、Sculptedのアニメーション部分は動作しなくなってしまいます。それが動けば、自分のフリー・ムーブ・スクリプト入れて泳がせようと思ったのに・・・一応先方も色々考えて対策しているみたいですね^ ^;
4.マンタのリンク距離に関して
これがちょっと不思議だったのですが、βグリットと本番とでは少し違いました。
マンタのサイズ別最大リンク距離は以下のようになります。
β 本番
Super Big 29m 27m
Big 26m 29m
Middle 24m 28m
Small 21m 24m
βグリットの方がマンタの大きさによって距離が伸びており、予想通りの数字だったのですが、そのまま本番で試すと、SuperBig以外は距離が伸びて、SuperBigだけは縮んでしまいました。結局は両方の値を参考に最大可能距離を決めましたが、この辺はSIM環境にもよるのかも知れないので、もう少し追加調査もしてみたい気がします。
と言う事で、簡単と思って始めた回転マンタは、このように厄介な状況を引き起こし、更には途中でリンデン社のサポートまで巻き込んで大騒ぎした事件も引き起こし(自業自得だっちゃ)、いまだに販売するかどうかも決めかねている状況です。
まあね、スクリプトに関しては色々と勉強できたことだし、この経験はきっと今後の物作りに役立つであろう。。。
そう思って、締めくくりたいと思います。
しかし、回転マンタは売るかな?って売れるかな?どうしよう?
まだまだ悩みは続く・・・
1.販売モードの問題
回転マンタは当初次の2タイプでの販売を考えていました。
・「編集不可」「コピー不可」「再販可」
・「編集不可」「コピー可」「再販不可」
ところが様々な制約の関係上、可能となったのは次の2タイプでした。
・「編集不可」「コピー不可」「再販不可」
・「編集不可」「コピー可」「再販不可」

ところが、表示上は上記の通りなのですが、実態はまた違うのです。
詳しく書くと、
・回転軸オブジェクト:「編集可」「コピー可」「再販不可」
・回転軸スクリプト :「編集不可」「コピー不可」「再販可」
・コンテンツ内マンタ:「編集可」「コピー可」「再販不可」
・マンタ内スクリプト:「編集不可」「コピー不可」「再販可」
と設定されています。結果として総合では「全て不可」になる訳です。
「編集不可」「コピー可」「再販不可」タイプはスクリプトも同じ設定にするから、総合でも同じタイプになります。
この辺のモード設定は、けっこう悩ましいです。良くあるのは、オブジェクトの設定とコンテンツ内のテクスチャとかスクリプトの設定が違っていて、思うようなモードにならずに販売してしまったとか・・・気をつけましょう。
で、結局回転マンタは再販可能バージョンが作れなくなってしまったのです。これはけっこう痛い結果です。プレゼント品としては使えないと言う事ですよね。基本的には再販可能モードが一番望ましいと思っていました。不要になったら、誰か欲しい人にでもプレゼントして、長く使ってもらいたかったからです。
その希望は敢え無く消え去りました。。。
2.編集ができてしまう問題
実態はオブジェクトの編集ができてしまいますから、次のような問題が発生し得ると言う事です。
・オブジェクトサイズの変更
これはリンク距離にも関係してしまいますから、スクリプト内で強制的に最大サイズにしたりしてますが、それでも変えられる事にかわりは無いです。
・コンテンツ内の変更ができてしまう。
スクリプトは「編集不可」ですから、スクリプトを書き換えられる心配はありません。しかし、スクリプトを削除する事は可能です。そして、別のスクリプトを入れる事も可能です。
この辺に関して、どう考えるか?悩みどころです。
3.リンク解除やリンク追加なんてのもできちゃう。
編集可能だから、リンクの追加や解除なんてのもできてしまうんですね。

回転中のマンタに、更に別のオブジェクトをリンクさせるとか。。。まあ、別にいいじゃん!と言えばそれまでなんですが・・・
ちなみにリンクの解除をすると、マンタは自動的に消滅してしまいます。
その際、回転軸は透明化されたままなので、一見全て消えてしまったように見えて、けっこう慌てるかもしれません。
あ~。。。そう言うのにも対処しておかないと駄目かな~。。。どんどん面倒な事が増えていく。
そして、姑息な手段ですが、現在の仕様の場合、マンタの中の消滅スクリプトを削除してしまって、リンクを解除すると、マンタ単独のオブジェクトが手に入ってしまいます。
もっとも「再販不可」だから、そうなっても別に構わないと言えば構わないのですが・・・でも、知らない所で、違う使い方されているのは、ちょいと気持ちが悪いかも?
この辺はSculpted Dolphins Shopのイルカとオルカも同じです。実際に試してみたら、オルカのオブジェクトが単独で手に入りました。
が、Sculptedのアニメーション部分は動作しなくなってしまいます。それが動けば、自分のフリー・ムーブ・スクリプト入れて泳がせようと思ったのに・・・一応先方も色々考えて対策しているみたいですね^ ^;
4.マンタのリンク距離に関して
これがちょっと不思議だったのですが、βグリットと本番とでは少し違いました。
マンタのサイズ別最大リンク距離は以下のようになります。
β 本番
Super Big 29m 27m
Big 26m 29m
Middle 24m 28m
Small 21m 24m
βグリットの方がマンタの大きさによって距離が伸びており、予想通りの数字だったのですが、そのまま本番で試すと、SuperBig以外は距離が伸びて、SuperBigだけは縮んでしまいました。結局は両方の値を参考に最大可能距離を決めましたが、この辺はSIM環境にもよるのかも知れないので、もう少し追加調査もしてみたい気がします。
と言う事で、簡単と思って始めた回転マンタは、このように厄介な状況を引き起こし、更には途中でリンデン社のサポートまで巻き込んで大騒ぎした事件も引き起こし(自業自得だっちゃ)、いまだに販売するかどうかも決めかねている状況です。
まあね、スクリプトに関しては色々と勉強できたことだし、この経験はきっと今後の物作りに役立つであろう。。。
そう思って、締めくくりたいと思います。
しかし、回転マンタは売るかな?って売れるかな?どうしよう?
まだまだ悩みは続く・・・
2007年12月19日
アバターの変遷記録
昨夜AirLandグループのグループ名称がAirLandに変わりました。^ ^
って意味分からないですよね?
実は今までAirLandグループのグループ名称はNekojyoだったのです。表示はAirLandになってましたが、グループとしてはAirLandは存在しなかったのですね。そこで、グループ名称からAirLandに変更しようと言う事になって、新しくAirLandと言う名称のグループが昨夜作成されたのです。
現在、各人が土地設定他のグループ変更に大わらわ状態です。w
で、なんとなく初めてAirLandに参加した頃を思い出して、過去のスナップショットを探したら出てきました。恥ずかしい昔のアバターの写真が。。。^ ^;
でも記念だから、この際掲載して残しておきます。
まずは一番最初の頃の写真。2007年5月初旬ですね。

この家は「Japanese Resident Learning Cente」と言うLinden Villageにある日本人向けの学習施設の隣にある豪邸に入り込んで撮った写真です。
まだMeltingdotsで配布された男性アバターセットのままです。チョッキだけが上野で貰ったフリーアイテムと言う状態ですね。
メガネは何処かのフリーアイテムだと思います。まだこの頃は1円も使っていない時期です。w
当時は土地も家も無く、道端で着替えるのも恥ずかしいので、ちゃっかり此処へ来ては着替えたり、フリーアイテムを出してチェックしたりしてました。
そしたら後日、出入り禁止登録されてしまい、二度と入れなくなりました。orz
ちなみに、この豪邸はLinden社の従業員の持ち物のようです。
この頃は、時々女装もしていました。理由はダンスパッドで小銭稼ぎするためです。先のトッチャン坊やスタイルで踊ると、実に格好が悪いのですよね。それに当時は男性物のアイテムは非常に少なかったのです。


最近は女装することは全く無くなりましたので、ある意味貴重な写真かも知れませんね。^ ^
SL登録してちょうど2週間頃の写真だと思います。
この後で、やっぱ自分の家が必要と感じて、AirLandに住む事になったのです。
そして、AirLandの住人の垢抜けた姿を見て、「おー!俺も少しは格好良くしないと・・・」と思ったものです。
で、スキンとヘアーを買ってきて着ける様になったのでした。その頃の写真はコレ↓2007年6月初旬です。


うー全然格好良くない。><
で、やっぱスマートな体型にしようと思い、次のような格好もしだしました。


どうもシェイプの調整とかが上手くいかず、パッとしないオニイチャンになってしまいましたが、まあ少しは良いでしょうww
そして、この頃から本格的に海洋生物作成に取り掛かる事になり、ファッションなんてかまってられない状態になったので、このまま変化せずに過ごしてました。
そんな時運命のタイニーアバター展へと行く事になり、そこで、タヌキアバターに一目惚れしてしまい、今のタヌキーアバター姿へと変わるのです。それが2007年6月末の事です。

この格好は長くて、10月頃までずっとこの格好で居ました。時々人間姿にはなりましたが、ほどんとがタヌキ姿でした。
一番気に入っていた事は、このタヌキはタッチすると茶釜に変身して、アバターに見えなくなる事です。
人混みとかへ行って、ちょっと考え事したい時とかは、茶釜に変身してボーっとしていたりできるので、実に便利でした。w
その後陣笠を手に入れて、益々タヌキ道にはまっていきます。

そして11月中旬からは、冬場用にと現在の「ハリー・ポン太」に変えています。

そして、最近の人間姿がコレです。↓

うっ!6月頃とほどんと変わっていない・・・
まあ、着てる物もメガネもヘアーも同じですからね。でもスキンとシェイプは大きく変わっています。けっこう垢抜けた感じにはなっていると思うのですが。。。^ ^;
と言う事で、2007年5月5日生まれのGonbe Shanも、少しはSL世界に馴染んできたようです。
ただ、ファッションには無頓着なので、今後は余り変身はしないかもしれません。それよりは、良い海洋生物を一つでも多く作成したいと思いますので。
ではでは、今後とも宜しくー。^ ^
って意味分からないですよね?
実は今までAirLandグループのグループ名称はNekojyoだったのです。表示はAirLandになってましたが、グループとしてはAirLandは存在しなかったのですね。そこで、グループ名称からAirLandに変更しようと言う事になって、新しくAirLandと言う名称のグループが昨夜作成されたのです。
現在、各人が土地設定他のグループ変更に大わらわ状態です。w
で、なんとなく初めてAirLandに参加した頃を思い出して、過去のスナップショットを探したら出てきました。恥ずかしい昔のアバターの写真が。。。^ ^;
でも記念だから、この際掲載して残しておきます。
まずは一番最初の頃の写真。2007年5月初旬ですね。

この家は「Japanese Resident Learning Cente」と言うLinden Villageにある日本人向けの学習施設の隣にある豪邸に入り込んで撮った写真です。
まだMeltingdotsで配布された男性アバターセットのままです。チョッキだけが上野で貰ったフリーアイテムと言う状態ですね。
メガネは何処かのフリーアイテムだと思います。まだこの頃は1円も使っていない時期です。w
当時は土地も家も無く、道端で着替えるのも恥ずかしいので、ちゃっかり此処へ来ては着替えたり、フリーアイテムを出してチェックしたりしてました。
そしたら後日、出入り禁止登録されてしまい、二度と入れなくなりました。orz
ちなみに、この豪邸はLinden社の従業員の持ち物のようです。
この頃は、時々女装もしていました。理由はダンスパッドで小銭稼ぎするためです。先のトッチャン坊やスタイルで踊ると、実に格好が悪いのですよね。それに当時は男性物のアイテムは非常に少なかったのです。


最近は女装することは全く無くなりましたので、ある意味貴重な写真かも知れませんね。^ ^
SL登録してちょうど2週間頃の写真だと思います。
この後で、やっぱ自分の家が必要と感じて、AirLandに住む事になったのです。
そして、AirLandの住人の垢抜けた姿を見て、「おー!俺も少しは格好良くしないと・・・」と思ったものです。
で、スキンとヘアーを買ってきて着ける様になったのでした。その頃の写真はコレ↓2007年6月初旬です。


うー全然格好良くない。><
で、やっぱスマートな体型にしようと思い、次のような格好もしだしました。


どうもシェイプの調整とかが上手くいかず、パッとしないオニイチャンになってしまいましたが、まあ少しは良いでしょうww
そして、この頃から本格的に海洋生物作成に取り掛かる事になり、ファッションなんてかまってられない状態になったので、このまま変化せずに過ごしてました。
そんな時運命のタイニーアバター展へと行く事になり、そこで、タヌキアバターに一目惚れしてしまい、今のタヌキーアバター姿へと変わるのです。それが2007年6月末の事です。

この格好は長くて、10月頃までずっとこの格好で居ました。時々人間姿にはなりましたが、ほどんとがタヌキ姿でした。
一番気に入っていた事は、このタヌキはタッチすると茶釜に変身して、アバターに見えなくなる事です。
人混みとかへ行って、ちょっと考え事したい時とかは、茶釜に変身してボーっとしていたりできるので、実に便利でした。w
その後陣笠を手に入れて、益々タヌキ道にはまっていきます。

そして11月中旬からは、冬場用にと現在の「ハリー・ポン太」に変えています。

そして、最近の人間姿がコレです。↓

うっ!6月頃とほどんと変わっていない・・・
まあ、着てる物もメガネもヘアーも同じですからね。でもスキンとシェイプは大きく変わっています。けっこう垢抜けた感じにはなっていると思うのですが。。。^ ^;
と言う事で、2007年5月5日生まれのGonbe Shanも、少しはSL世界に馴染んできたようです。
ただ、ファッションには無頓着なので、今後は余り変身はしないかもしれません。それよりは、良い海洋生物を一つでも多く作成したいと思いますので。
ではでは、今後とも宜しくー。^ ^
タグ :SecondLife
2007年12月18日
回転マンタ・スクリプトの総括(3)
さてさて回転マンタ・スクリプトの総括の続きです。
4.llCreateLink
リンク生成の関数です。先にマンタが最後に自分のUUIDをメッセージで飛ばしていたのは、このためでした。
llCreateLink(key target, integer parent)
key targetにリンクする相手のUUIDを指定する必要があります。
integer parentにはTHRUEかFALSEを指定します。THRUEなら自分をルートにし、FALSEなら相手をルートにします。
今回のケースでは、回転軸側で発行していますので、THRUEを指定しています。
ここで幾つか問題になった事がありました。
・リンクするオブジェクトに対して、オーナーは編集権限を持っていないといけない事。
・リンクが成功したか、失敗したかの判断方法。
・アバターがオブジェクトに座る行為もリンクと見なされる事。
まずはリンク結果の判断方法ですが、これも色々考えられます。
(1)Changeイベントで判断する
今回使っているのはこの方法です。リンクが成功すればChangeイベントが発生します。
実際には以下のような処理をしてます。
changed(integer change){
if (change & CHANGED_LINK) {
llSetTimerEvent(0);
status = 1;
llMessageLinked( LINK_SET, status, msg_sta, NULL_KEY);
state moving;
}
}
これはif文でリンクの状態が変わったかどうかを判断しています。今回の仕様では、リンク生成を発したオブジェクトは、その時点では単独オブジェクトですから、リンク状態が変わった=リンク成功と考えています。
ただ、Changeイベントだけでは、リンクが失敗した場合は判定ができません。
仮に先のif文でelseを指定した場合はどうなるか?それは、リンク以外での状態が変わった事を意味します。オーナーが変わったとか、大きさが変わったとか・・今回はリンクが変わった時のみを対象としてますから、elseの指定は無いです。
また、リンク生成を発生させた後、タイマー設定して、タイマーイベントが発生したら、リンクが失敗したと判定させています。
もしリンクが成功していれば、changeイベントが先に発生しますから、タイマーイベントは発生し無い事になりますので。
(2)リンクNumberで判断(llGetLinkNumber)
llGetLinkNumber()で自分のリンク番号を取得して判断する事もできます。
単独プリムの場合はllGetLinkNumber()=0になります。自分をルートとしてリンクに成功するとllGetLinkNumber()=1に変わります。
ただし、この場合もタイムラグ等もあるので、一定時間待って番号を取得した方が良いでしょう。1秒待って番号を取得して、番号が変わって居なければリンクは失敗したと判断するとかです。
(3)リンク失敗のシステムメッセージを取得できないか?
結論から言うと取得できないようです。この方式は断念しました。
参考までに書いておきますと、リンク失敗した場合には次のようなダイアログとシステムメッセージが出力されます。


このメッセージを取得できれば、確実にリンク失敗を検知できることになります。
この点に関しては、MizさんのBBSに投稿し、Mizさん自身からもご意見をいただきました。結論はデバッグチャネルにも通常チャネルにも出力されていないようで、lissenイベントでは取得できませんでした。うーん。。。残念。
今回(1)の方法を採用した理由は、単にchangeイベントを使ってみたかったからです。
まあ、最終的には(1)と(2)の両方を使って、確実にリンク状態を把握して対応する事になりましたが。
そして、もう一つの問題である、座られてもリンク状態が変わると言う点ですが、これは無視する事にしました。理由は「座れないから」です。
フリー・ムーブ・マンタで以前書きましたが、完全ファントム化すると座れないのです。座れないオブジェクトで有る以上、座られた時の状態変化を考慮する必要は無くなります。
さて、残る問題はオーナーに「編集権限」を与えなくてはならない事です。
実はこれも厄介なのです。
今回の仕様では、回転軸オブジェクトをSculptedで作って、見た目は小さく、実は10m四方の大きなオブジェクトにしています。これはマンタのリンク可能距離を最大化するためです。
ところが、編集可能な状態にしてしまったら、購入者が勝手に回転軸プリムを小さくできてしまう事になります。これでは、せっかく最大距離までリンク可能にして。その範囲チェックまでしていても意味が無くなってしまいます。
でも「編集権限」が無いとリンク生成ができません。。。と言う事で、姑息な手段をとりました。
スクリプト内で、強制的にスケールを10m四方にしてしまう事です。勿論マニュアルで変更できてしまうのですが、リンク生成する直前には、必ず最大サイズにスケール変更かけてリンク命令を出すようにしました。
これなら、確実にリンク距離が保障できますから。
しかし、リンク生成に関しては、更なる問題も発見しました。
それは、「対象オブジェクトは同じ権限(次のオーナーが実行できる操作)状態で無いとリンクできない!」と言う事でした。
具体的には、回転軸プリムは「編集可」「コピー不可」「再販可」に設定していました。そしてコンテンツ内のマンタは、「編集可」「コピー可」「再販不可」にしてあったのですが、この状態で他の人へ渡して使わせるとリンクエラーが出てしまいます。
エラーは「 Link failed -- cannot link no-copy with no-transfer」と言う物です。

どうも、回転軸プリムとマンタとで権限が違うためにエラーになったようです。
試しに両方とも「編集可」「コピー可」「再販不可」に揃えたらエラーは消えました。同様に、「編集可」「コピー不可」「再販可」に揃えてもエラーにはなりません。正常にリンクできました。
でも、「編集可」「コピー不可」「再販可」の設定では、on_rezで書いたとおり、1回Rezしたらマンタがコンテンツ内から消えてしまう事になってしまいます。結局は「編集可」「コピー可」「再販不可」に揃える以外には無いと言う事です。
5.llBreakAllLinks
前項がリンクの生成でしたが、今回はリンクの全解除です。
何のために使っているか?それは、回転しているマンタを再設定する場合に必要だからです。
今回の仕様では、ダイアログでサイズ、回転方向、回転半径の設定ができますが、これらの設定内容は、マンタをコンテンツ内からRezした時に反映するようになっています。
ですから、動いているマンタを止めて、再度ダイアログで設定する場合には、一旦マンタを消滅させないといけません。
そこで、一度リンクを全解除し、その後マンタの部分だけを消滅させると言う訳です。
この仕組みを書くと次のようになります。
(1)マンタ(又は透明ながら回転軸)にタッチ
(2)停止命令がリンクメッセージで発令
(3)停止命令にそって、回転軸スクリプトはリンク全解除を発令し、透明化を解除してダイアログを表示
(4)マンタ側の各パーツはリンクが解除されると、自分自身を消滅させる。
と言う具合です。
llBreakAllLinksもllCreateLinkと同様に、オーナーには対象オブジェクトに対する編集権限が必要になります。
又、今回は全解除してますが、リンク番号を指定した部分解除も可能です。その場合はllBreakLinkを使います。
6.llDie
プリムを消滅させる命令です。
先に書いたようにリンクを全解除して、それぞれのパーツ毎にllDieを記述して消滅させています。
勿論回転軸には書かれていません。
が、リンク解除命令発動後、即各パーツで実行すると、何故か回転軸も巻き込まれて消滅してしまいます。
リンク生成やリンク解除時には、若干のタイムラグがあるそうです。リンク生成時にも1秒程度のタイムラグがあるとlslWikiにも書いてありました。 解除時も同様のようです。
実際のスクリプトとしては、今回もchangeイベントを使用しています。
default
{
changed(integer change){
if (change & CHANGED_LINK) {
if(llGetLinkNumber()==0){
llSleep(0.5);
llDie();
}
}
}
}
てな感じですね。
念のためllGetLinkNumber()==0で自分が単独プリムになっている事まで確認しています。
そして、0.5秒待って消滅!と言う事です。
llDieはもう一箇所使ってます。
それは、リンク生成失敗時の処理です。リンク生成に失敗したと回転軸プリムが認識したら、「死ね!」とメッセージを叫びます。それをマンタは受け取り、「ご主人様の命じるままに。。。」と自ら消滅するのです。
なんとなく哀れな感じもしますけど、まあしょうがないですね。そのままでは動けないのですから。
と言う事で、これで新たに使ってみたスクリプト関係のお話は終わりです。
最初は簡単そうだから・・・と思って始めた回転型マンタでしたが、実際には非常に面倒でした。しかし、どうしてもサイズ調整やリンク距離の調整、回転方向等を設定で入るようにしたかったので、ここまで複雑になってしまったのです。
そして、何より厄介だったのは、マンタをバラさずに調整したいと言う事でした。
マンタを分解した状態で、先の調整を実現する方が遥かに厄介に感じていたのです。でも終わってみると、個々の位置関係を詳細に記録して、最初からリンクした状態で調整した方が簡単だったかな?などと思えてしまいます。
現時点でもこのスクリプト仕様で販売しようか?どうしようか?まだ迷っています。
それはまだ販売上は問題になりそうな部分が残っているからです。その辺は次回「番外編」で書きたいと思います。
4.llCreateLink
リンク生成の関数です。先にマンタが最後に自分のUUIDをメッセージで飛ばしていたのは、このためでした。
llCreateLink(key target, integer parent)
key targetにリンクする相手のUUIDを指定する必要があります。
integer parentにはTHRUEかFALSEを指定します。THRUEなら自分をルートにし、FALSEなら相手をルートにします。
今回のケースでは、回転軸側で発行していますので、THRUEを指定しています。
ここで幾つか問題になった事がありました。
・リンクするオブジェクトに対して、オーナーは編集権限を持っていないといけない事。
・リンクが成功したか、失敗したかの判断方法。
・アバターがオブジェクトに座る行為もリンクと見なされる事。
まずはリンク結果の判断方法ですが、これも色々考えられます。
(1)Changeイベントで判断する
今回使っているのはこの方法です。リンクが成功すればChangeイベントが発生します。
実際には以下のような処理をしてます。
changed(integer change){
if (change & CHANGED_LINK) {
llSetTimerEvent(0);
status = 1;
llMessageLinked( LINK_SET, status, msg_sta, NULL_KEY);
state moving;
}
}
これはif文でリンクの状態が変わったかどうかを判断しています。今回の仕様では、リンク生成を発したオブジェクトは、その時点では単独オブジェクトですから、リンク状態が変わった=リンク成功と考えています。
ただ、Changeイベントだけでは、リンクが失敗した場合は判定ができません。
仮に先のif文でelseを指定した場合はどうなるか?それは、リンク以外での状態が変わった事を意味します。オーナーが変わったとか、大きさが変わったとか・・今回はリンクが変わった時のみを対象としてますから、elseの指定は無いです。
また、リンク生成を発生させた後、タイマー設定して、タイマーイベントが発生したら、リンクが失敗したと判定させています。
もしリンクが成功していれば、changeイベントが先に発生しますから、タイマーイベントは発生し無い事になりますので。
(2)リンクNumberで判断(llGetLinkNumber)
llGetLinkNumber()で自分のリンク番号を取得して判断する事もできます。
単独プリムの場合はllGetLinkNumber()=0になります。自分をルートとしてリンクに成功するとllGetLinkNumber()=1に変わります。
ただし、この場合もタイムラグ等もあるので、一定時間待って番号を取得した方が良いでしょう。1秒待って番号を取得して、番号が変わって居なければリンクは失敗したと判断するとかです。
(3)リンク失敗のシステムメッセージを取得できないか?
結論から言うと取得できないようです。この方式は断念しました。
参考までに書いておきますと、リンク失敗した場合には次のようなダイアログとシステムメッセージが出力されます。


このメッセージを取得できれば、確実にリンク失敗を検知できることになります。
この点に関しては、MizさんのBBSに投稿し、Mizさん自身からもご意見をいただきました。結論はデバッグチャネルにも通常チャネルにも出力されていないようで、lissenイベントでは取得できませんでした。うーん。。。残念。
今回(1)の方法を採用した理由は、単にchangeイベントを使ってみたかったからです。
まあ、最終的には(1)と(2)の両方を使って、確実にリンク状態を把握して対応する事になりましたが。
そして、もう一つの問題である、座られてもリンク状態が変わると言う点ですが、これは無視する事にしました。理由は「座れないから」です。
フリー・ムーブ・マンタで以前書きましたが、完全ファントム化すると座れないのです。座れないオブジェクトで有る以上、座られた時の状態変化を考慮する必要は無くなります。
さて、残る問題はオーナーに「編集権限」を与えなくてはならない事です。
実はこれも厄介なのです。
今回の仕様では、回転軸オブジェクトをSculptedで作って、見た目は小さく、実は10m四方の大きなオブジェクトにしています。これはマンタのリンク可能距離を最大化するためです。
ところが、編集可能な状態にしてしまったら、購入者が勝手に回転軸プリムを小さくできてしまう事になります。これでは、せっかく最大距離までリンク可能にして。その範囲チェックまでしていても意味が無くなってしまいます。
でも「編集権限」が無いとリンク生成ができません。。。と言う事で、姑息な手段をとりました。
スクリプト内で、強制的にスケールを10m四方にしてしまう事です。勿論マニュアルで変更できてしまうのですが、リンク生成する直前には、必ず最大サイズにスケール変更かけてリンク命令を出すようにしました。
これなら、確実にリンク距離が保障できますから。
しかし、リンク生成に関しては、更なる問題も発見しました。
それは、「対象オブジェクトは同じ権限(次のオーナーが実行できる操作)状態で無いとリンクできない!」と言う事でした。
具体的には、回転軸プリムは「編集可」「コピー不可」「再販可」に設定していました。そしてコンテンツ内のマンタは、「編集可」「コピー可」「再販不可」にしてあったのですが、この状態で他の人へ渡して使わせるとリンクエラーが出てしまいます。
エラーは「 Link failed -- cannot link no-copy with no-transfer」と言う物です。

どうも、回転軸プリムとマンタとで権限が違うためにエラーになったようです。
試しに両方とも「編集可」「コピー可」「再販不可」に揃えたらエラーは消えました。同様に、「編集可」「コピー不可」「再販可」に揃えてもエラーにはなりません。正常にリンクできました。
でも、「編集可」「コピー不可」「再販可」の設定では、on_rezで書いたとおり、1回Rezしたらマンタがコンテンツ内から消えてしまう事になってしまいます。結局は「編集可」「コピー可」「再販不可」に揃える以外には無いと言う事です。
5.llBreakAllLinks
前項がリンクの生成でしたが、今回はリンクの全解除です。
何のために使っているか?それは、回転しているマンタを再設定する場合に必要だからです。
今回の仕様では、ダイアログでサイズ、回転方向、回転半径の設定ができますが、これらの設定内容は、マンタをコンテンツ内からRezした時に反映するようになっています。
ですから、動いているマンタを止めて、再度ダイアログで設定する場合には、一旦マンタを消滅させないといけません。
そこで、一度リンクを全解除し、その後マンタの部分だけを消滅させると言う訳です。
この仕組みを書くと次のようになります。
(1)マンタ(又は透明ながら回転軸)にタッチ
(2)停止命令がリンクメッセージで発令
(3)停止命令にそって、回転軸スクリプトはリンク全解除を発令し、透明化を解除してダイアログを表示
(4)マンタ側の各パーツはリンクが解除されると、自分自身を消滅させる。
と言う具合です。
llBreakAllLinksもllCreateLinkと同様に、オーナーには対象オブジェクトに対する編集権限が必要になります。
又、今回は全解除してますが、リンク番号を指定した部分解除も可能です。その場合はllBreakLinkを使います。
6.llDie
プリムを消滅させる命令です。
先に書いたようにリンクを全解除して、それぞれのパーツ毎にllDieを記述して消滅させています。
勿論回転軸には書かれていません。
が、リンク解除命令発動後、即各パーツで実行すると、何故か回転軸も巻き込まれて消滅してしまいます。
リンク生成やリンク解除時には、若干のタイムラグがあるそうです。リンク生成時にも1秒程度のタイムラグがあるとlslWikiにも書いてありました。 解除時も同様のようです。
実際のスクリプトとしては、今回もchangeイベントを使用しています。
default
{
changed(integer change){
if (change & CHANGED_LINK) {
if(llGetLinkNumber()==0){
llSleep(0.5);
llDie();
}
}
}
}
てな感じですね。
念のためllGetLinkNumber()==0で自分が単独プリムになっている事まで確認しています。
そして、0.5秒待って消滅!と言う事です。
llDieはもう一箇所使ってます。
それは、リンク生成失敗時の処理です。リンク生成に失敗したと回転軸プリムが認識したら、「死ね!」とメッセージを叫びます。それをマンタは受け取り、「ご主人様の命じるままに。。。」と自ら消滅するのです。
なんとなく哀れな感じもしますけど、まあしょうがないですね。そのままでは動けないのですから。
と言う事で、これで新たに使ってみたスクリプト関係のお話は終わりです。
最初は簡単そうだから・・・と思って始めた回転型マンタでしたが、実際には非常に面倒でした。しかし、どうしてもサイズ調整やリンク距離の調整、回転方向等を設定で入るようにしたかったので、ここまで複雑になってしまったのです。
そして、何より厄介だったのは、マンタをバラさずに調整したいと言う事でした。
マンタを分解した状態で、先の調整を実現する方が遥かに厄介に感じていたのです。でも終わってみると、個々の位置関係を詳細に記録して、最初からリンクした状態で調整した方が簡単だったかな?などと思えてしまいます。
現時点でもこのスクリプト仕様で販売しようか?どうしようか?まだ迷っています。
それはまだ販売上は問題になりそうな部分が残っているからです。その辺は次回「番外編」で書きたいと思います。
2007年12月18日
回転マンタ・スクリプトの総括(2)
さて前回の続きです。
3.on_rezイベント
on_rezイベントは目新しいイベントではありません。今までも必ず使っていたイベントです。
これはRezした時に発生するイベントで、良く使う使い方としては、次のような物です。
on_rez(integer param)
{
llResetScript();
}
これはRezした時にスクリプトをリセットさせるものです。以前も書いたのですが、スクリプトの一番最初に、オーナーのUUIDを取得したり、各種変数の初期化をしたりする事が多くあります。それらを最初からセットし直したい場合等は、このイベントを使って、必ず最初から実行するようにさせています。
今回は、このような単純な使い方では無く、回転軸オブジェクトからRezされた時に行う処理として使っています。
以下に実際のスクリプトを示します。
float radius;
float def_size = 3.0;
integer size_no;
list scale_p = [1.5,3.0,4.5,6.0];
float f;
integer chanel = -3;
integer i;
integer j;
default
{
on_rez(integer param){
if(param>0){
size_no = (integer)llGetSubString((string)param, 0, 0)-1;
radius = (float)llGetSubString((string)param, 1, 2);
if(size_no!=1){
f = llList2Float(scale_p,size_no)/def_size;
llMessageLinked( LINK_SET, 90, (string)f, NULL_KEY);
}
llSleep(0.5);
j=llFloor(radius/10.0);
for(i=1;i<=j;i++){
llSetPos(llGetPos()+<10.0,0.0,0.0>);
}
llSetPos(llGetPos()+<(float)radius-j*10,0.0,0.0>);
llShout(chanel,llGetKey());
}
}
}
これはon_rezイベントだけのスクリプトで、マンタがRezされた時のみ実行されます。
最初のif文はRez時に引き渡されたパラメータ内容のチェックです。parm=0と言う事は、オブジェクトからRezされたのでは無く、単独で持ち物からRezされた場合を意味します。
もし持ち物からRezされた場合は何もしません。(これは制作時の為の条件です。販売時には持ち物からRezされる事は有り得ませんから)
parm>0と言う事は、何らかの値が引き渡されていると言う事ですから、その値の1桁目をサイズNOとして切り出し、残りの2桁をリンク距離として切り出しています。
そして、取得したサイズNOとリストで保持しているサイズ表から、標準(マンタ本体が3m)との比率を求めて、その結果をマンタの各パーツへとリンクメッセージで伝達しています。
勿論各パーツには、このメッセージを受け取って、自分のサイズとマンタ本体からの相対位置調整を行うスクリプトが入っています。
更にマンタは0.5秒待って、指定されたリンク距離へと移動をします。0.5秒待つ理由は、各パーツのサイズ調整が揃わないケースが発生したからです。
ここが以前暴走して問題になった箇所で、llSetPosで一回に移動できる距離が10mだったので、指定が25mとかの場合は、10m単位で2回移動させ、その後端数の5m移動するような仕組みが必要でした。
その部分がforループとループを抜けた後に出てくるllSetPosの部分です。
そして最後に自分のUUIDを取得して、llShoutでメッセージを飛ばしています。勿論相手は自分をRezした回転の中心軸オブジェクトに対してです。
llShoutを使っているのはllSayが20mまでとなっており、リンク距離が20m以上になっていた場合、声が届かないからです。
llShoutなら100mまで声が届きますので。
この部分では、まだ未確認の問題も残っています。
それは、進入禁止とかプリム設置制限一杯の土地にマンタが移動しようとして、侵入できずにエラーが出た場合です。
その場で止まるだけなら問題は無いですが、一応確認は必要だと思っています。
それと、この場合はリンクできたとしても、設定距離に達していないので、実際の遊泳半径を求めて、設定値を変えておく方が本当は良いのでしょうね。そこまではまだ対応していないです。><
うー。。。なんやかやと面倒じゃのー。
3.on_rezイベント
on_rezイベントは目新しいイベントではありません。今までも必ず使っていたイベントです。
これはRezした時に発生するイベントで、良く使う使い方としては、次のような物です。
on_rez(integer param)
{
llResetScript();
}
これはRezした時にスクリプトをリセットさせるものです。以前も書いたのですが、スクリプトの一番最初に、オーナーのUUIDを取得したり、各種変数の初期化をしたりする事が多くあります。それらを最初からセットし直したい場合等は、このイベントを使って、必ず最初から実行するようにさせています。
今回は、このような単純な使い方では無く、回転軸オブジェクトからRezされた時に行う処理として使っています。
以下に実際のスクリプトを示します。
float radius;
float def_size = 3.0;
integer size_no;
list scale_p = [1.5,3.0,4.5,6.0];
float f;
integer chanel = -3;
integer i;
integer j;
default
{
on_rez(integer param){
if(param>0){
size_no = (integer)llGetSubString((string)param, 0, 0)-1;
radius = (float)llGetSubString((string)param, 1, 2);
if(size_no!=1){
f = llList2Float(scale_p,size_no)/def_size;
llMessageLinked( LINK_SET, 90, (string)f, NULL_KEY);
}
llSleep(0.5);
j=llFloor(radius/10.0);
for(i=1;i<=j;i++){
llSetPos(llGetPos()+<10.0,0.0,0.0>);
}
llSetPos(llGetPos()+<(float)radius-j*10,0.0,0.0>);
llShout(chanel,llGetKey());
}
}
}
これはon_rezイベントだけのスクリプトで、マンタがRezされた時のみ実行されます。
最初のif文はRez時に引き渡されたパラメータ内容のチェックです。parm=0と言う事は、オブジェクトからRezされたのでは無く、単独で持ち物からRezされた場合を意味します。
もし持ち物からRezされた場合は何もしません。(これは制作時の為の条件です。販売時には持ち物からRezされる事は有り得ませんから)
parm>0と言う事は、何らかの値が引き渡されていると言う事ですから、その値の1桁目をサイズNOとして切り出し、残りの2桁をリンク距離として切り出しています。
そして、取得したサイズNOとリストで保持しているサイズ表から、標準(マンタ本体が3m)との比率を求めて、その結果をマンタの各パーツへとリンクメッセージで伝達しています。
勿論各パーツには、このメッセージを受け取って、自分のサイズとマンタ本体からの相対位置調整を行うスクリプトが入っています。
更にマンタは0.5秒待って、指定されたリンク距離へと移動をします。0.5秒待つ理由は、各パーツのサイズ調整が揃わないケースが発生したからです。
ここが以前暴走して問題になった箇所で、llSetPosで一回に移動できる距離が10mだったので、指定が25mとかの場合は、10m単位で2回移動させ、その後端数の5m移動するような仕組みが必要でした。
その部分がforループとループを抜けた後に出てくるllSetPosの部分です。
そして最後に自分のUUIDを取得して、llShoutでメッセージを飛ばしています。勿論相手は自分をRezした回転の中心軸オブジェクトに対してです。
llShoutを使っているのはllSayが20mまでとなっており、リンク距離が20m以上になっていた場合、声が届かないからです。
llShoutなら100mまで声が届きますので。
この部分では、まだ未確認の問題も残っています。
それは、進入禁止とかプリム設置制限一杯の土地にマンタが移動しようとして、侵入できずにエラーが出た場合です。
その場で止まるだけなら問題は無いですが、一応確認は必要だと思っています。
それと、この場合はリンクできたとしても、設定距離に達していないので、実際の遊泳半径を求めて、設定値を変えておく方が本当は良いのでしょうね。そこまではまだ対応していないです。><
うー。。。なんやかやと面倒じゃのー。
2007年12月17日
回転マンタ・スクリプトの総括(1)
今回初めて回転タイプの商品開発に取り組んだ訳ですが、その結果今まで使ったことの無いイベントや関数を色々と駆使する事になりました。
今回新たに使ったイベント、関数類は以下のようになります。
<イベント>
・run_time_permissions
・change
・on_rez
<関数>
・llRequestPermissions
・llRezObject
・llCreateLink
・llBreakAllLinks
・llGetLinkNumber
・llDie
随分と色々使ってます。^ ^
正直言って、こんなに面倒だとは思っていませんでした。でも、スクリプトの勉強にもなったし、それなりに面白かったとも思います。
これらをここで総括しておきたいと思います。けっこうなボリュームになるので、何回かに分けて記録しておきたいと思います。
その前に通常の回転タイプのお魚と言うのは、これから紹介するような複雑怪奇な処理をしている訳ではありません。
多くの商品は、単純にお魚テクスチャを貼った板に回転軸プリムをリンクさせたり、円筒系プリムの表面にテクスチャを貼って、llTargetOmegaと言う回転関数で回しているだけです。
それらはテクスチャさえ作れれば、初心者でも簡単に作れるレベルの物です。
今回のお話は、中級レベルのスクリプト知識が無いと作れない内容です。これと同等の機能を実現した商品は、現在もまだ少ないでしょう。
と前置きは終わりにして本題に入りましょう。
1.パーミッションの取得関数:llRequestPermissions
これは何か特別な事(お金を扱う場合、アバターのアニメーション、オブジェクトのリンクの変更、カメラ(視点)の制御、キー入力の判定など)を実行する時に、その許可を得る行為です。
許可無く実行されると、利用者に損害を与えかねないような場合、必ず同意を得てから実行させるために存在します。
今回の場合は、オブジェクトのリンク生成と解除の為に、このパーミッションの取得が必要でした。
実際に使ったのは、次のようなリンク関連のパーミッションです。
llRequestPermissions(key_id, PERMISSION_CHANGE_LINKS);
ここでKey_idには事前に取得しておいた、オブジェクトの所有者のUUIDがセットされています。つまり、該当オブジェクトのリンク変更に関する許可を得ていると言う事です。
この関数を実行すると次のようなダイアログが表示されます。

このパーミッション取得関数は、run_time_permissionsイベントと連動します。run_time_permissionsイベントはダイアログの入力結果によって発生するイベントです。
run_time_permissions(integer perm) {
if (perm & PERMISSION_CHANGE_LINKS){
link_flg=ON;
}
}
ここでは「はい」が押された場合に、パーミッションを取得していると言う意味で、取得済みフラグをONにして記憶させています。
この辺の扱いに関しては、色々な仕様で考える事ができますが、今回はこの時点で許可が得られない場合でも、後続の処理を実行するようにしています。許可が得られないと後続処理をさせたく無い場合は、elseで「許可をして下さい」とメッセージを出して、再度パーミッション取得の状態へ戻して、許可ダイアログを出させる事もできるでしょう。
また、パーミッションは1度取得すれば良く、取得済みの状態でTakeして、再度Rezしてもパーミッションの許可は有効でした。ただし、オーナーが変わった場合は、再度そのオーナーでのパーミッション取得が必要となります。
今回はその辺も考慮して対応しています。
2.llRezObject
これはコンテンツ内のオブジェクトを、スクリプトを使ってRezする関数です。回転マンタでは、マンタのサイズ、遊泳半径、回転方向をダイアログで設定できるようにしましたが、その都度設定内容に合わせてRezし直す方式を採用しています。
llRezObject(llGetInventoryName(INVENTORY_OBJECT, 0), llGetPos(), ZERO_VECTOR, llEuler2Rot(<x_axi, 0.0, z_axi>* DEG_TO_RAD), (integer)parm);
今回はこのような使い方をしています。パラメータとしては次のような内容です。
(1)コンテンツ内のオブジェクトName
llGetInventoryNameでコンテンツ内のオブジェクト0番の名前を取得してセットしてます。
(2)Rezする位置
llGetPos()で自分自身と同じ位置にRezするようにしてます。
(3)Rezオブジェクトに加える力
今回は必要無いのでZERO_VECTORを指定してます。
(4)Rezしたオブジェクトの回転角度
ここはダイアログで設定した回転方向に合わせて、事前に角度を求めてRezした時のオブジェクトの向きをセットしてます。
時計回りに回す場合と、反時計回りとでは、マンタの向きは反対になりますので。
(5)Rezオブジェクトへの引数
ここで設定した内容は、Rezされたオブジェクト側で参照して使う事ができます。マンタの場合はサイズとリンク距離を合成してセットしています。マンタ側は、この値に基づいて自分のサイズを変更し、リンク距離まで移動する事になります。
海洋生物でのllRezObjectの利用例としては、TempオブジェクトのRezzerBoxで使われています。クラゲとかで使われている例が多いようです。
TempRezzerとして使う場合は、コンテンツ内のオブジェクト側でTemp(臨時)オブジェクトになるような設定が必要です。
TROPICAL FISHで販売している「Free Swimming Tropical Fish」の場合は、単独でRezして使用した場合は、Tempでは無く、普通の状態で使えますが、RezzerBox経由で使う場合は、同じオブジェクトがTempオブジェクトでRezされます。
この辺はスクリプトでRezzerBoxからRezされた場合にTempオブジェクトに設定するようにしていると思われます。
実はこの部分で、少々問題がありました。
それはコンテンツ内に入っているオブジェクトは、コピー可能状態で無いと困ると言う事です。
理由はコピー不可だと、一回実行してRezするとコンテンツ内からオブジェクトが消えてしまうからです。まあ、当然と言えば当然ですが・・・
そのため、コンテンツ内のオブジェクトはコピー可能に設定して入れなければなりません。販売上は「再販可能」で「コピー不可」が望ましいのですけどね。。。
更にこの辺の扱いに関しては、他でも色々と問題が出てきて・・・とそれは先の項目で詳しく説明したいと思います。
と言う事で、続きは後日。。。
今回新たに使ったイベント、関数類は以下のようになります。
<イベント>
・run_time_permissions
・change
・on_rez
<関数>
・llRequestPermissions
・llRezObject
・llCreateLink
・llBreakAllLinks
・llGetLinkNumber
・llDie
随分と色々使ってます。^ ^
正直言って、こんなに面倒だとは思っていませんでした。でも、スクリプトの勉強にもなったし、それなりに面白かったとも思います。
これらをここで総括しておきたいと思います。けっこうなボリュームになるので、何回かに分けて記録しておきたいと思います。
その前に通常の回転タイプのお魚と言うのは、これから紹介するような複雑怪奇な処理をしている訳ではありません。
多くの商品は、単純にお魚テクスチャを貼った板に回転軸プリムをリンクさせたり、円筒系プリムの表面にテクスチャを貼って、llTargetOmegaと言う回転関数で回しているだけです。
それらはテクスチャさえ作れれば、初心者でも簡単に作れるレベルの物です。
今回のお話は、中級レベルのスクリプト知識が無いと作れない内容です。これと同等の機能を実現した商品は、現在もまだ少ないでしょう。
と前置きは終わりにして本題に入りましょう。
1.パーミッションの取得関数:llRequestPermissions
これは何か特別な事(お金を扱う場合、アバターのアニメーション、オブジェクトのリンクの変更、カメラ(視点)の制御、キー入力の判定など)を実行する時に、その許可を得る行為です。
許可無く実行されると、利用者に損害を与えかねないような場合、必ず同意を得てから実行させるために存在します。
今回の場合は、オブジェクトのリンク生成と解除の為に、このパーミッションの取得が必要でした。
実際に使ったのは、次のようなリンク関連のパーミッションです。
llRequestPermissions(key_id, PERMISSION_CHANGE_LINKS);
ここでKey_idには事前に取得しておいた、オブジェクトの所有者のUUIDがセットされています。つまり、該当オブジェクトのリンク変更に関する許可を得ていると言う事です。
この関数を実行すると次のようなダイアログが表示されます。

このパーミッション取得関数は、run_time_permissionsイベントと連動します。run_time_permissionsイベントはダイアログの入力結果によって発生するイベントです。
run_time_permissions(integer perm) {
if (perm & PERMISSION_CHANGE_LINKS){
link_flg=ON;
}
}
ここでは「はい」が押された場合に、パーミッションを取得していると言う意味で、取得済みフラグをONにして記憶させています。
この辺の扱いに関しては、色々な仕様で考える事ができますが、今回はこの時点で許可が得られない場合でも、後続の処理を実行するようにしています。許可が得られないと後続処理をさせたく無い場合は、elseで「許可をして下さい」とメッセージを出して、再度パーミッション取得の状態へ戻して、許可ダイアログを出させる事もできるでしょう。
また、パーミッションは1度取得すれば良く、取得済みの状態でTakeして、再度Rezしてもパーミッションの許可は有効でした。ただし、オーナーが変わった場合は、再度そのオーナーでのパーミッション取得が必要となります。
今回はその辺も考慮して対応しています。
2.llRezObject
これはコンテンツ内のオブジェクトを、スクリプトを使ってRezする関数です。回転マンタでは、マンタのサイズ、遊泳半径、回転方向をダイアログで設定できるようにしましたが、その都度設定内容に合わせてRezし直す方式を採用しています。
llRezObject(llGetInventoryName(INVENTORY_OBJECT, 0), llGetPos(), ZERO_VECTOR, llEuler2Rot(
今回はこのような使い方をしています。パラメータとしては次のような内容です。
(1)コンテンツ内のオブジェクトName
llGetInventoryNameでコンテンツ内のオブジェクト0番の名前を取得してセットしてます。
(2)Rezする位置
llGetPos()で自分自身と同じ位置にRezするようにしてます。
(3)Rezオブジェクトに加える力
今回は必要無いのでZERO_VECTORを指定してます。
(4)Rezしたオブジェクトの回転角度
ここはダイアログで設定した回転方向に合わせて、事前に角度を求めてRezした時のオブジェクトの向きをセットしてます。
時計回りに回す場合と、反時計回りとでは、マンタの向きは反対になりますので。
(5)Rezオブジェクトへの引数
ここで設定した内容は、Rezされたオブジェクト側で参照して使う事ができます。マンタの場合はサイズとリンク距離を合成してセットしています。マンタ側は、この値に基づいて自分のサイズを変更し、リンク距離まで移動する事になります。
海洋生物でのllRezObjectの利用例としては、TempオブジェクトのRezzerBoxで使われています。クラゲとかで使われている例が多いようです。
TempRezzerとして使う場合は、コンテンツ内のオブジェクト側でTemp(臨時)オブジェクトになるような設定が必要です。
TROPICAL FISHで販売している「Free Swimming Tropical Fish」の場合は、単独でRezして使用した場合は、Tempでは無く、普通の状態で使えますが、RezzerBox経由で使う場合は、同じオブジェクトがTempオブジェクトでRezされます。
この辺はスクリプトでRezzerBoxからRezされた場合にTempオブジェクトに設定するようにしていると思われます。
実はこの部分で、少々問題がありました。
それはコンテンツ内に入っているオブジェクトは、コピー可能状態で無いと困ると言う事です。
理由はコピー不可だと、一回実行してRezするとコンテンツ内からオブジェクトが消えてしまうからです。まあ、当然と言えば当然ですが・・・
そのため、コンテンツ内のオブジェクトはコピー可能に設定して入れなければなりません。販売上は「再販可能」で「コピー不可」が望ましいのですけどね。。。
更にこの辺の扱いに関しては、他でも色々と問題が出てきて・・・とそれは先の項目で詳しく説明したいと思います。
と言う事で、続きは後日。。。
2007年12月17日
H.I.S.「旅ドガ」キャンペーン!!
株式会社H.I.Sが運営する、旅SL(タビスル)にて、次回は12月21日に「cocololo isalnd」にてバーチャルアイドルと行くセカンドライフの旅が開催されるそうです!

12月7日に「第2回H.I.S.presentsバーチャルアイドルと行くセカンドライフの旅」の模様を撮影した画像がH.I.S.の旅の動画投稿サイト「旅ドガ」に掲載されております。
詳しくはコチラを↓
http://movie.his-j.com/

12月7日に「第2回H.I.S.presentsバーチャルアイドルと行くセカンドライフの旅」の模様を撮影した画像がH.I.S.の旅の動画投稿サイト「旅ドガ」に掲載されております。
詳しくはコチラを↓
http://movie.his-j.com/
2007年12月17日
Naturum Island Resort
本日プレオープンほやほやのSIMです。アウトドアをテーマにしたアウトドア・コミュニティSIM「Naturum Island Resort」です。ここはAirLandメンバーも開発に参加していたようで、とっても美しい景観を持ったSIMに仕上がっていました。
まだプレオープン状態でアトラクション等は始まっていないようです。グランド・オープンは来年の2月だそうですので、その時には色々と遊べるアトラクションもできてくるのではないでしょうか?今から楽しみです。
場所はコチラ↓
http://slurl.com/secondlife/Naturum%20Island/48/224/34
現時点でも、非常に美しいSIMですから、ノンビリと散策したり、ショッピング・モールで買い物したりとかを楽しめるでしょう。
まずは全体をご紹介しますね。


入り口(ランディングポイント)を入ると、全体の案内図が出ています。まずは展望台へ行って見ました。

そこでは全体の景観を見渡すことができます。

川が流れ、吊橋があり、海へと続く景観が実に美しいです。
海辺には港やキャンプ場も見えます。

そしてクラブハウスらしきものも。

ショッピング・モールもありましたが、そこも全てログハウス風に統一されており、全体的なアウトドア・コンセプトが感じられます。

ショッピング・モールはまだテナント受付中でしたが、何店かはオープンしてました。その中にAirLandメンバーのお店もありました。

そして海にはマンタも泳いでいまーす。^ ^
ウィンドサーフィン等のマリン・スポーツも楽しめそうです。

マンタの入り江とは反対側の入り江には小型の魚達も泳いでいます。実はこの魚を動かしているスクリプトはGonbeが作成したスクリプトなんです。元気そうに泳いでいたので安心しました。

楽しみな日本人系SIMがまた増えたのは嬉しい事です。是非一度遊びに行って見て下さい。
まだプレオープン状態でアトラクション等は始まっていないようです。グランド・オープンは来年の2月だそうですので、その時には色々と遊べるアトラクションもできてくるのではないでしょうか?今から楽しみです。
場所はコチラ↓
http://slurl.com/secondlife/Naturum%20Island/48/224/34
現時点でも、非常に美しいSIMですから、ノンビリと散策したり、ショッピング・モールで買い物したりとかを楽しめるでしょう。
まずは全体をご紹介しますね。


入り口(ランディングポイント)を入ると、全体の案内図が出ています。まずは展望台へ行って見ました。

そこでは全体の景観を見渡すことができます。

川が流れ、吊橋があり、海へと続く景観が実に美しいです。
海辺には港やキャンプ場も見えます。

そしてクラブハウスらしきものも。

ショッピング・モールもありましたが、そこも全てログハウス風に統一されており、全体的なアウトドア・コンセプトが感じられます。

ショッピング・モールはまだテナント受付中でしたが、何店かはオープンしてました。その中にAirLandメンバーのお店もありました。

そして海にはマンタも泳いでいまーす。^ ^
ウィンドサーフィン等のマリン・スポーツも楽しめそうです。

マンタの入り江とは反対側の入り江には小型の魚達も泳いでいます。実はこの魚を動かしているスクリプトはGonbeが作成したスクリプトなんです。元気そうに泳いでいたので安心しました。

楽しみな日本人系SIMがまた増えたのは嬉しい事です。是非一度遊びに行って見て下さい。
2007年12月16日
衝動買い
うー。。。思わず買ってしまった・・・
コレ↓

ドラゴンボールに出てくる「界王様」アバターね。^ ^
これはMANGA ISLANDの上空にある城塞都市LAPUTA(かな?)のお店で売ってました。
そこのお店は、ドラゴンボールのキャラクター・タイニー・アバター専門みたいで、スーパー・サイヤ人孫悟空や亀仙人もいます。
実は亀仙人も買ってしまいました。。。あ~衝動買いじゃ~!

これらの著作権は???なんて疑問もありますが、そう言う理性を超えて、衝動的に「欲しい~!」と思って買ってしまいました。良いのか?悪いのか?
ちなみに肩に乗っているのは「OrangeBlueFae」と言う新種です。羽の形が蝶のようで綺麗ですね。
コレ↓

ドラゴンボールに出てくる「界王様」アバターね。^ ^
これはMANGA ISLANDの上空にある城塞都市LAPUTA(かな?)のお店で売ってました。
そこのお店は、ドラゴンボールのキャラクター・タイニー・アバター専門みたいで、スーパー・サイヤ人孫悟空や亀仙人もいます。
実は亀仙人も買ってしまいました。。。あ~衝動買いじゃ~!

これらの著作権は???なんて疑問もありますが、そう言う理性を超えて、衝動的に「欲しい~!」と思って買ってしまいました。良いのか?悪いのか?
ちなみに肩に乗っているのは「OrangeBlueFae」と言う新種です。羽の形が蝶のようで綺麗ですね。
タグ :SecondLifeタイニー