ソラマメブログ

2009年11月04日

自分好きな人に~自分を見るカメラを作ってみました^^


昨日、朝起きるとキュウちゃんからカメラの件でIMが届いていました。
キュウちゃんとのやりとりはスクリプトな深い話が多くて飽きません^^

今日はずっと入れ違いになって直接お話できていないんですが、
カメラを後ろからじゃなく、正面や横に持っていくには
というテーマでした。

2人の結論的には、パラメータがないからたぶん標準では無理ってことだったんですが、
ゴリゴリやればできるかも・・・という展開になって、、
あーさすがキュウちゃんと思いつつ、
ワタシも自分のアバターを前から見るのにいちいちカメラ動かすのがめんどうでしたので作ってみることにしました。

自分好きな人に~自分を見るカメラを作ってみました^^



* * *

エメラルドの胸が揺れる機能・・・
あれだけ警告してるにもかかわらず自分ではすごくはまってしまって
ダンスなどでどれくらいゆれてるのか、ついつい確認してしまう癖がついてしまいました。

ゆれるアニメーションを見つけるとなんだか幸せな気分に~~

って、余計なお話でしたね。
でも、こんな毎日なので、カメラを自動で自分に向けることってすごく興味ありました。


カメラを自分で制御するには、llSetCameraParamsを使います。
だいぶ昔、Makapuさんのスクリプトみながら記事を書いたきりです^^;
(過去記事は→こちら)

2年前にはよくわからなかったことが、今見るとちょっとわかるようになっています。
あのスクリプトだといちいちリセットしないとコントロールがうまくいかないのはなんでか!とかね^^
ちょっとずつ進歩してるようでうれしい感じっす^^

で、もう一度Wikiから読み直しなんですが、llSetCameraParamsって

使えそうで使えないヤツww

なんですよねー
カメラ自体、バーチャルリアリティの空間を歩き回る前提なんじゃない?って感じの、
基本はアバターの後ろにカメラがあることになってるんだと思います。
アバターの後ろにカメラがあって、、、移動したり回転したりすると、
ちょっと遅れて後ろをついてくる設定をするための関数だと思います。

そういう設計(←推定)なので横からとか前からの設定がなくて、イマイチ使い勝手が良くないです。


まあ、愚痴はこのくらいにして・・・
今回は、ゴリゴリコースなので、アバターの位置と回転の情報からカメラ位置の座標を直接指定する方法でなんとかしてみました。

でも、本来のカメラのようにスムースな動きにはなりません。
カメラ位置を変えると、ドラマのシーンが変わったみたいに「パッ」っとカメラが動いてしまいます。

キュウちゃんもいろいろ実験してどうしてもスムースに画面が流れないとIMで教えてくれました。
ということで、「スムースな画面移動」は、早々にあきらめがつきました。


基本動作はこんな感じ・・・
※この記事の写真はトリミングしてて正確じゃないのですが雰囲気だけご紹介します

自分好きな人に~自分を見るカメラを作ってみました^^
自分好きな人に~自分を見るカメラを作ってみました^^
自分好きな人に~自分を見るカメラを作ってみました^^

伝わり・・にくいですよねー
動画撮影できないので、ごめんなさい。



■最終的なパラメータ設定

んで、ワタシが作ってみたのは、フォローカメラの設定で、ときどきカメラが正面に来る感じのHUD。
実際にやってみると、慣れが必要でしたが結構使えます。

設定部分を抜き出しておきますねー
forcus_set(vector cpos) {
    llSetCameraParams([
        CAMERA_ACTIVE,                    TRUE,
        CAMERA_FOCUS_LAG,                0.0,
        CAMERA_FOCUS_LOCKED,            FALSE,
        CAMERA_FOCUS_THRESHOLD,            0.0,
        CAMERA_POSITION,                cpos,    //←
        CAMERA_POSITION_LAG,            0.0,
        CAMERA_POSITION_LOCKED,            TRUE,
        CAMERA_POSITION_THRESHOLD,        0.0,
        CAMERA_FOCUS_OFFSET,            gEyeOfs  //←
    ]);
}


基本設定は、上に書いたとおりフォローカメラの設定です。
FOCUS: 位置指定なし、ロックもしない
POSITION: 位置指定する。ロックする
フォーカスをロックしなければアバターに追従するようになりますが、
位置を固定しているので、カメラがじっとしてアバターを追いかける動きになります。

①の部分で、アバターの位置・回転から計算したカメラの位置を設定しています。
また、フォーカスがアバターの腰の位置にくるので、②で目の高さのオフセットを設定しています。
あとは、3秒おきとかで、この関数をコールすればできあがりです。

概ね、こんな感じでうまくいきました。


フォローカメラにしたので、アバターが動いてもフレームから見えなくなりません。

自分好きな人に~自分を見るカメラを作ってみました^^
自分好きな人に~自分を見るカメラを作ってみました^^
自分好きな人に~自分を見るカメラを作ってみました^^


操作がいつもと違うのでなれないと人にぶつかったりクルマにひかれたりしますので
ご注意ください



■もうひと工夫してみる

ちょっと使ってみると気になる点がいくつかあったので、以下の機能もつけました。

◎THRESHOLD的な動き
ちょっとだけ動いたり、その場でちょっと回転したりしたときに、カメラが動くと結構ウザい感じがします。
パラメータの中にもTHRESHOLDがあるのですが、これをいじるとカメラがセンターに来ないので
スクリプトで別にコントロールするようにしました。

◎座ったとき対策
なんでかよく調べられてないのですが、立ってるときと座ったときでは、見え方が違っていました。
オフセットを設定したまま座るとずいぶん高い位置になってしまいます。
このための対策をしました。

◎テレポートの対策
スクリプトが動かないところにテレポートすると大変なことになるので
これも対策しました。

自分好きな人に~自分を見るカメラを作ってみました^^


■とりあえず(永久に?)ベータ版

いつもそうなんですが、自分で使う程度にできると興味を失ってしまいます。
本当は、パラメータ調整とか、HUDのデザインとかしてちゃんと商品化すれば面白いんですが、
めんどくさいし、よく考えると誰か作ってそうなので、
とりあえずベータ版としてお店においてみようと思います。

場所はこちら
Lionheart Nala/100/189/28


見てもらうのが早いもんねー
んで、もっと使いやすいの是非作ってみてください^^

自分が好きな方には楽しいかもです^^
(ぱるちゃんによるとみんな"自分スキー"らしいので安心してるけど)

機会がございましたらどうぞお持ちくださいませ。
ご意見とかいただけるとすごくうれしいなー


自分好きな人に~自分を見るカメラを作ってみました^^


同じカテゴリー(Creation)の記事画像
なんとなく目玉クリップを作ってみました^^
お花いっぱいの場所でいろいろ教えていただきました^^
ライオンみたいなものを作ってみました^^
1プリムのキャンドルに挑戦してみました^^
セカンドライフからTwitterしてみました^^
夏のお洋服つくってみました^^
同じカテゴリー(Creation)の記事
 なんとなく目玉クリップを作ってみました^^ (2011-09-25 22:50)
 お花いっぱいの場所でいろいろ教えていただきました^^ (2011-04-17 14:59)
 ライオンみたいなものを作ってみました^^ (2011-03-31 09:41)
 1プリムのキャンドルに挑戦してみました^^ (2010-12-11 23:55)
 セカンドライフからTwitterしてみました^^ (2010-10-21 11:16)
 夏のお洋服つくってみました^^ (2010-08-15 10:08)

Posted by jinko at 06:33│Comments(7)Creation
この記事へのコメント
お疲れ様です~
着飾ったら正面からフォローカメラで撮りたいのが人情というもの、それなのにアバターが動くとカメラはおいてけぼりだなんて関数の仕様が練られてないんだよね~、リンデンめっ!

LookMeですがまずはコンセプトですよ。
個人でファッションショーの気分が味わえるというのはどうでしょうか?
あらかじめかっこいいカメラワークがいくつか登録されていて服やアクセサリーなどアタッチポイント別にその部分が強調されるカメラワークもあるといいですね。
こういった使い方をすればポーズの価値も相乗効果で上がりますからいっそポーズ込みで商品化すれば需要はあると思いますよ。
需要とか抜きにしても面白そうじゃないですか?
Posted by Kyuzo Hax at 2009年11月05日 03:14
きゅうちゃん^^

ホントよ~、リンデンめっ!^^

ファッションショーっぽいカメラワーク。
うんうんすごく面白そう。

好きなポーズに対してアタッチポイントにズームできればいいけど
やり方わかんないので、もっと大雑把な動きだったらなんとかなるかもねー

といいつつ、自分で作れる気もしないので、、
誰か作ってくれてもいいなー
Posted by jinkojinko at 2009年11月05日 08:09
こんにちは~。
スムースなカメラ移動、2年くらい前に挑戦しました~。
仕組みはカメラの位置を移動させるのですが、そのときカメラが移動する早さの時間を遅くしてやるというものだったはずです。
コードは覚えてないのですが、、、撮影用にとパーンを作ったので、、、。
勘違いしていたらごめんなさい~。
Posted by Whitfield-In-World at 2009年11月05日 09:41
思い出した^^
CAMERA_POSITION_LAG
これが 0.0 だと即時移動ですが、2.0 とか 3.0 とか大きくすると移動時間が遅くなります。
Posted by Whitfield-In-World at 2009年11月05日 09:51
アタッチポイントの座標はスクリプトからは取得できないのでポーズとカメラワークはセットにしなくちゃならんというのがポイントですね(だからポーズ込み(^^;))
ポーズをとった時のアタッチポイント座標はアバターのローカル座標として別途用意しとかなくちゃならないけどBVHを開けば簡単に判るからあとはそれをノートカードなりで読ませればいいという……。
ほんとはオブジェクトのプロパティなんかに情報を埋め込んでスクリプトから参照できたらいいんだけどそういうのってできないんですよねぇ、リンデンめっ!
説明欄だとユーザーが消すこともできちゃうから無難にノートカードに記述するしかないよねぇ?
で、どうせノートカードを使うのであれば演出にパーティクルや必要ならrezも使えるのでそれらのパラメータもアイテム用に定型化、フォーマット化しちゃう。
最終的にポーズとノートカードを突っ込めば再生されるという仕組でどうです?
いろんなシチュエーションに合わせて「ひとりxxxカメラワーク」としてシリーズ化してみたら面白そう。
アクセサリー等、様々な装飾アイテムを作ってるクリエイターに受けるかもしれない。
このくらいなら飽きる前に完成できるかも(^^;
Posted by Kyuzo Hax at 2009年11月05日 12:40
Whitfield-In-World さん^^

思い出していただいてありがとうございます。
パラメータがいろいろ絡んでて何がなんだかわからないんですが・・・
CAMERA_POSITION_LAGでは、うまくコントロールできないんですよー

カメラ位置をロックするかしないかで動きが変わってくる
ロックしない場合、LAGの設定は有効で、設定位置から目標位置まで動くのはゆっくりになるんですけど、前のカメラの位置から、設定した位置に移動するときのスピードをコントロールできないっぽいんですよねー
だからそこでパッと切り替わっちゃう・・・
あと、目標位置も正確に指定できないんです。

仕様のせいなのか、指定が悪いのかまだよくわかっていません。
実はこのせいで、パンもスムースにできていないので、またコード思い出したら是非教えてください。
Posted by jinkojinko at 2009年11月05日 20:55
きゅうちゃん^^

たくさん考えてくれてありがとー

でもさ、上のコメントに書いたみたいに、基本のパンとかズームをちゃんと制御できてないのよー
移動中に前から自分を見ることに比べると、ちょっとマシなんやけど、それでも実験すると、再描画範囲を減らして、0.1~0.05秒間隔でカメラの再設定して、みたいなことにしないと画面がカクカクしちゃう。
PCのパワーもあるんやろうけどね^^

ところで、LookMeの動き。ワタシはあれで結構満足してるんやけど、、、
どうなんでしょう?
テストしてるうちに操作も慣れてきたし・・・
これはこれでいいかなとも思ってます。
って、また結局自分用かー
Posted by jinkojinko at 2009年11月05日 21:10
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。