モヴィスル?はセカンドライフ総合動画サイト!みなさんの動画お待ちしておりますえ〜♪

4.カメラ


セカンドライフの動画作品を作り際には、
動画編集ソフトでの編集も重要ですが、それと同じくらい重要な要素があります!

それは、It's カメラ操作!

つまり、編集前の断片的な動画素材をいかに良い感じに撮るか、ということが大事です。
そしてそんな"使える"素材を撮るには、カメラ操作は欠かせません。

Joystick Flycamを使ったカメラ操作や、Altキーを使ったカメラ操作などありますが、
今回は、スクリプトを使ったカメラ操作を紹介します♪

カメラ操作のサンプルスクリプト↓

//カメラをオンにする
take_camera_control(key agent)
{
llOwnerSay("take_camera_control"); // デバッグ用にファンクション名発言
llOwnerSay( (string)agent);
llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA);
llSetCameraParams([
CAMERA_ACTIVE, 1,
CAMERA_BEHINDNESS_ANGLE, 45.0,
CAMERA_BEHINDNESS_LAG, 0.5,
CAMERA_DISTANCE, 8.0,
//CAMERA_FOCUS, <0,0,5>,
CAMERA_FOCUS_LAG, 0.05 ,
CAMERA_FOCUS_LOCKED, FALSE,
CAMERA_FOCUS_THRESHOLD, 0.0,
CAMERA_PITCH, 0.0,
//CAMERA_POSITION, <0,0,0>,
CAMERA_POSITION_LAG, 0.1,
CAMERA_POSITION_LOCKED, FALSE,
CAMERA_POSITION_THRESHOLD, 0.0,
CAMERA_FOCUS_OFFSET, <3,0,2>
]);

}

//カメラをオフにする
release_camera_control(key agent)
{
llOwnerSay("release_camera_control"); // デバッグ用にファンクション名発言
llSetCameraParams([CAMERA_ACTIVE, 0]); // 1:オン 0:オフ
llReleaseCamera(agent);
}

default
{
state_entry()
{
llListen(777,"",llGetOwner(),"");
}

listen(integer channel, string name, key id, string message){
if (message == "ON"){
take_camera_control(id);
}
else if (message == "OFF")
{
release_camera_control(id);
}
}

//PERMISSION_CONTROL_CAMERAを取得できたら、カメラコントロール開始
run_time_permissions(integer perm) {
if ((perm & PERMISSION_CONTROL_CAMERA) == PERMISSION_CONTROL_CAMERA) {
llSetCameraParams([CAMERA_ACTIVE, 1]); // 1:オン 0:オフ
llOwnerSay("Camera permissions have been taken");
}
}

//カメラの装着時にPERMISSION_CONTROL_CAMERAを取得
attach(key agent){
if (agent != NULL_KEY){
llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA);
}
}

}


■今回作ったサンプルスクリプトの解説/使い方

まず、装着します。
(PERMISSION_CONTROL_CAMERA がゲットされます)
(スクリプトでカメラを動かす際には、必須です)

無事にPERMISSION_CONTROL_CAMERA がゲットできたら、
オーナーのチャンネル777番での「ON」「OFF」という会話に反応して、
(チャット欄に「/777 ON」「/777 OFF」と入力してEnterキーを押します)
スクリプトカメラが動作したり、動作停止したりします。

■カメラの設定

カメラを設定するのは、上記の青色の文字の部分です。
具体的な各パラメータの説明は下記の通りです。

CAMERA_ACTIVE (1:オン 0:オフ)
スクリプトでカメラを動かすかどうか
CAMERA_BEHINDNESS_ANGLE (0〜180)
アバターが回転しても、ここで指定した角度の間は、カメラ角度は変化しません。
180度に設定すれば、カメラの角度はアバターが回転しても固定となります
CAMERA_BEHINDNESS_LAG (0 〜 3)
上記CAMERA_BEHINDNESS_ANGLEで設定した角度を超えてアバターが回転した際に、カメラがアバターの背後に戻ろうとする強さ。
0で、カメラは常にアバターの背後に位置します
3で、カメラは、アバターがCAMERA_BEHINDNESS_ANGLEを超えて回転した場合、ゆっくりと動き、アバターの背後までは動きません
CAMERA_DISTANCE ( 0.5 to 10)メートル
カメラを装着した時の、アバターとカメラとの距離
カメラを装着した後は、通常通りにマウスホイール等でカメラとアバターの距離は自由に変更できます
このパラメータは装着した時だけの距離を設定します。
CAMERA_FOCUS カメラを装着した際のカメラの焦点位置(フォーカス)
アバターからの相対距離を設定する。
CAMERA_FOCUS_LAG (0 〜 3)
上記CAMERA_FOCUSで設定された焦点位置から、デフォルトの位置まで戻る際の遅れ(速度の遅さ)を設定します。
0:戻りません
3:ゆっくり戻ります
CAMERA_FOCUS_LOCKED (TRUE or FALSE)
カメラの焦点(フォーカス)を固定するかどうかを設定します
TRUE:固定、FALSE:固定しない
CAMERA_FOCUS_THRESHOLD (0 〜 4) メートル
カメラフォーカスがアバターの移動に影響を受けない範囲(メートル)を設定します
CAMERA_FOCUS_OFFSET <-10,-10,-10> 〜 <10,10,10> メートル
カメラのフォーカス位置を設定します
位置は、アバターからの相対距離(メートル)です。
CAMERA_PITCH (-45 〜 80)
アバターに対するカメラの角度を調整します
-45:カメラは斜め下から見上げます
80:カメラは頭上から見下ろします
CAMERA_POSITION カメラの位置を指定します
(アバターからの相対距離となります。焦点位置とは異なります)
CAMERA_POSITION_LAG (0 〜 3)
上記で設定したカメラ位置から、"理想的な"位置へカメラが戻る強度を設定します
0:すぐ戻る、3:ゆっくり戻る
CAMERA_POSITION_LOCKED (TRUE or FALSE)
上記でCAMERA_POSITIONで設定した位置にカメラを固定するかどうかを設定します
TRUE:固定、FALSE:固定しない
CAMERA_POSITION_THRESHOLD (0 〜 4)メートル
カメラの"理想的な"位置を設定します。
"理想的な"位置とは、カメラフォーカス等を設定し、フォーカス位置等が戻ってくる場合の位置です


■カメラのカスタマイズ

一連の動作を確認できましたら、
青色の文字の部分で設定しているパラメータの値を変えてみてください。
カメラの挙動が変わるハズっす。

「撮りたい!」と思えたシーンも、カメラを自由に動かせれば、
より忠実に実現できるハズです♪

尚、スクリプトで動かすカメラは、
Altキーを押したり、座ったりすると効果が無くなります。

※ 上記スクリプトはあくまでサンプルなので、変な挙動があったらすいませぬ。。。