ソラマメブログ

  
Posted by at

2008年09月25日

物理オブジェクト製作のはじめに

乗物のためのLSLや オープンソースなもの、ライブラリのCART、 LINDEN FLIGHTなどはいろいろ探すことが出来ます、 様々なパラメータ数値が準備されているので、 様々な組合せ、機能を実現したオブジェクトが製作されていますね^^b

物理オブジェクト について 失敗とかこんな手順で製作とか反省^^ 

★いままでの失敗例 物理は動いて、目の前から無くなってしまうのが^^; 初めの頃の悩みですね^^;

これらの物理のための関数は:物理オブジェクト上でのみで動きます:(非物理である時にエラーが表示されない、なにも変化しないままであることが多いです)

スクリプトで制御するためには、スクリプトが動作することが許可された区域であることが必要です、
でも動いてると、エリア区画からはみ出してしまうなんてこともあります、

区域をはみ出したところでスクリプトが停止してしまいます、(スクリプトの動作・変更・判定ができません、向きを変えて戻ってくることができません)
区域をはみ出しても、(非物理になって静止するのではありません)速度・勢いがあればそのまま移動して飛行してオブジェクトを紛失することもあります

スクリプトでの座標指定や、数値の大きさが意味を持ちますので、ちょこっとだけ動かしたいと考えてもいきなり隣のSIMまで動いたり オブジェクトを紛失してしまうことがあります、
(どこまでも飛んでいくのでしょうか??? SIMの境界を越えたあたりで、とまっていることがおおい、自分のいる区画・土地には無いことが多いですね)

★持ち物から取り出すときには、 まず【建造】ボタンを押して 編集メニュのモードにしておきます、そこで取り出すと
オブジェクトは、地面に表示されてそのまま編集のモードになりますので、 物理でも動かないままで編集できます、(物理でもすぐに無くすことが少なくなります)


★製作過程において(スクリプトで実施する前に、手作業で実施できることを動作確認してみる)
手作業で、物理設定のチェックを ON-OFFの切り替えをする
編集モードで選択している間(選択中オブジェクトはプリム選択色が表示、移動ガイドのベクトル表示されている)は、物理オブジェクトであっても一時的に 動いていきません、回転速度などは、ゼロになりました(再び回転しない)
(座標が移動しません、スクリプトが動作して動いてしまうことも、あったりします)

オブジェクトは紛失しやすいので、TAKE保管すること
臨時・設定を使って動作のテストをすること(60秒経過したら鯖から削除されるものです)

乗物・DEMO・試乗・体験 のために 臨時・設定を利用できます

臨時・設定であるときに アバターがSITしているオブジェクトは、60秒経過しても削除されません
UNSIT立ち上った瞬間に、鯖から削除されます
(ログアウトした場合は、乗物はUNSITします)
SIMを越えるときに、たまに物理設定でなくなってしまう(物理設定ONは、2回実施しておきましょう)

★はじめて、新規のオブジェクトが物理になった時:初期状態(デフォルト)
まだスクリプト設定されない時は、初期状態でオブジェクトは重力により自然と地面まで落下してしまいます
(物理になった時に、浮力や、現在の位置に移動を実施するとういたままで固定できます)

オブジェクトをSHIFTコピーした場合、コピーされたオブジェクトは、初期状態(デフォルト)になります、
SHIFTコピーした場合は、スクリプトは、リセットされた初期の状態になります、
(TAKEして保管したものは、 地面に取り出した場合は、TAKEする前の状態を、オブジェクトは記憶していますので、スクリプトも継続して動作することになります)

★オブジェクトが物理設定になるとき、取り出すときの座標、
オブジェクトを手作業でREZすると、その場所にすでにオブジェクトがあると、その上に乗る位置(Z値が増加、高さが増加)になって積み上げられるようにてREZされます、
(スクリプトでは実施する座標が重要です)(その場所座標が正しくないとエラーが生じます)

他のオブジェクトと交差してたり、壁・地面にめり込んだ位置、アバターと交差する位置では、
オブジェクトは、REZされるときに、存在できない場所に出現しようとしていることでエラーが発生します、

結果として、物理のオブジェクトにならないまま、非物理のままになる場合と、 物理になった瞬間にオブジェクトは隣のSIMまで(交差の程度に影響?)爆弾並みにハジキ飛んで紛失してしまうことがあります。

(物理オブジェクトをファントム設定にできます、衝突することがなくなります、十分物理オブジェクトとして動作できます)
(物理オブジェクトを必要にあわせて、非物理にしたり、物理にしたり瞬時に実施できます)(切り替えには注意)


★座標位置・向き回転 グローバルかローカルか? 方向・向きベクトルかローテーションか?
オブジェクト・プルムの 位置向き それぞれの関係はややこしい^^ 使用する関数で、意味が異なる場合を注意する必要があります、(相対ざひょうで 頭の上へ少し動かしたい<0,0,1.0> これは?グローバル座標で実施すべきか?確認することになります)

物理関数のパラメータを見ると
llApplyImpulse(vector force, integer local)
llApplyRotationalImpulse(vector force, integer local)
瞬間的な力:vector

llSetForce(vector force, integer local)
llSetTorque(vector torque, integer local)
永続的な力:vector

llMoveToTarget(vector target, float tau)
移動目標座標:vector
llLookAt( vector target, float strength, float damping )
移動目標角度:vector

llRotLookAt( rotation target, float strength, float damping )
移動目標回転:rotation

llTargetOmega( vector axis, float spinrate, float gain )
オブジェクト周囲の回転:vector

http://wiki.secondlife.com/wiki/LlEuler2Rot/ja
関数: rotation llEuler2Rot( vector v );
オイラー角vの表現のrotation値を返します。と説明コメントがあります

vector target=<0,0,90> //これは度数DEGが単位で直角のおおきさです
vector v = <0,0,90>*DEG_TO_RAD //これはラジアンが単位で直角のおおきさです

実際の中の数値は? 
vector pos;
pos =<0,0,90>;
llSay(0, (string)pos);
llSay(0, (string)(pos *DEG_TO_RAD));
llSay(0, (string)llEuler2Rot(pos*DEG_TO_RAD));

TEST: <0.00000, 0.00000, 90.00000>
TEST: <0.00000, 0.00000, 1.57077>
TEST: <0.00000, 0.00000, 0.70710, 0.70712>
こんな感じです、この大きさを加えるのか? 移動量なのか?強さなのか?関数の意味で単位とあわせて確認したりします





ミニマップで表示の確認
水色の■で表示されるものは、自分のオブジェクトを意味していますので、探すヒントになります、
ミニマップは視野のすべてを表示できません、おおきさのちいさいものは、アバターから遠いと表示されません、
リアルタイムで更新されません、ミニマップはじわじわと表示される感じです 範囲は100m程度です


追加・妄想^^ できないもの^^とか課題  続きを読む

Posted by しんいち at 11:51Comments(0)LSL物理

2008年09月14日

三角関数


オブジェクト製作、プリムを並べる、配置するときに、手作業では困難、角度をすこしずつ変化させたい、距離をすこしづつ変化させたい、大量にそろえてみたいなどのときに、

スクリプトで計算して、パパッと実現できたら、 並べられたらなんて思うことがあります、

1)手作業では、 編集作業で、 グリッドを利用する、 コピー、 移動、 回転、ができます、
位置座標、回転角度を数値で入力設定すれば、ぴったりにも並べたりできます、

2)スカートのプリムを円周にならべてくれるもの、 

3)平面 円周に壁を配置、建物製作ツール

4)球体状に 平面プリムを配置するドーム状にする、 武道館のたまねぎみたいな変形タイプも自動に作成するすぐれものも販売されているようです(スゴイデス)

5)PENTAGON 5角形を配置した 正12面体 三角形からなる正20面体 などの多面体の作成

おおくの場面で、ズバット計算されています、これらには、★三角関数などを利用します^^ 

llCos(
llSin(
llAcos(
llAsin(
llAtan2(
llSqrt( 平方根

http://wiki.secondlife.com/wiki/LlCos
Returns a float that is the cosine of theta.
float theta ? angle expressed in radians.

Function: float llCos( float theta );
Returns a float that is the cosine of theta.
float theta – angle expressed in radians.

★関数使い方
単位の相互関係を注意して、関数を利用します ラジアンの相互変換のための定数を掛けて使用すると正しい結果になります
float DEG_TO_RAD = 0.01745329238;
float RAD_TO_DEG = 57.29578;
(準備されている定数です、 スクリプトで前もって書かなくても、定数として使用できます)

integer A; //角度 たんい:DEG
integer B; //角度 たんい:DEG
float x1; //辺の長さ たんい:m
float y1; //辺の長さ たんい:m
float z1; //辺の長さ たんい:m
であるとき

x1=llCos(A*DEG_TO_RAD)*z1;
z1=llSqrt(x1*x1+y1*y1);
B=llAcos(x1/z1)*RAD_TO_DEG;

三角関数の中の数値はラジアンなので、DEG_TO_RADをかける、
ラジアンにRAD_TO_DEGを掛けると、角度DEGになります、



★日本家屋などの屋根の傾斜・辺の長さを計算してみましょう
三角関数で計算したら、座標がただしく計算できるのでしょうか? (当然できます^^;)

スクリプトでは、プリムの大きさ、位置、向き、パスカットなどの構成されるパラメータを直接指定できます(プリミティブパラメータ)

  続きを読む

Posted by しんいち at 21:51Comments(0)三角関数・多角形

2008年09月14日

お金の管理 money()

★お金の管理 使用される場面・アイテム  をすこしイメージしてみました

1)商品販売では、ベンダー、マルチベンダー、
入金を確認=オブジェクトを渡す、

2)カフェでは、チップジャ、集金・分配、
入金を確認=店長・店員が受け取り、

3)モール運営では、区画の管理、期限終了の告知と集金、
入金を確認=期限の延長、期限などを記憶しておく

4)イベント、キャンプで 集金・配布、
入金を確認=チケットなどの配布、 募金の回収、

5)お金の送金 llGiveMoney(id, amount);
キャンプ、一定時間条件のクリアなど、 
クイズ・クエストなど正解の判定で、

6)入金を確認したのち、歩合などを分配・寄付・送金、
エラー返金、入金を確認したが、正しくない場合はやり直し返却、
売り上げの一部を寄付する、
売り上げの一部をオーナー以外のアバターへ送金する、手数料、
歩合などをオーナー以外のアバターへ送金する


★関数ポイント・参考 よく使用されるもの例  続きを読む

Posted by しんいち at 10:59Comments(0)お金イベント

2008年09月12日

REZ_OBJECT について その2



llRezAtRoot( 関数について 追加まとめ

範囲選択は、複数ののオブジェクト リンク距離制限に関係なく TAKEできます、
TAKEして、持ち物に保管することができます、
(100mくらいから構成される複数のオブジェクトだったり)

この関数を使用することで、オブジェクトを正しくREZすることができます、
(TAKEできたものは、REZできることになります)

100mくらいのオブジェクトが 1回のREZで 取り出し再現できます、向き・位置関係も正しく 保持されます。
  続きを読む

Posted by しんいち at 21:11Comments(0)REZ_OBJECT

2008年09月02日

integerデータ型と 2進法 パート2

2進数の考えを利用することで フラグを記憶することは良くあります、 コンピュータの中では(2進数:ゼロイチが走り回っているなんていいますよね^^) データや情報・記憶・計算をする方法には、ビットやバイトを計算するためのビット演算子というものがあります、これらは2個の値の各ビット同士を演算するというちょっと変わった計算をするものですね。 

セカンドライフなら リストでたくさんの要素を並べて保存しておくことができます、
記憶したり、たくさん使用することでメモリが不足することになります、(ゼロイチの数字だけでも並べて記憶するには、300個あたりでヒープエラーが発生します、16Kバイトでは500個の数字くらいがおおむね上限のようです、monoはスクリプトの動作のためにたくさんのメモリを確保することがわかっていますので、メモリ不足が発生している問題は、monoで動作実験すると良いでしょう)


2進数とビット演算を実施して、メモリ削減に役に立つ場面があるかもですね^^ 実験しましょう^^

1つの整数 =32ビットなので。(2進数で 32個の0,1)= 32個までの 0,1を記憶させることにできます。
つまり32種類の 0か1の記憶ができそうですね、 0,1を32個リストすることよりもメモリ削減できそうです、

クイズが4問あります、memory=0000(2進数) はじめはzero
右から1ビット目=1問目
2ビット目=2問目
3ビット目=3問目
4ビット目=4問目 の結果を記憶させます 0が未正解 1で正解・完成という状態を記憶するフラグを作成しましょう
4問の回答がそれぞれ、正解なのか? 不正解なのか? を記憶・保存しておけるフラグのようにできると思います。

全問正解は memory=1111(2進数) となったときです。(10進法で15ですね)
 
1問目を正解しました memory=0001(2進数)というかんじです
さらに、2問目を正解しました memory=0011(2進数)というかんじです

動作見本  続きを読む

Posted by しんいち at 21:45Comments(0)integerデータ型

2008年09月01日

integerデータ型と 2進法

integerデータ型は-2,147,483,648 ~ +2,147,483,647の範囲の符号付きの32ビットの値です。
ベクトルや 座標を操作する場合には、3つの数値が必要な場面があります、(x、y、z)ですね

たとえばx、y、zがそれぞれ小さな数字である場合:たとえば2桁であるときには、

普通に私たちが使う数字(10進法)では、
x=10、 y=12、 z=23、 data=x*10000 +y*100 +z =101223 に合成した1つの数字にすると仮定しましょう
これならまた もとの、x、y、zは
x=data/10000 の整数部分
y=(data-x*10000)/100 の整数部分
z=(data-x*10000 -y*100)の整数部分 となります、 

dataの1つのなかに、3この要素を組み入れることができました。合成することも、分解取り出すこともできることが大切です。


【どんな場面で利用できるか?】
通信やデータのやり取りで3個の要素を送りたい時、 関数では1つしか送れない

Event: on_rez( integer start_param ) 整数をひとつだけ
Event:link_message(integer sender_number, integer number, string message, key id) 整数、文字列、KEY型をひとつだけ
したがって3個を通信するときには、 3回繰り返して 3個送ることができますが何個目なのか区別しないと上手く通信できなくて作成に苦労します。

ここで 送る整数が1つなら 通信には基本の形で実施できます。
送るときに合成して、 受信するときに、分解してもとの意味に戻して使用するといった感じです、

(基本は、ちいさな、いくつかの情報をくっつけて 1つにするだけです、
3回の通信を1回で実施できるので作業が組立てやすい)

しかし、 たくさんの情報・数値を通信やり取りすることには、べつの方法の検討が必要です。


【実験】では、これを2進法の考え方で1つの整数に記憶することを実験しましょう、  続きを読む

Posted by しんいち at 23:05Comments(0)integerデータ型

2008年08月28日

夏休みの自由研究^^b REZ_BOX

【テーマ】:SIMに存在するぷりむ・おぶじぇくとを、 現在の位置を記憶して、TAKEして保管しよう、持ち物に保管しよう

【目標】:再び取り出したら、元の位置にもどせることを実行すること、(取りだした位置ではない)

【課題】:SIMに存在するぷりむ・おぶじぇくとである、個数は1000個以上 5000個くらいまで実験する、

【条件】:編集権限のあるオブジェクトであること、 スクリプト稼動区域であること、 


考察:

手作業の場合、いくつかのオブジェクトに分割されたときには、 、(取りだした位置から)TAKEする前の位置への調整も手作業になるので苦労する、
リンクできない距離に配置されている オブジェクトがあると、持ち物も複数になる、複数のファイルになってしまう、
(持ち物整理の小技として BOXにしまうなんて記事もありましたね)

SIMに出せるプリムは上限があるので、持ち物に保管するということが基本です、でも必要なときには素早く出して再現したい^^b


(現在、基本動作。 おおむねOK 8/28)

物理設定、ファントム設定、 入れ子のREZ_BOXの使用による高速化

★スクリプト入りのオブジェクトについて 問題のないもの(まだ検証すべきバリエーションは様々ありそうです^^;) 
位置座標を組み入れていないもの
色・形・照明・パーティクルで演出してあるスクリプト動作、
タッチ判定、オーナー判定、パーティクル、色、形、テキスチャ変更
タッチしたら、そのときに座標を取得して動作するもの、 移動するもの、 元の位置にもどる、 ドア、マド

ライドツアー、エレベーター、物理オブジェクト、スクリプトにて設定を実施して位置座標を組み入れたものでは、
ノートカードのようなものから数値を読み込むものは、変化・影響はなく動作するでしょう


基本TOOL構成
★memoryスクリプト TAKE前の状態を記憶するもの
★REZ_BOX ぷりむ     コンテンツのオブジェクトをREZ再現。 
(繰り返し 動作ができる MAIN本体です ダイアログ・メニュー選択 山とかSIM大量なぷりむがここに保管できます)
★REZ_BOX -childぷりむ  入れ子で呼び出されて動作するREZ_BOXためのもの コンテンツを分割して保存するBOXです、
(メインからREZされると、並列的に自分自身が起動します、-childぷりむは動作終了にて自動で削除します、 手作業で持ち物から出した時は、1度だけメニュー操作ができます)
  続きを読む

Posted by しんいち at 10:50Comments(0)REZ_OBJECT

2008年08月28日

REZ_OBJECT について

オブジェクトをREZするための関数は2つあるんですね^^ 今知りました^^ この違いをちょっと実験しました

【資料】をながめてみました
http://wiki.secondlife.com/wiki/LlRezObject
http://wiki.secondlife.com/wiki/LlRezAtRoot

Instantiate inventory object at pos with velocity vel and rotation rot with start parameter param
• string inventory – an object in the prim's inventory
• vector pos – position (in region coordinates)
• vector vel – velocity (max magnitude is 250)
• rotation rot – rotation
• integer param – on_rez event parameter and value returned by llGetStartParameter in the rezzed object.
パラメータの並び、数は同じ仕様ですね

The root of inventory is not at pos but the center of inventory is.
To have the root prim at pos use llRezAtRoot instead.
ルートぷりむに指定して使用するためには、llRezAtRoot を使用することが良いようです?

To rez an object so its center is at pos (instead of the root) use llRezObject instead.
オブジェクトの中心をPOS指定するためには、llRezObject が良いという違いがあるようです 

少し実験してみました、 以下レポート
  続きを読む
タグ :LSLREZ

Posted by しんいち at 10:23Comments(1)REZ_OBJECT

2008年07月27日

タグを変更

タグクラウドで カテゴリーを選択したりすると タイトルがリストで表示されるんですね^^ 

記事の項目・分類わけを細かくしておいたほうが 良いのかな? 

タイトルを長めに書いて検索しやすくして

タグ はいま 8個になりました、 カテゴリーは、とりあえず、もっと増やしちゃうかな^^ 
  

Posted by しんいち at 09:01Comments(0)作業中・ブログ書き方

2008年07月25日

NPC・ペットの会話・対応するLSL

NPCやペットで周囲の会話に反応・対応するためのLSLです。

オーナーがたっちすれば 動作をON-OFFできます。

会話の応対するための 言葉は ノートカードで作成して 読み込むタイプです、

【聞き取りの判定のキーワード:文字短すぎない程度】         こんにちは
【返事をするキーワード:応答メッセージ:コメント文字1行以内】   こんにちは^^ビーム ~(ノ=^‥^)‥‥…━━━━━☆
【聞き取りの判定のキーワード:文字短すぎない程度】         おはよう
【返事をするキーワード:応答メッセージ:コメント文字1行以内】   おはようです^^b

データは必要な実際の言葉を、改行して 順番にひたすら並べてあるだけでokです

//NPC 会話対応
//会話を常時LISTEN 聞き取りをするための基本、
//読み込みデータと 一致するものが 含まれているかチェックすだけの作業です
//100個のキーワードで実施して、5000程フリーメモリが残っていましたので、200ワードくらいが限界です
//キーワードが短い、ひらがなだけであるものは いろいろな言葉に重複してしまうので 注意してください
//文字列の中に 含まれているか? という判定なので 会話のはじめでなくても 判定ができます
//逆に 希望・想定していない文字に反応しないように キーワードは意味のある長さの文字であるようでないといけません
//たとえばひらがな2文字の ”よろ”に登録すると ”よろしく” だけでなく ”よろい” ”よろけた” ”よろこび” に判定できちゃいます
<参考LSL>  続きを読む

Posted by しんいち at 10:25Comments(0)NPC会話・対応

2008年07月24日

LSLのテキストこぴぺで、ぶろぐに表示するテスト

スクリプトを読んだり・書いたりするには、エディターを利用しましょう^^便利だよ^^b

インデントも自動、 かっこの確認や、見た目も、文法チェックもできて良いから^^b

LSL-EDITOR のTool Option Text Editor indenting 設定項目で TABと SPC切り替えできます

ブログに載せるには、ソースをコピペして本文にそのまま書いてしまうと、 本文の行の頭からはじまる、TABやSPC(空白)のアスキーコードは、 
ブログに表示する文字ではない、 表示しない、 ことになります。

==追記9/1 ブログにcodeを上手く載せることはできません、 ブログ環境でcodeを載せるように提供されているとこをりようすれば簡単で無理がありません、 以下は そらまめでの妥協案の考察として^^; みてください==
  続きを読む

Posted by しんいち at 17:20Comments(1)作業中・ブログ書き方

2008年07月24日

複数のあにめの、 組み合わせて再生?できるか?

複数のあにめの確認、 組み合わせて再生できるのでしょうか? 疑問提起です 結論はありません

AOは アバターの状態・動作にあわせて 1つのアニメの再生と 切り替えを実施してくれるものだと思います。
画期的ですね、 おもしろいです、FREEで配布されています。 オリジナル・あにめは有料で販売されています。

では? 足だけの動作、 に右手、 とか左手、 を複数再生するものは? あるのでしょうか?


★コンバット・システム  アクション・武道あにめ とか  キー操作を組み合わせたもので 作成できるでしょうか?
1)ファイテイング・ポーズだけで、足の動作と、体の移動のあにめ、
2)右手、左手、だけの パンチのあにめ各種

1)2)の組み合わせで 移動しながら いろんなパンチが 繰り出せるか?
キー操作や、 ボタンを追加すれば、機能や動作を増やすことができそうです。

<あいであ>
ゆったり歩くあにめ、 ちょっとスキップするあにめ、 激しくスキップするあにめ、 3個準備すれば、切り替えて使用する方法。

あるくあにめ、 足いがいの体、
あるくあにめ、 足だけのあにめ、 足だけスキップするあにめ、 足だけ激しくスキップするあにめ 
足の部位だけ、切り替えて使用する方法。

単に分割することでは、作業が多くなり、面倒になります、

同じ製作者であれば、 1つのファイルを基本に、変化した形・動きを作成することは、大変な作業ではないでしょうから、 分割しないほうが楽そうです、

<あいであ>
では、体は動きで前後、体は動きで左右、体は動きで右左、
追加、手・腕でぱんち右、 手・腕でぱんち左、 手・腕でぱんち左右、
追加、足でキック右、 足でキック左、 足でキック左右、 
9個の部位独立であにめを作成できれば、 組合せで、3*3*3=27種類の表現ができそうです。
一部だけの動作もふくめて 4*4*4=64種類程の表現ができそうです。

分割することの良い点・違う点は、 組み合わせて再生するので、手、足のあにめの再生が始まるのは、からだの動作が始まるときとおなじでなくても良いことです。 また再生が終わらないときに、別の部位を再生したりできるようになります。
(あくまでも想像です)
  

Posted by しんいち at 13:50Comments(0)あにめ再生、SIT

2008年07月24日

あにめ再生、アイデア


1プリムでも、 複数のSITができること、 アバターのUUIDがわかること、  

アバター個別・複数・あにめ・パーミッション保持の可能性紹介をしましたが、


基本アイデア・メモ整理しておきます。

☆★☆★☆★☆★☆★☆★☆★
まえがき   あにめーしょん 


必要なときに 1度だけ必要な再生を実施するだけです
基本的には、後から再生したものが見た目で再生されます、
プライオリティ 0-4 を設定されています、 数字がちいさいものが低い、再生されている・おおきいものを、後から上書きすることができません。


見た目で再生されているか? はユーザーの使用方法に影響します

コンテンツに並ぶファイルの順番 
ファイルは・アルファベット順の名前で並んでいるようです、選択されるようです、

コンテンツに、必要なあにめをいれておけば名前文字で利用できます、(UUIDで利用する方法があります)

SIT-POS設定:スクリプトファイルを別の名前のファイルで作業を分けて設定できます
(SIT位置の設定・アニメの切り替えMAINにわけてあります)

アニメーション組み込みスクリプト、ダイアログ表示
SITタイプ、装備ATTACHタイプ、(オーナーであるのでダイアログ要求・表示省略が優先されるものは、省略されます)
TOUCH-パーミッション・ダイアログ要求タイプで起動して作成することができます

スクリプト、パーミッション保持、
1つのファイルでは、1つのパーミッションしか保持できません、アバターは1人である、パーミッション(種類・組合せ可能)は1つである、変更されたら、リセット・上書きされて変化します、後からの作業だけが有効です
(リセットされない?パーミッション(種類・組合せの連結作業はできるのか? 未検証)できそうな場合:例外も?ある気もする)

☆★☆★☆★☆★☆★☆★☆★
【課題・困難なこと】   あにめーしょん
 

スクリプトからアニメの情報は? :スクリプトから不明なこと

プライオリティ情報
アニメの長さ
LOOPなのか? POSEなのか? 
現在 目にみえているのか?


複数のアニメ再生・利用が可能です、 プライオリティなどの組み合わせが可能です(らしい)

アニメ素材は作り方しらないから^; わかりません・できません  確認には検証が必要です。

見た目で再生されているか? はユーザーの使用方法に影響します。

したがってAOなどユーザーが使用した場合、それぞれのスクリプト動作は影響されないで個別に動作していても、
見た目で再生されているものは? なにか? スクリプトからアニメのプライオリティ情報などが取得できないので、知ることができません、わかりません、再生リストで有効な名前は、情報として取得できます。 有効であることと、見た目で再生されているものとは? 異なります、確認する方法は、基本的に準備された関数やLSLでは見あたらないようです。

アニメの長さは、再生リストを取得して、有効な名前であるリストから、存在しなくなれば、停止したことが判定に利用できます



☆★☆★☆★☆★☆★☆★☆★
SIT-BALL
 有名なアイデア SITしたら BALLは消える、 あにめを再生する
座るものや商品、オブジェクトと アニメを別々なので、組み込む必要がないので楽なものです、
逆に 視野にSIT-BALLだらけになります。 ぷりむ数が増えます。 

初心者には安全に タッチ・シットできる目的として有効です、

景色やオブジェクトには、当然タッチ・シットできる(隠れポイント)がいろいろ存在するので、オリエンテーション目的でないSIM・場所では特に探すことも楽しみですね、


☆★☆★☆★☆★☆★☆★☆★
あいであ・めも・スクリプトでできること(できそうなこと)  続きを読む

Posted by しんいち at 13:49Comments(0)あにめ再生、SIT

2008年07月18日

くるくる ぱーてぃくる ローカル座標 その4

円周の周辺に配置してある 6個のプリムから同じ角度で外へ向けて パーティクルを放出する。
(1本の直線・方向のみ、同じ速さ。 同じおおきさ。)

ここで、プリムが角度を変えれば、 パーティクルを放出する角度も変えることができます。
(パーティクルシステムのパラメータ数値の調整でも、 パーティクルを放出する角度・形も調整や工夫が検討できます。)

グローバル座標で実施すれば、同じ方向になります。

ローカル座標であることを検討して、 いつも放射状になるように実施しましょう。
位置は、変化しないので、 ROT回転だけを同時に変更します。


それぞれの子プリムは、Z軸で 60度間隔で 親プリムから回転した配置になっています。



角度X=0度で 真上 円周の外方向が 正  内側へ 負 の数値になります、
子プリムの黄色面の方向にパーティクルを出しています、 子プリムの角度をかえることで、パーティクルの方向が変化します



角度Xを変更するためには、 親プリムからの配置が 異なるので、それぞれのプリムは向きが異なります、計算したい角度Xと Z軸の配置された角度を、 掛け算して計算して求められます。 


親ぷりむ(中心の円盤)をTARGETOMEGA でユックリ回転させても、 ローカル座標として変更するので、 影響なく動作します。







ターゲットの変更設定できるので ランダムで、リンクプリムのUUIDへ向かっています、
隣のリンクプリムへ向かったり 対角線へ向かったりと切り替えます、


  続きを読む

Posted by しんいち at 13:51Comments(0)ローカル座標

2008年07月17日

ローカル座標とグローバル座標 について その3

建物や乗り物 ドアやパーツをREZするときの 座標はグローバル座標です。

また、リンクされていないもの、 オブジェクトを移動させたりするには、 グローバル座標で指定したい場合。

llRezObject
http://wiki.secondlife.com/wiki/LlRezObject

親プリムが同じ位置・向きであれば、 座標はグローバル座標が自分で指定することは、問題なく実施できます。
親プリム=<100,100,20> にあるので 2mだけ離れた位置は<100,98,20>です。
さらに2m 動かす位置は、<100,96,20>です。

でも、 オブジェクト親プリム=<100,100,20>が移動してしまったら、その数値は正しく 動作できないことになります。

//ROOM部品位置
vector pos_sim=llGetPos();
vector POS =pos_sim+<0,-2,0>;
rotation ROT=llGetRot();
vector vel=<0,0,0>;
llRezObject("DOOR" ,POS,vel,ROT,0);

2mだけ離れた位置と 設定しましょう。 しかしこれは うまく動作するのは 特定なときだけです。
つまり 向き・回転が ZERO_ROTATION であるときだけです。  それ以外では おかしな位置になると思います。


そこで、 親プリムから、どのくらいの位置に(ローカル座標で)すべきか決めて、 
親プリム==自分の位置(グローバル座標) から 回転も含めて計算すれば、親プリムが移動しても、商品として違う場所に配置しても 問題なく動作できるようになります。

//ROOM部品位置
rotation ROT=llGetRot();
vector vel=<0,0,0>;

vector POS =llGetPos()+<0,-2,0>*llGetRot(); //今の親プリム位置+ 相対位置*親プリムの向き
llRezObject("DOOR" ,POS,vel,ROT,0);

さらに2m 動かす位置は、
vector POS =llGetPos()+<0,-4,0>*llGetRot(); //今の親プリム位置+ 相対位置*親プリムの向き

★★★☆☆★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  

Posted by しんいち at 12:59Comments(0)ローカル座標

2008年07月16日

ローカル座標について その2

プリムの移動・回転  建物や乗り物 ドアやパーツを動かしたり 変形させたいとき 
(図はありません^^; 文字だけ^^; プリムの見本画像ができたら追加できるかな^^;)

1)スクリプトで動作。
2)プリムを片開きで。
3)POS移動と ROT回転 の組み合わせ。速さ・タイミング
4)リンクをもっとたくさん動かしたい時。
5)子ぷりむ A・B・C を同時に、同じくらいの 速さ・タイミングで動作させたい時。
★★★☆☆★★★

1)スクリプトで動作させるると、 1個の子ぷりむを移動できます、親プリムを移動すれば、まとまってオブジェクト全体が移動します。  SETPOS、SETROTの関数のは、動作が完了するには目で見えるくらいの時間がかかります。 これは、PCがいくら高性能でも、クライアントのビューアーが高速でも、動いている雰囲気の表現として、動いている過程を表示するためにしているのだと想像します。

この関数が実施できるのは、 物理ではない オブジェクトが基本ですという前置きがきめられています
Moves the object or primitive towards pos without using physics.
ユーザーが一時的に 非物理にすることができれば利用し動作できます



(位置・回転だけでなく、スクリプトでは、色、透明度、大きさ、形、なども変化させることで おもしろい変形ができます)


2)プリムを片開きであること、端の辺を中心に回転させたい時

プリムをROT回転すると、 中心で回転します、 片開きであること、端の辺を中心に回転させたい時は、
プリムをパスカット設定します、プリムの中心から半分を無くしてしまえば、良いですね。

★★★☆☆★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
3)POS移動と ROT回転 の組み合わせ。 速さ・タイミングについて
  続きを読む

Posted by しんいち at 12:19Comments(0)ローカル座標

2008年07月15日

ローカル座標について その1

ローカル座標の 説明には、使用するものにも影響します。

SITする位置について、 考える例。

1)基本ぷりむ。 オブジェクトは、 ZERO_ROTATIONであるとき、 アバターが、 ZERO_ROTATION の向きにSITすれば、 東に向いてすわります、 乗り物のSIT位置とか・物理のLINER系も この位置が基本として 説明されていますので、この向きを基本にすることが 良いと思います。
HUDもオブジェクトを 置いて 西から東を見る方向が オブジェクトが 画面に張り付く はじめの基本位置になります。

2)スカルプ。 作成の方法により 上下左右が 見た目の形とは異なる場合がありますので、 まず オブジェクトを、 ZERO_ROTATIONに 置きなおしてみましょう。 ローカル座標は、親プリムの向きに影響しますので、 この状態で計測することが 簡単な調整方法です。  もし、複雑なほうが良い、研究したいと考えるなら オブジェクトを地面に配置するときに、 ZERO_ROTATIONでないとき は、上下左右の調整は、 オブジェクトのROTATIONとPOSにより計算はできますが、複雑になります。


親ぷりむが回転すれば、 アバターの座る位置(ローカル)は変わらなくても、 オブジェクトと一緒に回転した向きになります。


★★★☆☆★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
<x、y、z>がどのくらい調整したいか?  実験くんを おいておきました、

黄色い面が東向き・ 青い面が南向き(右手)・ 赤い面が北向き(左手)に配置してあります

<x、y、z>がどのくらい調整したいか?  実験くんを おいておきました、
カーソルの操作で 調整できます。 

フロート文字が オブジェクト中心から、アバターのSIT位置の調整量になるものです。


オブジェクトの向き・位置と 実験君の向き・位置をぴったりあわせて
アニメを再生しながら、 商品の現物と比較しながら調整するときなどに使えそうですね^^








  続きを読む

Posted by しんいち at 19:55Comments(0)ローカル座標

2008年07月15日

暑くなりましね^^ 爽快に海へ 






素敵な 高級そうな お船が並んでます^^


ういんどさーふぃん は風をつかまえなくても すいすい はしれちゃうんですね^^b

まず FREEで乗れるもの TAKO

FIZZ 

DG-14



船を起こして

どっこいしょ^^ と乗り込みましょう

ぴゅ~ ぴゅ~と 走ります funモードでは爽快に オートマチックで操作は船が勝手にしてくれます

(無理な操作では 転覆しちゃうんですね^^; 涼しそうだから^^; ok)

動力であれば問題なく表示されるので、 うごかないぞ~ というのは ビューアーの原因ではありません、風の向きと セッテイングで走れない、 腕がない^^; 未熟者なのです^^;

  
タグ :のりもの

Posted by しんいち at 16:26Comments(0)観光

2008年07月15日

ステート、複雑なスクリプトを構成するときの注意、LSL

失敗しやすいポイントについて振り返ってみました。

だんだんスクリプトも長く書けるようになった、 作業をいくつかのステートに分けて書くと便利だ^^ わかりやすいと
思っていると、そこには、私の知らない落とし穴が ありました^^;


動作をON-OFFさせる、 切り替えるためのに必要なもの 参考

タッチをしたら、ダイアログを表示し選択できると考えた場合、ステートは1つで作成できるものです。

ステートで、作業や処理を区別することのメリットは、プログラムを細かい単位にできる、
スクリプトが長くなりすぎたり、メモリ不足になったり、する時に分割するとき、など

ユーザー関数なども同じように、同じような機能・作業・商品を作成したり、修正やカスタマイズする時に役立つ点が多いと思います。 汎用的な、 いろいろ使いまわしができそうな機能として作成すると、より便利です。



☆☆☆★★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
では、
1つのステートで作業できることを、わざわざ複数に分割する必要は、ありませんが、 どのように作業・動作しているのか?理解できるか? 実験しておきましょう。  続きを読む
タグ :LSL

Posted by しんいち at 15:51Comments(0)複数のステート失敗

2008年07月15日

動作をON-OFFさせる、 切り替えるためのLSL

動作をON-OFFさせる、 切り替えるためのLSL  

ただそれだけです^^ 

★パーテイクルの ON-OFF、 
パーテイクルは、
llParticleSystem( [] );//パーテイクルの停止できます。

★スクリプトの動作は、名前を指定することで、 ON-OFFを指定できます この時のOFFは、停止していますのでなにも動作しません、負荷が最小になると思います。
//同じコンテンツにあるものに 限られますので、 子プリムで動作せるためにはリンクメッセージを受信するスクリプトは、切り替えのためのLSLとして動作していないといけません。
//親プリムから、直接、子プリムの特定なLSLを指定は困難です。(リモートロードなどで工夫できます)


//親プリムから、直接、子プリムの特定・リンクナンバーで設定できる 関数も多くありますので利用できます。色・透明度など
しかし、子プリムの特定・リンクナンバーで現在の状態を取得することは、困難です。 知ることは難しいです。



★リンクメセージを、発信する動作は、1つ準備してください、
必要に応じて 不要な部分を削除してください。 

★リンクメッセージで各部パーツの ON-OFF、するときには、
子プリム側では、受信すること、 変化することを組入れておけば良いです。

リンクメッセージは 文字を利用すること、数値を利用すること、 が多い方法です、 どちらか1つで動作は十分できます。

参考LSL   単独では、単にパーテークルが動作することが実験できます  続きを読む
タグ :LSL

Posted by しんいち at 15:50Comments(0)動作をON-OFFさせる