テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Timeline上でビデオクリップを再生したりフェードで切り替えたりする方法

f:id:tsubaki_t1:20180830000154j:plain

今回はTimeline上でビデオクリップ(mp4やwebmといったフォーマット)を再生してみます。

 

 

Unityでビデオを再生

UnityはUnity 5.6辺りでVideo Playerという機能が新しく追加されました。今回はそのVideo PlayerをTimeline上から制御するアプローチになります。

tsubakit1.hateblo.jp

Timelineでビデオを再生

Timelineでビデオを再生するトラックは初期機能には含まれていないので、Default Playableから入手します。

assetstore.unity.com

利用するのはVideo Script Playable Trackです。

f:id:tsubaki_t1:20180829224253j:plain

 

手順

まずVideo Playerを用意します。

  • メニュー>Create >Video > Video Player

これでVideoPlayerが作成されます。
基本的にTimeline側では再生するアニメーションクリップやアルファ等は指定出来ますが、それ以外の項目…例えば”どういった方法で再生するのか”といった再生の根底にある項目はVideo Player側で制御します

f:id:tsubaki_t1:20180829224500j:plain

 

Video Player側の設定ではレンダリングの方法を指定します。

  • Render ModeはCamera Near Plane
  • CameraにMainCamera

ソースやビデオクリップの指定はココではしません。

f:id:tsubaki_t1:20180829224838j:plain

 

Timeline側の設定です。
まずはVideo Script PlayableTrackを作成します。

  1. Assets > Create > Timeline
    作成したTimelineアセットをシーンへドラッグ&ドロップ
  2. Window > Sequencing > TimelineでTimelineウィンドウを開く
    1で作成したGameObject(PlayableDirector入)を選択
  3. Add > Video Script Playable Track
  4. クリップリストを右クリックし、Add From Video Player
  5. 作成したクリップを選択し、Video Clipに再生したいビデオクリップを登録

f:id:tsubaki_t1:20180829230347g:plain

これでTimelineを再生させると動画が再生されるようになります。
うまく再生されない場合はPreviewボタンを一旦OFFにして再度ONにすると再生されるようになることがあります。

f:id:tsubaki_t1:20180829230436j:plain

各項目の説明はこんな感じです

  • Video Player : 再生に使用するビデオプレイヤー
    1クリップにつき1ビデオプレイヤーが必要
  • Video Clip : 再生するビデオクリップ。URLは指定できない
  • Mute : ミュートするかどうか
  • Loop : ループするかどうか
  • Preload Time : 事前にある程度、動画のバッファを読み込んでおく時間です
  • Clip In Time : 開始時間を少しずらす設定みたいです。但しループ時は0秒からスタートです

f:id:tsubaki_t1:20180829231028j:plain

なお、ビデオプレイヤーは基本的に使い回し出来ません。同じトラックに複数のクリップを置けるので、ビデオプレイヤーを複数のクリップで使いまわしたくなりますが、どうもそれは出来ないみたいです。

 

ビデオのフェード

表現の仕方にも依るのですが、ビデオを即座に出したり消したりするのではなく、フェードしながら出したり複数のカメラをフェードしながら切り替えるといった事をしたくなる事があるかもしれません。例えば演出とかで。

そのやり方を見ていきます。

f:id:tsubaki_t1:20180829233046g:plain

まず大前提として、ビデオプレイヤーのRender ModeがCamera Near PlaneもしくはCamera Far Planeである必要があります。動画で半透明を使うために必要な措置です。

f:id:tsubaki_t1:20180829233757j:plain

まずビデオのフェードを見ていきます。
これはEase In DurationやEase out Durationの設定と一致します。この時間の分だけ、アニメーションクリップがフェードしながら入ります。
なお半分以上の時間を指定することは出来ません。

  • フェードイン・フェードアウトの時間だけEase In DurationやEase out Durationを設定する。

f:id:tsubaki_t1:20180829233531j:plain

f:id:tsubaki_t1:20180829234245g:plain

ビデオのブレンドも似たような設定です。ただし、1クリップ1ビデオプレイヤーの原則に従い複数のVideo Playerを用意する必要があります。

クリップ毎にVideo Playerを設定すれば、あとはアニメーションでやっているようにクリップ同士をブレンドします。これでアニメーションがブレンドされます。

f:id:tsubaki_t1:20180829234458j:plain

 

問題

  • Timelineで指定したVideo Clipが登録しっぱなしになります
  • スクラブで動かす時、「進む(右にヘッドを動かす)」は兎も角「戻る(左にヘッドを動かす)」はマトモに動きません。その場合は一度クリップ外にヘッドを動かさないと動かいかもしれません。
    そういった意味では、動画も含めて動きを調整したい場合はゲームを再生しながらの方が良いかもしれません。
  • 音はゲームを再生しながらでないと出ない印象です