ソラマメブログ

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程度です


追加・妄想^^ できないもの^^とか課題
*  *  *  *  *  *  *  *  *  *  *  *  *  *  

★☆★スクリプト・ツール★☆★

臨時・設定で動作のテストをすること(60秒経過したら鯖から削除されるものです)
乗物・DEMO・試乗・体験 のために 臨時・設定を利用できます

★体験DEMOの展示REZ 
オブジェクトを展示します

★体験DEMOアタッチ装備 
アバターが装着するには、持ち物として所有してから装備することになります、
1度使用ができることを制限を実施する==2回使用はできないようにします、

★自爆・自動削除のスクリプト
(SIMを越えた、10分以上放置された、 SANDの範囲をこえてしまった)

★情報確認の表示スクリプト
土地・区画・ぷりむ・周囲のアバター人数
オブジェクトの名前・所有者、POS・ROT
オブジェクトの重さ・中心・エナジー




*  *  *  *  *  *  *  *  *  *  *  *  *  * 

課題として考えていたこと  難しそうなものイメージ

★他のオブジェクトと交差しているか?判定できる方法はあるのか? 交差する前に判定する? 
(物理にONする前の安全チェック) 
自分のオブジェクトの大きさ周囲のセンサー利用 
衝突判定は 変化した時だけしか判定できないので、 すでに交差した位置からは見つけられない?

ロケット、弾丸、飛行・放出・とびだして重力で自然に落下するもの
自然にゆるやかに落下するもの、 放物線、 落下速度、気球なら上昇する早さとか

おなじ緩やかな斜面を、転がる玉、 速く転がる玉、

移動速度などは初め大きく次第にユックリになること加速度(減衰する)を変更設定

パーティクルシステムにも 
加速度、自由落下、風の影響、バウンス などのパラメータが設定できる要素があります

回転と戻り回転 はずみばねの繰り返し

SIN波 三角波 のこぎり波 に座標移動を表現する

ボールがはずむための大きさや係数を設定・表現できるもの?

往復移動反転・反動する速さ・大きさをを設定・表現できるもの?


*  *  *  *  *  *  *  *  *  *  *  *  *  * 

回転の関数をいくつか実験して、 回転と戻り回転 はずみばねの繰り返し風のモデル1号機ができました^^
力を加えて30秒ほど、自然にばね運動してます、 30秒タイマーでランダムな要素をすこし加算してまた力を入れてあります。
もっと長い時間放置すると減衰しています、減衰を無し? にできるか? または、定期的にとまらない程度のパワーを補給できるか? タイミングがはんていできそうにないか^^


中心の長い赤い棒が中心で、角度ZERO、 左右に回転して振り子のように弾んでいます、 
位置POSは 空中で固定、 回転の指定角度を指定、 インパルスは瞬間に一度回転力を与える、
x、y軸の回転はFALSE Z軸回転のみTRUE、 

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



Posted by しんいち at 11:51│Comments(0)LSL物理
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。