Difference between revisions of "LlTargetOmega/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (Undo revision 850292 by Mako Nozaki (Talk))
m (ちょっとしたミスの修正)
 
(One intermediate revision by one other user not shown)
Line 4: Line 4:
|func_energy=10.0
|func_energy=10.0
|func=llTargetOmega
|func=llTargetOmega
|p1_type=vector|p1_name=axis|p1_desc=オブジェクト周辺の回転する任意の軸
|p1_type=vector|p1_name=axis|p1_desc=オブジェクトに周りを回転させる任意の軸
|p2_type=float|p2_name=spinrate|p2_desc=毎秒のラジアンでの回転率
|p2_type=float|p2_name=spinrate|p2_desc=ラジアン/秒で表現された回転率
|p3_type=float|p3_name=gain|p3_desc=最終回転率の調整同様に、0の場合回転動作を停止します
|p3_type=float|p3_name=gain|p3_desc=最終的なスピン速度を調節します。 0 の場合回転動作を停止します。
|func_footnote
|func_footnote
|func_desc='''gain'''の力と、毎秒のラジアンでの'''spinrate''' * [[llVecMag/ja|llVecMag]]('''axis''')で、オブジェクト周囲の'''axis'''を回転します。
|func_desc='''spinrate''' * {{LSLG/ja|llVecMag}}('''axis''') ラジアン/秒、 '''gain''' の強度で '''axis''' 軸の周りをオブジェクトやプリムが回転するようにします。
|examples=<lsl>//rotates the x axis once per second,
|examples=<lsl>//X 軸の周りを 1 秒に 1 回回り、
//  rotates the y axis 3 times per second,
//  Y 軸の周りを 1 秒に 3 回回り、
//  rotates the z axis once every two seconds.
//  Z 軸の周りを 2 秒で 1 回回ります。
//  combined the rate is about 3.20156 revolutions per second
//  速度を混ぜ合わせると、 1 秒に約 3.20156 回転することになります。


llTargetOmega(<1.0,3.0,0.5>,TWO_PI,1.0);</lsl>
llTargetOmega(<1.0,3.0,0.5>,TWO_PI,1.0);</lsl>
<lsl> //球のローカル Z 軸の周りを非常にゆっくり回ります .... 傾いた軸の周りを回る地球を作るのにいいでしょう
default
{
    state_entry()
    {
      llTargetOmega(llRot2Euler(llGetLocalRot())*(llEuler2Rot(<90,0,0>*DEG_TO_RAD)),0.1,0.01);
    }
}</lsl>
|spec=
|spec=
===物理===
===物理===
*オブジェクトが物理ではない場合、効果は完全にクライアント側で働きます。
*オブジェクトが物理属性でない場合、影響を受けるのはクライアント側だけです。ユーザが目の当たりにしている回転をスクリプトが検出したり確認したりすることは '''できません'''。
*オブジェクトが物理の場合、物理表現は定期的にアップデートされます。
*オブジェクトが物理属性の場合、物理表現は定期的にアップデートされます。ユーザが目の当たりにしている回転をスクリプトが検出したり確認したりすることが '''できます'''。
===リンクセット===
===リンクセット===
*スクリプトがルートプリムにアタッチされている場合、全体のオブジェクトは[[Viewer coordinate frames#Region|リージョン]]''''''周囲を回転します。
*スクリプトがルートプリムにアタッチされている場合、オブジェクト全体が [[Viewer coordinate frames/ja#Region|リージョン]] '''axis''' 周囲を回転します。
**オブジェクトがアタッチされている場合、アタッチメント''''''の周囲を回転します。
**オブジェクトが装着されている場合、装着 '''axis''' の周囲を回転します。
*スクリプトが子プリムにアタッチされている場合、プリムは[[Viewer coordinate frames#Local|ローカル]]''''''周囲を回転します。
*スクリプトが子プリムにアタッチされている場合、プリムは [[Viewer coordinate frames/ja#Local|ローカル]] '''axis''' 周囲を回転します。
*:子プリムは、全体のオブジェクトが別の''''''周りを回転している間は、自身の''''''周りを回転することができます。
**オブジェクト全体が別の '''axis''' の周りを回っていても、子プリムは自分の '''axis''' の周りを回ることができます。
|caveats=*オブジェクトが物理ではない場合、回転はクライアント側にのみ効果し、本来の動いていない位置で衝突するでしょう。
|caveats=*オブジェクトが物理ではない場合、回転はクライアント側だけの効果となり、移動していないジオメトリとして衝突することになります。
*関数が動いていないように見えるときは、Advanced > Network > Velocity Interpolate Objects (ビューワ 1.x) または 開発 > ネットワーク > 速力が挿入されたオブジェクト (ビューワ 2.x) が有効になっていることを確認しましょう。
|constants
|constants
|helpers
|helpers
Line 32: Line 43:
|also_articles
|also_articles
|also_tests={{LSL DefineRow||[[llTargetOmega test]]|}}
|also_tests={{LSL DefineRow||[[llTargetOmega test]]|}}
|notes=* '''回転率'''を実際の回転のレートで描画できるようにするには''''''上で[[llVecNorm/ja|llVecNorm]]を使います。
|notes=* '''axis''' に {{LSLG/ja|llVecNorm}} を使うと、 '''spinrate''' は実際の回転率と同じものとなります。
* llTargetOmega(ZERO_VECTOR, 0, 0);のような、回転の振る舞いを停止して除去するには、0を設定します。
* gain を 0 に設定すると、回転動作を停止・削除することになります。例えば、 <code>llTargetOmega({{LSLG/ja|ZERO_VECTOR}}, 0, 0)</code>; のように。
** 回転率を0より上にあげた後に0を再設定するのは、性急にllTargetOmega()を呼んで単純に除去するよりも、オブジェクトの全ての回転を停止させやすいです。
** spinrate が 0 で gain が 0 以外の場合、オブジェクトは以前の llTargetOmega() の設定をクリアするのではなく、全ての回転を止めようとします。
* (llSetForce を使ってオブジェクトを浮かせているなど) llTargetOmega() と同時に働かせている力が他にある場合は、<code>llTargetOmega(-{{LSLG/ja|llGetOmega}}(), 0., 1.)</code> を使って回転を止めます。 gain は 0 以外でなくてはならないことに気をつけてください。しかし、 1 でなくても構いません。
|cat1=Physics
|cat1=Physics
|cat2=Effects
|cat2=Effects
|cat3=Rotation
|cat3=Rotation
|cat4
|cat4=Prim
|cat5=Stop
|cat6
|cat7
|cat8
}}
}}

Latest revision as of 09:13, 13 May 2012

要約

関数: llTargetOmega( vector axis, float spinrate, float gain );

spinrate * llVecMag(axis) ラジアン/秒、 gain の強度で axis 軸の周りをオブジェクトやプリムが回転するようにします。

• vector axis オブジェクトに周りを回転させる任意の軸
• float spinrate ラジアン/秒で表現された回転率
• float gain 最終的なスピン速度を調節します。 0 の場合回転動作を停止します。

仕様

物理

  • オブジェクトが物理属性でない場合、影響を受けるのはクライアント側だけです。ユーザが目の当たりにしている回転をスクリプトが検出したり確認したりすることは できません
  • オブジェクトが物理属性の場合、物理表現は定期的にアップデートされます。ユーザが目の当たりにしている回転をスクリプトが検出したり確認したりすることが できます

リンクセット

  • スクリプトがルートプリムにアタッチされている場合、オブジェクト全体が リージョン axis 周囲を回転します。
    • オブジェクトが装着されている場合、装着 axis の周囲を回転します。
  • スクリプトが子プリムにアタッチされている場合、プリムは ローカル axis 周囲を回転します。
    • オブジェクト全体が別の axis の周りを回っていても、子プリムは自分の axis の周りを回ることができます。

警告

  • オブジェクトが物理ではない場合、回転はクライアント側だけの効果となり、移動していないジオメトリとして衝突することになります。
  • 関数が動いていないように見えるときは、Advanced > Network > Velocity Interpolate Objects (ビューワ 1.x) または 開発 > ネットワーク > 速力が挿入されたオブジェクト (ビューワ 2.x) が有効になっていることを確認しましょう。

サンプル

<lsl>//X 軸の周りを 1 秒に 1 回回り、 // Y 軸の周りを 1 秒に 3 回回り、 // Z 軸の周りを 2 秒で 1 回回ります。 // 速度を混ぜ合わせると、 1 秒に約 3.20156 回転することになります。

llTargetOmega(<1.0,3.0,0.5>,TWO_PI,1.0);</lsl>

<lsl> //球のローカル Z 軸の周りを非常にゆっくり回ります .... 傾いた軸の周りを回る地球を作るのにいいでしょう

default {

   state_entry()
   {
      llTargetOmega(llRot2Euler(llGetLocalRot())*(llEuler2Rot(<90,0,0>*DEG_TO_RAD)),0.1,0.01);
   }
}</lsl>

注意点

  • axisllVecNorm を使うと、 spinrate は実際の回転率と同じものとなります。
  • gain を 0 に設定すると、回転動作を停止・削除することになります。例えば、 llTargetOmega(ZERO_VECTOR, 0, 0); のように。
    • spinrate が 0 で gain が 0 以外の場合、オブジェクトは以前の llTargetOmega() の設定をクリアするのではなく、全ての回転を止めようとします。
  • (llSetForce を使ってオブジェクトを浮かせているなど) llTargetOmega() と同時に働かせている力が他にある場合は、llTargetOmega(-llGetOmega(), 0., 1.) を使って回転を止めます。 gain は 0 以外でなくてはならないことに気をつけてください。しかし、 1 でなくても構いません。

特記事項

Search JIRA for related Issues

テスト

•  llTargetOmega test

Signature

function void llTargetOmega( vector axis, float spinrate, float gain );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。