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キーを押したり、座ったりすると効果が無くなります。
※ 上記スクリプトはあくまでサンプルなので、変な挙動があったらすいませぬ。。。