固定カメラで遊んでみました^^

jinko

2007年08月24日 06:03


Makapuさんのブログは、いつもためになる記事満載で本当に感謝でいっぱいです。
今回は、固定カメラで遊んでみました^^

きっかけは、ありまよさんのトコのブログで、
颯爽と走るありまよRiders」の撮影にの固定カメラのスクリプトを組んでる、
って話を読んだことでした。

固定カメラがあれば、ワタシも颯爽と飛び回るホウキを撮影できますよね。
ということで、またまたスクリプトに挑戦です♪




・・・って、先に、カメラを作ってみました^^;
カタチから入るのも大事でしょう?

あ、そんないらんことしている場合じゃないですねー
レイによって、イチからスクリプトなんて組めないので、
以前、読んだMakapuさんのトコの高度なカメラ制御のページをもう一度参考にさせていただきました。

Makapuさんのページでは、4つのタイプのスクリプトが紹介されていますが、
このうち固定カメラっぽいのは2種類です。

(1)カメラを完全に固定して被写体を追っかけないカメラ(完全固定カメラ
(2)カメラの位置を固定したまま被写体を追っかけるカメラ(固定追尾カメラ

先に、雰囲気だけ味わってください。
動画がよくわからないので、またまたGIFです。
(しかもちっちゃくてすいません^^;)

完全固定カメラ固定追尾カメラ

雰囲気つたわりますか~?

これって、結構操作が難しいんです。
カメラの視線がいつもと違うので、思ったようにまっすぐ進めません。
ちょっと、不思議な感覚になります。

よみがえる、いらいら棒のいらいら感!!
さあ、あなたも、固定カメラで不思議ワールドを体験しよう!!


・・・というキャッチコピーはだめ?
(天才Maroaさんのようには、いきませんね。)

まあ、とにかく、いらいらします。
いらいらしたい方、今回使ったスクリプトを参考までに載せておきますね。
ヘンなトコ発見したらご連絡よろしくお願いします。
遠くにいってしまったとき困るので、
チャットコマンドでロックしたりフリーにしたりできるようなつくりにしています^^

【使い方】
-適当なオブジェクトを作って、以下のスクリプトをコピペしてください。
-適当な位置に装着してください。
-チャットで以下のコマンドが使えます。
 /1 c1←完全固定カメラ
 /1 c2←固定追尾カメラ
 /1 c3←俯瞰カメラ(おまけ)
 /1 r ←カメラのリセット

※カメラは連続できりかえることができません。
/1 c1のつぎに/1 rをはさんで/1 c2のように、一旦リセットしてください。

//================================================
// [fixed_camera.lsl]
// Fixed the camera position & focus.
// ver 1.0 Aug 23, 2007 by Jinko Spitteler
//================================================
// Ref http://miz.slmame.com/e16983.html


integer        isReady;
key            keyOwner;

control_init () {
    isReady = FALSE;
    keyOwner = llGetOwner();
    llRequestPermissions(keyOwner, PERMISSION_CONTROL_CAMERA);
    llListen(1,"",keyOwner,"");
}

focus_lock_typeA () {
    //Fixed position & forcus
    llSetCameraParams([
        CAMERA_ACTIVE, TRUE,
        CAMERA_FOCUS_LOCKED, TRUE,
        CAMERA_POSITION_LOCKED, TRUE
    ]);
}
focus_lock_typeB () {
    //Fixed position & Follow target
    llSetCameraParams([
        CAMERA_ACTIVE, TRUE,
        CAMERA_FOCUS_LAG, 0.0,
        CAMERA_POSITION_LOCKED, TRUE
    ]);
}
focus_lock_typeC () {
    //Follow taget, Overlook
    llSetCameraParams([
        CAMERA_ACTIVE, TRUE,
        CAMERA_BEHINDNESS_ANGLE, 180.0,
        CAMERA_DISTANCE, 10.0,
        CAMERA_PITCH, 180.0
    ]);
}
focus_unlock () {
    llClearCameraParams();
    llReleaseCamera(llGetPermissionsKey());
}

default {
    state_entry() {
        if (llGetAttached() != 0) {
            control_init ();
        }
    }
    attach(key agent) {
        if (agent != NULL_KEY) {
            control_init ();
        }
        else {
            integer perm = llGetPermissions();
            if (perm & PERMISSION_CONTROL_CAMERA) {
                focus_unlock();
                llOwnerSay("thanks!!");
            }
        }
    }
    run_time_permissions(integer perm) {
        if (perm & PERMISSION_CONTROL_CAMERA) {
            llOwnerSay("Camera Control is ready!!");
            isReady = TRUE;
        }
    }
    listen(integer channel,string name, key id, string message) {
        if (id == keyOwner && isReady) {
            if(message == "c1") {
                focus_lock_typeA ();
                llOwnerSay("ok, Fixed Camera!!");
            }
            else if(message == "c2") {
                focus_lock_typeB ();
                llOwnerSay("ok, Lock on Target!!");
            }
            else if(message == "c3") {
                focus_lock_typeC ();
                llOwnerSay("ok, Follow Target!!");
            }
            else if(message == "r") {
                focus_unlock();
                llOwnerSay("ok, Release Target!!");
            }
        }
    }
}


ちょっと長くなってしまいました・・・


実は、記念写真とるのにもいいんですよ。
最初に背景を決めて、固定カメラにしてパチリなんて使い方もできますね。

Maroaさんにいただいたデッキブラシと早速記念撮影♪
キキには、デッキブラシですよね・・・ってことで作っていただきました^^



腰の緑のんが、今回のスクリプトの入ったボールです^^


Tips