LSL(Linden Script Language)スクリプトTips集

動画を再生する(llParcelMediaCommandList,llGetTexture関数)

下記のスクリプトでは、右クリックして表示されるパイメニューの「Touch」を選ぶと動画が再生されます。

タイマーイベントを設定しているので、動画再生から20.0秒間経過すると動画は停止します。
上の木目調のテクスチャに動画を写すことをllGetTexture関数で指定しているので、
もし同じテクスチャを使っているオブジェクトが
他にあればそこにも動画が表示されてしまいますので、ご注意ください。

default
{
  state_entry()
  {
      llParcelMediaCommandList( [
          PARCEL_MEDIA_COMMAND_URL, "http://XXXXXXXX/XXXX.mov",
          PARCEL_MEDIA_COMMAND_TEXTURE, (key) llGetTexture(0) ,
          PARCEL_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);
  }

}
llParcelMediaCommandList関数:llParcelMediaCommandList(list command_list)
一番目のパラメータ : PARCEL_MEDIA_COMMAND_XXXXフラグ
PARCEL_MEDIA_COMMAND_STOP 終了。最初のフレームに戻る
PARCEL_MEDIA_COMMAND_PAUSE 一時停止
PARCEL_MEDIA_COMMAND_PLAY 再生
PARCEL_MEDIA_COMMAND_LOOP 終わりに達するとはじめに戻って繰り返す
PARCEL_MEDIA_COMMAND_TEXTURE 映像を写すテクスチャ
PARCEL_MEDIA_COMMAND_URL 動画のURL
PARCEL_MEDIA_COMMAND_TIME 再生開始の時間
PARCEL_MEDIA_COMMAND_AGENT UUIDで指定された人にだけに適用する
PARCEL_MEDIA_COMMAND_UNLOAD 動画を終了しテクスチャを表示する
(バグなのか、終了した後テクスチャは戻りません。)
PARCEL_MEDIA_COMMAND_AUTO_ALIGN TRUE=コンテンツのスケールをテクスチャの大きさに自動設定
(描画速度と画質が低下します。)
二番目のパラメータ : 上記フラグの値
llGetTexture関数:llGetTexture(integer side)
テクスチャの名前を取得します。持ち物(在庫目録)の中にない場合は、KEYを返します。
一番目のパラメータ : テクスチャ名を取得するプリムの面番号

<補足>
PARCEL_MEDIA_COMMAND_URLの値には、クイックタイムQuickTime動画 (.mov) や
MPEG4(.mp4, .mpeg4)、フラッシュ動画(.swf) ファイルのURLを指定します。
Real time QuickTime streams (rtsp://)でもOKです。
AVIでもできました。何も動画を持ってないという方は、http://www.aipiro.com/movie/SLmovie.avi
を使って試してみてください。ちなみにこの動画は、セカンドライフで動画を録るで録画したものです。

また、このスクリプト(state_entry部分)は、土地に設定する情報を変更しますので、
その土地を所有しているオーナーか、またはスクリプトが土地を所有しているグループに譲渡されている場合に動作します。 土地の権限がない場所でこのサンプルを試してもエラーが出てしまうのでご注意ください。