LlSetCameraParams/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llSetCameraParams( list rules );

一度に複数のカメラのパラメータを設定します。

• list rules [ rule1, data1, rule2, data2 . . . rule, data ] の形式

実行するには、llRequestPermissions による PERMISSION_CONTROL_CAMERA 権限が必要です。

ルール パラメータ 初期値 値の範囲 説明
CAMERA_ACTIVE 12   integer 有効 FALSE TRUE または FALSE カメラの スクリプト でのコントロールをオンかオフに切り替えます
CAMERA_BEHINDNESS_ANGLE 8 float 度 10.0 0 ~ 180 カメラが対象の回転に縛られないアングルを角度で設定します。
CAMERA_BEHINDNESS_LAG 9 float 秒 0.0 0 ~ 3 カメラが背後以外にあるとき、どのぐらいでターゲットの後ろに戻らなければならないかを設定します。
CAMERA_DISTANCE 7 float メートル 3.0 0.5 ~ 10 カメラをターゲットからどのくらい遠ざけたいか設定します。
CAMERA_FOCUS 17 vector 位置 n/a n/a 焦点(対象の位置)を リージョン座標 で設定します。
CAMERA_FOCUS_LAG 6 float 秒 0.1 0 ~ 3 カメラがターゲットに焦点を合わせようとするときの遅延時間
CAMERA_FOCUS_LOCKED 22 integer ロックする FALSE TRUE または FALSE カメラの焦点を固定し、動かなくします。
CAMERA_FOCUS_OFFSET 1 vector メートル <0.0,0.0,0.0> <-10,-10,-10> ~ <10,10,10> カメラの焦点を、ターゲットに対する相対的な 位置 で合わせます。
CAMERA_FOCUS_THRESHOLD 11 float メートル 1.0 0 ~ 4 カメラの焦点が対象の動きに左右されない、カメラのターゲット位置を中心とした球の半径を設定します。
CAMERA_PITCH 0 float 度 0.0 -45 ~ 80 カメラの対角線上の焦点角度量を設定します。反比例の関係にあります。
CAMERA_POSITION 13 vector 位置 n/a n/a カメラの位置を リージョン座標 で設定します。
CAMERA_POSITION_LAG 5 float 秒 0.1 0 ~ 3 カメラが「理想的な」位置に向かうまでの遅延時間
CAMERA_POSITION_LOCKED 21 integer ロックする FALSE TRUE または FALSE カメラの位置を固定し、動けなくします。
CAMERA_POSITION_THRESHOLD 10 float メートル 1.0 0 ~ 4 カメラが対象の動きに左右されない、カメラの理想的な位置を中心とした球の半径を設定します。

警告

  • 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
  • スクリプトに PERMISSION_CONTROL_CAMERA の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
  • いったん PERMISSION_CONTROL_CAMERA 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
  • カメラコントロールは現在 (サーバ 1.38) アタッチメントや座っているオブジェクトでのみサポートされています。他で使用しようとすると、 エラーが DEBUG_CHANNEL で叫ばれることになります。
  • エージェントが最後に使用したコントロールがカメラコントロールの場合、スクリプトのカメラパラメータは設定されません。手動でのカメラ操作も設定を上書きします。
All Issues ~ Search JIRA for related Bugs

サンプル

カメラをリージョン座標に設定したり、カメラにアバターを追跡させたりできます。

リージョン座標の例:

lookAtMe( integer perms )
{
    if ( perms & PERMISSION_CONTROL_CAMERA )
    {
        vector camPos = llGetPos() + (relCamP * llGetRot() * turnOnChair) ;
        vector camFocus = llGetPos() ;
        llClearCameraParams(); // カメラをデフォルトにリセットします
        llSetCameraParams([
            CAMERA_ACTIVE, 1, // 1 は有効, 0 は無効
            CAMERA_FOCUS, camFocus, // リージョン座標
            CAMERA_FOCUS_LOCKED, TRUE, // (TRUE または FALSE)
            CAMERA_POSITION, camPos, // リージョン座標
            CAMERA_POSITION_LOCKED, TRUE // (TRUE または FALSE)
        ]);
    }
}

焦点と位置はロックされていることに注意してください。この最初の例では、カメラは camPos から camFocus を見るようになります。

カメラにアバターを追跡させる例:

lookAtMe( integer perms )
{
    if ( perms & PERMISSION_CONTROL_CAMERA )
    {
        llClearCameraParams(); // カメラをデフォルトにリセットします
        llSetCameraParams([
            CAMERA_ACTIVE, 1, // 1 は有効, 0 は無効
            CAMERA_BEHINDNESS_ANGLE, 30.0, // (0 ~ 180) 度
            CAMERA_BEHINDNESS_LAG, 0.0, // (0 ~ 3) 秒
            CAMERA_DISTANCE, 10.0, // ( 0.5 ~ 10) メートル
          //CAMERA_FOCUS, <0,0,5>, // リージョン座標
            CAMERA_FOCUS_LAG, 0.05 , // (0 ~ 3) 秒
            CAMERA_FOCUS_LOCKED, FALSE, // (TRUE または FALSE)
            CAMERA_FOCUS_THRESHOLD, 0.0, // (0 ~ 4) メートル
            CAMERA_PITCH, 10.0, // (-45 ~ 80) 度
          //CAMERA_POSITION, <0,0,0>, // リージョン座標
            CAMERA_POSITION_LAG, 0.0, // (0 ~ 3) 秒
            CAMERA_POSITION_LOCKED, FALSE, // (TRUE または FALSE)
            CAMERA_POSITION_THRESHOLD, 0.0, // (0 ~ 4) メートル
            CAMERA_FOCUS_OFFSET, <2.0, 0.0, 0.0> // <-10,-10,-10> ~ <10,10,10> メートル
        ]);
    }
}
この 2 番目の例では、焦点と位置はロックも設定もされていないことに注意してください。これはカメラで乗り物の操縦者の後を追いかけるのに適しています。

関連項目

イベント

•  run_time_permissions 権限取得イベント

関数

•  llGetPermissions 付与されている権限を取得します
•  llGetPermissionsKey 権限を許可したエージェントを取得します
•  llRequestPermissions 権限を要求します
•  llClearCameraParams
•  llGetCameraPos
•  llGetCameraRot

記事

•  権限/スクリプト
•  FollowCam

特記事項

Search JIRA for related Issues

テスト

•  llSetCameraParams Test

Signature

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