Cross Technology

Unity、VR、MR、ARを中心とした技術ブログ

【Unity2017.2.0f3】Timelineの基本機能とCinema Directorとの違い

Unity2017になってタイムライン機能が追加されました。通常のUnityの処理ではソースコードベースでシーンを制御するのに対して、タイムラインを使うとシーケンスベースでシーンを制御できます。

便利なのですが、ざっと試した感じではタイムラインには色々癖があります。また、Unityのバージョン変化に伴う仕様変更が多く、公開されている情報と異なっている場合もありました。

そこで、今回はUnity2017.2.0f3時点でのタイムラインの概要と、類似機能で有名なアセット「Cinema Director」との違いを整理してみました。

また、タイムラインを使った例を下記に書きましたので、こちらもよろしければご参考ください。
UnityのTimelineで逃げ恥OP風シーンを作りました - Cross Technology

1. タイムラインの概要

公式ページにはこのように書かれています。

Unity公式HPでのタイムライン機能の紹介

タイムライン - Unity マニュアル

Unity公式HPでのタイムラインの概要

2つめの画像のように、右方向が時間で、各Gameobjectに実行させたい処理を並べていきます。もしスクリプトだけで作る場合、3秒経過したら敵を表示し、4.58秒後に爆発、、のようなことを全部書いてくことになります。不可能ではないですが、とても時間がかかります。

タイムラインを使えば、原則必要な処理をタイミングに合わせて並べていけばよいので、複雑な処理を作りたいときにとても効果的です。従来のスクリプト処理も混ぜられるので、「このタイミングでこのメソッドを呼ぶ」ができます。

2. 楽にできること、できるけど少し面倒なこと、できないこと

タイムラインがどんなものかを早期把握するため、タイトルのような観点で整理しました。

楽にできること

  • 任意のタイミング、期間でこれらが可能
  • Gameobjectを表示/非表示
  • Prefabを表示/非表示
  • 既存のAnimation Clipを再生
  • Audioを再生、停止

できるけど少し面倒なこと(慣れが必要)

  • 任意のタイミングで自分の作ったスクリプトのメソッドを呼ぶ
  • GameobjectのPosition(x,y,z)、Rotation(x,y,z)、Scale(x,y,z)を変化させてオリジナルのAnimationClipを作る
  • タイムラインの開始そのものをスクリプトから実行(例えば、キーボード入力をしたらタイムラインが開始する)

できないこと

  • 完成したシーンを動画出力する

(私の確認した範囲ではできませんが、もしできる場合ご指摘いただけると助かります)

できること、のやり方については後述します。

3. 準備

まずは空のGameObjectを生成し、Timeline など、あとでわかりやすい名前をつけ、Window / Timelineを選択します。

表示されたタブをタイムラインエディタと呼びます。次に、先ほど作った"Timeline"という空のGameobjectを選択した状態で(①)Createをクリックします(②)。

Unityタイムラインのcreate

すると、playableという拡張子のファイルが新規生成されます。保存場所を聞かれるので、ファイルの名前と保存場所を指定します。

ここでは、TimelineTimeline.playableというファイルを、Assets/MyWork/Timelineというフォルダに保存しました。

Unityタイムライン機能で生成したplayableファイルの保存画面

ここまで進めると、先ほど作った空の"Timeline" GameobjectにPlayable DirectorとAnimator コンポーネントが追加されます。
Unityタイムライン機能で生成されたPlayable DirectorとAnimator コンポーネント
今回調べた範囲ではこれらを変更することはありませんでした。

また、このようにタイムラインエディタが表示されます。赤枠のTimelineオブジェクトは右クリックで削除します。

Unityタイムラインエディタ

以上の準備により、"Timeline"という名前のGameobjectを起点としてタイムライン制御ができる状態になりました。以後、タイムラインエディタウインドウは、Hierarchy Viewで"Timeline"Objectを選択したときだけ表示されます。

4. 代表的な5つの機能と使い方

タイムラインエディタを表示させると、5種類のトラックを選択できるようになります。

Unityタイムラインの5種類のトラック

トラックとは、タイムラインエディタの行に相当するものです。どこまでを機能と呼ぶかは定義が分かれますが、今回、この5つのトラックを代表的な機能と位置づけ、使い方を解説します。

4-1. Activation Track

オブジェクトの表示、非表示に関するものです。タイムラインに表示すると、このようになります。

Unityタイムラインに表示したActivation Track

ここの「Active」をクリップといいます。このクリップはマウス操作で長さや位置を変更できます。トラック部分に任意のGameobjectをアタッチすると、Activeクリップの範囲だけ表示させることができます。

こうなります。ちょうどメタセコイアの練習をしていたので、そこで作ったドーナツの3Dモデルを使っています。

クリップを2つにするには、タイムライン上で右クリックし、「Add Activation Clip」を選択します。

4-2. Animation Track

オブジェクトのAnimationに関するものです。タイムラインに表示すると、このようになります。

Unityタイムラインに表示したAnimation Track

ここでのクリップは、UnityのAnimationClipです。そのため、Animation Clip付きのキャラクターモデルであれば任意のAnimation Clipを簡単に再生できます。

クリップ同士をくっつけるようにドラッグすると、クリップの切り替わりにtransitionを入れることができます。
(動画ではtransitionを入れています)

Animation Clipがないモデル、たとえば今回のドーナツの場合ではPosition、Rotation、Scaleを制御できます。その方法を説明します。

まず、No (Animator)という部分にGameobjectをドラッグします。"Create Animator on donut(オブジェクト名)"という表示が出るのでクリックし、Animator コンポーネントを追加します。この後、自分でAnimation Clipを作ります。

自分でAnimation Clipを作るには、トラックにある赤いボタンを押します。すると、クリップ部分でRecordingという表示が出ます。

UnityタイムラインのAnimation TrackのRecording画面

表示が出ている間にdonutオブジェクトを動かすと、その動きが記録されます。というはずですが、うまくやり方がわからず記録できませんでした。そこで、Curve Editorのようなもので作る方法を解説します。

先ほどのRecording...の状態のときに、オブジェクトを少しだけ動かしてから、トラックにある赤いボタンを押してRecording..を止めます。すると、このようにPositionという表示が増えます。

UnityタイムラインのAnimation TrackのPosition

Position.yを例に説明します。 Position.yを選択して、タイムライン上でyの点を見つけてドラッグします。点が移動するので、その線上(下記の赤い枠)を右クリックして、Add Keyを選択します。

UnityタイムラインのAdd Key

あとはAdd keyを繰り返すと、タイムラインにグラフができます。この点に沿ってオブジェクトを動かすことができます。

動きをつけたら、Covert To Clipでアニメーションクリップに変換します。

UnityタイムラインのConvert To Clip

Animation Clipにした後はタイムライン上で、クリップの長さや位置を自由に変更できます。

UnityタイムラインでAnimation Clipに変更した後の調整

また、上の赤枠のように、Animation Clipの中で先程のkeyを制御することもできます。

4-3. Audio Track

音楽の再生、停止に関するものです。タイムラインに表示すると、このようになります。

UnityタイムラインのAudio Track

タイムラインの時間軸部分に適当なAudio Clip(音楽ファイル)をドラッグすると、4-1 Activation TrackのときのようにAudio Clipをタイムラインで並べることができます。

UnityタイムラインのAutio Clip追加後

オーディオの再生確認ですが、Unity のPlayボタンを押すと確認できます。Timeline Editor上の再生マークを押しても再生されませんでした。
(Audio Source コンポーネントをMain Cameraにアタッチしてみましたが同様です)

ちなみに、今回のテストでは下記のサイトより音源をダウンロードさせていただきました。

システム音・電子音 -フリー効果音素材 くらげ工匠

4-4. Control Track

Prefabの表示、非表示に関するものです。タイムラインに表示すると、このようになります。
UnityタイムラインのControl Track

機能としては4-1. Activation Trackに似ています。ただ、clipの準備手順が少し異なります。右クリックで、Control Playable Assetというクリップを生成します。

UnityタイムラインのControl Playable Asset

このアセットのInspectorに表示したいPrefabをドラッグします。

UnityタイムラインのControl Playable AssetでPrefabをドラッグ

あとはClipの長さと位置を調整します。右クリックしてDuplicateを選択すれば、Clipを増やすことができます。


4-5. Playable Track

スクリプト制御に関するものです。タイムラインに表示すると、このようになります。

UnityタイムラインのPlayable Track

スクリプトの制御をタイムラインに伝えるには、Playable Assetという仕組みを挟む必要があります。簡単化したイメージです。

UnityタイムラインのPlayable Trackを使うイメージ

Playable AssetとPlayable Behaviourはどちらもスクリプトです。また、どちらもテンプレートがあるのでそこから作ると手間が省けます。

UnityタイムラインのPlayable AssetとPlayable Behaviour生成

まずは上記テンプレートで2つのスクリプトを作ります。ここでは、donut_Asset.csとdonut_behaviour.csを作りました。donut_Asset.csを作ったことで、タイムライン上で右クリックでclipの形で追加できるようになります。

UnityタイムラインのPlayable Trackにdonut_Assetを追加する

UnityタイムラインのPlayable Trackにdonut_Assetを追加した後のタイムライン
次にスクリプトです。donut_asset.csには、ExposedReferenceを入れて、donut_behaviour.csとのつなぎを作ります。

ExposedReferenceについては、下記のブログに説明があります。(ExposedReferenceで検索してみてください)

【Unity】Timelineで字幕を表示する - テラシュールブログ

Playable Assetはこう書きました。


gista3a4b8aa016580f54ed8d6c498860770

次に、Playable Behaviourです。


gist9c95c0aab120cb0c89acffde882cc9aa

実行するとこうなります。


5. Cinema Directorとの違い

以前、Unity Asset Storeで公開されているCinema Directorの使い方をまとめたことがあります。

Unityで動画編集のようなことができるCinema Director を試してみました。 - Cross Technology

そのときの経験から、Cinema Directorとの違いを整理しました。まずはCinema Directorにだけあるものです。

Add Global Trackによって、シーン全体の制御ができる

Cinema DirectorのAdd Global Track

シーン全体のBGM再生、再生速度などを制御できます。

Cameraオブジェクト専用のTrackがある

Cinema DirectorのCameraオブジェクト専用Track

Unityのタイムラインでは別のカメラワークに切り替える場合、トラックを別に作る必要があります。カメラを切り替えることが多い場合はCinema Directorの方が便利そうです。

画面全体のトランジションができる

このように、トランジションの設定ができます。

Cinema Directorのトランジション設定

Cinema Directorのトランジション例

再生中のスクリーンショットを撮れる「Storyboard」という機能がある

Cinema DirectorのStoryboard

このように、タイムライン上に「くさび」を入れるだけです。Assetsフォルダに画像が生成されます。

それ以外の機能は、タイムラインでもCinema Directorでも実現できます。手順は多少異なりますが、あとは好みの問題かと思います。

7. 終わりに

ちょうど動画編集をする予定があったので、少し調べてみました。タイムライン機能を使えば他にも色々なことができそうなので、変わった使い方を見つけたらまた紹介できればと思います。