LlSetCameraParams/ja
Jump to navigation
Jump to search
この 2 番目の例では、焦点と位置はロックも設定もされていないことに注意してください。これはカメラで乗り物の操縦者の後を追いかけるのに適しています。
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: 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 で叫ばれることになります。
- エージェントが最後に使用したコントロールがカメラコントロールの場合、スクリプトのカメラパラメータは設定されません。手動でのカメラ操作も設定を上書きします。
サンプル
カメラをリージョン座標に設定したり、カメラにアバターを追跡させたりできます。
リージョン座標の例:
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> メートル
]);
}
}
関連項目
イベント
• | run_time_permissions | – | 権限取得イベント |
関数
• | llGetPermissions | – | 付与されている権限を取得します | |
• | llGetPermissionsKey | – | 権限を許可したエージェントを取得します | |
• | llRequestPermissions | – | 権限を要求します | |
• | llClearCameraParams | |||
• | llGetCameraPos | |||
• | llGetCameraRot |
記事
• | 権限/スクリプト | |||
• | FollowCam |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。