セカンドライフで映像を流す。

2008年4月11日 10:32

セカンドライフ内で映像を流そうとすると、環境設定部分から土地に指定した映像を流すしか方法がないと思っていたら、そうではなかった!LSLからの制御でセカンドライフ内に映像を流すことができる模様。

コードは以下。http://www.aipiro.com/lsltips/index36.htmを引用してます。

default
{
    state_entry()
    {
       llPaecelMediaCommandList([
       PARCEL_MEDIA_COMMAND_URL,"http://hogehoge/hoge.mov",
       PARCEL_MEDIA_COMMAND_TEXTURE,(key) || llGetTexture(0),
       PARCE__MEDIA_COMMAND_AUTO_ALIGN,TRUE]);
    }
   
    touch_start(integer total_number)
    {
       llParcelMediaCommandList([
          PARCEL_MEDIA_COMMAND_AGENT,llDetectedKey(0),
          PARCEL_MEDIA_COMMAND_TIME,0.0,
          PARCEL_MEDIA_COMMAND_PLAY]);
       llSetTimerEvent(20.0);
    }
   
    timer()
    {
       llParcelMediaCommandList([
          PARCEL_MEDIA_COMMAND_STOP]);
       llSetTimerEvent(0.0);
    }
}

以上で再生が可能。解説をすると、とにかく映像を動作させるには、llParcelMediaCommonadList(list command_list)関数が必要みたいだ。引数はリスト型で与える。ここで与える引数はすべて、頭に
PARCEL_MEDIA_COMMAND_
とつく。それ以下にフラグとして色々用意されているので、そのフラグに変数を与えたり、動作するフラグを使ったりする。

では個別に見ていくと、on_rezしたときに動作する、state_entry()では、まず、映像URLと映像を写すテクスチャとコンテンツのスケールをテクスチャを大きさに自動設定しています。これでデフォルト状態を作り出します。llGetTexture()関数で、テクスチャの名前もしくはkeyを取得する。

初期状態が決定したところで、アバターのアクションによって動きがでるようにする。そのひとつに「タッチしたら・・・」というものがあり、それをtouch_start()ステートで実行。
中身をみると、タッチしたひとのID取得し、その人だけに見せるように設定し、再生開示時間と、再生命令を出すコマンドを打ち込んでいる。
ずーっと映像を流すわけではなく、20秒でとまるように、llSetTimerEvent(20.0)と指定してある。

では、そのllSetTimerEventのときに反応するステート関数として、timer()を用意。
その中身は、再生を終了させるコマンドが記載されている。そのあとにある
llSetTimerEvent(0.0);
は何かというと、llParcelMediaCommandListで再生した映像は、ストップしたときに、画像の表示がされないという問題がある。なので、むりやり0フレーム目に設定している。

以上のコマンドを書くとセカンドライフ内で映像を流すことができる。みたい。というかできた。
ここで補足情報を、llParcerMediaCommandList()PARCEL_MEDIA_COMMAND_URLの値だけど、movファイルのような映像ファイルを設定しなくてもいい。たとえば、PHPファイルを設定しておき、PHP側で処理した結果、movファイルにアクセスできれば、映像は流せることがわかった。
ということは、ユーザによって、番組を切替えることもできるし、新しい映像を常にみせるのに、わざわざ、LSLを書き換えることをしなくても・・・という発展が期待される。
ってな感じ。

「PARCEL_MEDIA_COMMAND_○○」の○○についての説明リスト
(以下○○しか書いていません)

【動作系】
・STOP : 終了し、最初のフレームに戻る
・PAUSE : 一時停止
・PLAY : 再生
・LOOP : 終わりに到達すると、はじめにもどって繰り返す


【設定系】
TEXTURE : 動画を再生させる対象となる画像テクスチャ
URL : 動画のURL
TIME : 再生開始の時間
AGENT : UUIDで指定されたヒトだけにだけ適応させる
UNLOAD : 動画を終了し、テクスチャを表示させる(はずだけど戻らないみたい)

AUTO_ALIGN : TRUE/FALSEでコンテンツのスケールをテクスチャの大きさに自動設定

SecondLife映像系 | comment(0) | trackback(0) |