2016年12月10日土曜日

割と旧世代の書かれ方したスクリプトを現代の技術で軽量化する場合のお話

具体的には1プリム複数スクリプト状態を是正するための話

・リサイズスクリプトはllScaleByFactor使っとけ

 これで回避出来ないissueはMOD可にして対応しろ 時間と手間の無駄になる
 スクリプトでリサイズしつつ平面マップ貼り付けした面をどうにかしたいとかだと
 とりあえず面番号と貼ってあるテクスチャのUUIDは現状どうやったって必須なので
 そっち方面の専門家(最低でもダンプが取れること)に依頼して
 専用ロジックを組んでもらう以外の方法は無い

 可能ならルートプリムのXYZどれかを1Mとかにすると
 いきなりリセットかかったりした際の管理が楽だ

あととりあえず避けないといけない部分として

・物理ヴィークルで特定のプリムのみでコリジョンを拾いたい場合は
 そのプリムにスクリプトを入れてLSL2でコンパイルする

これだけはもうSLのSIM自体のバグによるものなのでここだけはどうにもならん
ヴィークル系で完全シングルスクリプトのは無理だ 諦めろ

あとはレスポンスアップとか作動のスムースさの話

・llSetLinkPrimitiveParamsFast は可能な限り最小の回数で済ます

大昔だと大量のパーツを同時稼働するためだけに
全部の稼働プリムにこれだけが入ってるやつとかあったっぽいな

 PRIM_LINK_TARGET これを多用すること
 逆にこれを使えない構造になっているロジックはレートコントロールとか考えたほうがいい

・SetTextとTargetOmegaはllSetLinkPrimitiveParamsにある

大昔のスクリプトだとボタン類とかホイール類で
この辺やるためだけにスクリプト分割するのが常道だったんだけど
現在ならPRIM_LINK_TARGETと併用することでスクリプトを使わなくて済む

・テクスチャアニメとパーティクル再生は一枚のスクリプトに全部ぶちこむ


これでカバー出来ないレベルで大量のパーティクルやテクスチャアニメの同期制御があるなら
コンセプト自体に何らかの間違いがあるから再検討すること

・モデリング段階でのピボットオフセットは場合によっては危険だが有用

 当たり判定を考えなくて良くて関節が一個でスイングさせたいだけならかなり有用
 ただし自動車のドアみたいな複数の関節制御や
 ある程度形状通りのまともなコリジョンが必要な場合はスクリプトでやったほうがええ

0 件のコメント:

コメントを投稿