読者です 読者をやめる 読者になる 読者になる

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

UnityAssets

English version is here.

magicbullet.hatenablog.jp


Unity Asset Storeを見ると、動画編集っぽいことができそうなアセットがいくつかあります。

ただ、Unityで動画編集って何だろう?というのが前から気になってました。

Unityはプレーヤーが自分で操作するゲームを作るのが基本だと思ってたからです。でも、動画は自分では操作しないですよね。


そこで、ここ最近調べている、Unityできれいな表現を実現する方法、からは脱線しますが、どんなことができるのかを見てみたくて、Cinema Directorというアセットを調べてみました。


[目次]

0. はじめに - Cinema SuiteとCinema Directorの関係性 -
1. Cinema Directorの概要
2. 基本的な操作
3. 代表的な機能の紹介
4. 実際に動画にする方法
5. Tipsあれこれ
6. 感想


0. はじめに - Cinema SuiteとCinema Directorの関係性 -

Cinema DirectorをAssetStoreで探すと、Cinema Suite というアセットも見つかります。


Cinema Suiteとは、制作者が作ったCinema関係のアセットを4種類パッケージにした、まとめ売りの場合の名称です。

もう少し詳しく説明すると、

Cinema Suite ($129)
- Cinema Director ($60)
- Cinema Pro Cam ($50)
- Cinema Mocap ($70 : ただし単体の場合Cinema Mocap2になっているので、一部機能が古い可能性あり(未確認))
- Cinema Themes (無料)

という構成になっています。個別で購入すると$129を超えるのでお得です。
(価格は2016/3/28時点です)

この記事では、Cinema Directorに注力しました。


1. Cinema Directorの概要

Cinema Directorとは、Unityで作ったオブジェクトをタイムライン上で制御できるアセットです。

f:id:Takyu:20160328073749p:plain


横軸が時間、各行にあるのはGameObjectです。タイムライン上でGameObjectに付いているComponentの機能を呼び出すことができます。

タイムライン上でGameObjectの制御命令を並べることで、シーン実行すると動画のようにUnity内のオブジェクトを動かすことができます。

スクリプトだけで時間まで制御するのは相当大変なので、タイムライン制御はかなり便利です。

2. 基本的な操作

まずはAsset Storeから購入し、importします。importすると、「Window」からCinema Director の機能が使えるようになります。

f:id:Takyu:20160327130158p:plain

(注:私はCinema Suiteを購入したので、この画像にはCinema Director以外の機能も表示されています)

2-1. CutScene の作成

Cinema Directorでは、動画を作る時のタイムラインエディタのことをCutScene(カットシーン)と呼びます。

まずはこれを作成します。作成方法は、上記画像の中で、 "Create CutScene"を選択するだけです。

そうすると、このようなエディタが出てきます。

f:id:Takyu:20160327130522p:plain


Name :

CutSceneの名前です。Hierarchy Viewに表示されます。名前は何でも良くて、何も変更しなければ、Hierarchy ViewにはCutSceneという名前のGameObjectが生成されます。

Duration:

動画制御したい時間です。デフォルトは30秒です。

Looping:

繰り返し再生したい場合にチェックします。

Skippable:

マウスやキーボード入力により、動画再生モードをスキップしたいときに使います。
デフォルト設定では、Spaceキーを押すことで動画再生モードを終了できます。


Start Method:

On StartとOn TriggerとNoneがあります。On Startにすると、シーン実行と同時にCinema Directorのタイムライン制御が始まります。特に理由がなければ、On Startにするのがよいです。

Track Groups:

後で追加できるので、何も設定しなくて大丈夫です。Track Groupsの詳細は2-2で解説します。


ちなみに、I'm Feeling Lucky というボタンを押すと、Hierarchy Viewにあるオブジェクトをタイムラインエディタの制御対象にしてくれます。
ただ、制御対象にするのは後でできるので、特にこのボタンを使わなくても大丈夫です。


2-2. タイムラインエディタに制御対象のオブジェクトを指定


タイムラインエディタを開いて、左上のCreateを左クリックすると、画像のようなメニューが出てきます。

f:id:Takyu:20160327133244p:plain

Actor Track Group:

UnityのGameObjectの制御を行う機能をまとめたグループです。light、uGUIなども制御できます。Unityのシーン上で、オブジェクトの表示/非表示を任意のタイミングで切り替え可能です。
また、sendMessageにより、自分のオリジナルの機能を任意のタイミングで使うことができます。


Character Track Group:

Mecanimの機能で動くモデルを制御する機能をまとめたグループです。


Director Group:

Unityのシーン全体に影響する機能をまとめたグループです。
例:
・カメラワークを変更する
・BGMを再生/停止
・Unityのシーン遷移

Multi Actor Track Group:

複数のGameObjectを一括制御する機能をまとめたグループです。Actor Track Groupと同じですが、複数同時制御ができます。

サンプルシーンでは、ロボットの両目の点滅(まばたきを再現)を、同じタイミングで制御するために使っていました。
(ロボットのまばたきアニメーションについては、3-2にgifアニメを置きました)



"Group"ではGameObjectを指定します。指定したGameObjectをどのように制御するかは、Group内でさらに指定します。


Actor Track Group、Multi Actor Track Groupの場合

タイムライン上で"+"ボタンを押すと、個別のGameObjectを制御するためのメニューが出てきます。

f:id:Takyu:20160327134923p:plain

Add Actor Track:

GameObjectを色々な形で制御できます。全て書くと多いので省略しますが、このような機能が用意されています。

f:id:Takyu:20160327135238p:plain

なんとなく、名前からできそうな機能が予想付くかと思います。

ちなみに、この画像にある"GameObject"にある"Enable"と"Disable"は、対象のGameObjectのTransformのチェックを制御し、UnityのCamera上でオブジェクトの表示/非表示を切り替えることができます。


f:id:Takyu:20160327135649p:plain
Enable(表示)の場合

f:id:Takyu:20160327135707p:plain
Disable(非表示)の場合

Add Curve Track:

対象としたGameObjectのxyzに動きを付ける機能です。Unityのアニメーションの作成方法と似ています。

サンプルシーンでは、カメラワークを移動させるために使っていました。

f:id:Takyu:20160327140101p:plain


Director Groupの場合

タイムライン上で"+"ボタンを押すと、シーン全体に影響する機能の一覧が出てきます。

f:id:Takyu:20160327141600p:plain

Add Audio Track:

シーン全体に流れるAudioを指定できます。実際はAudio SourceコンポーネントとAudioClipが付いたGameObjectがHierarchy Viewに生成されます。

Add Global Track:

シーン全体に関する機能を制御できます。全て書くと多いので省略しますが、このような機能が用意されています。

f:id:Takyu:20160327142105p:plain

ちなみに、試してませんが、この画像にあるSet Time Scaleは、シーン全体の実行速度を変更できるようです。


Add Shot Track:

シーン内のカメラです。このTrackに複数のカメラを指定できます。

なお、サンプルシーンには複数のカメラがあり、Hierarchy Viewで見ても、色々な名前のカメラオブジェクトが準備されています。

f:id:Takyu:20160327142415p:plain

しかし、全てのカメラは特別な機能を持っているわけではなく、単に設置位置で名前を変えているだけのようです。
(最初、こういうカメラのPrefabがあるのかと思って探してしまいました、、)

3. 代表的な機能の紹介

実際にCinema Directorを使って動画を作ったのですが、諸事情で公開できないため、サンプルシーンや即席のミニシーンで解説します。

3-1. カメラワーク切り替え

たとえば、カメラワークをタイムラインエディタで制御することで、このようなカメラワークができます。

f:id:Takyu:20160327150401g:plain

これを作るために、タイムラインエディタではこのように書きました。

f:id:Takyu:20160327151121p:plain


まず、このシーンにはカメラオブジェクトが二つ配置されており、最初はCamera02はDisable(非表示)になっています。

f:id:Takyu:20160327153001j:plain


タイムラインエディタに書いた通り、実行後から5秒まではCamera01で表示させ、5秒から10秒まではCamera02で表示させます。

そのため、シーン実行により、異なったアングルからキャラクターを映すことができています。

また、画像の下半分にCurve Clip というものが二つあります。

これは、それぞれCamera01とCamera02のカメラオブジェクトのTransform Positionを時間変化とともに変えています。

そのため、シーン実行により、カメラが近づく、遠ざかる、が実現できます。

Curve Clipについては、位置を変化させたいオブジェクトを二十丸部分のアイコンをクリックすることで選択し、その後、プラスボタンを押してAdd Curve Track、さらにCurve Trackでプラスボタンを押せば出てきます。

タイムラインエディタ上に表示させたCurve Clipはドラッグや幅変更により、任意の時間で使用することができます。

3-2. アニメーション

たとえば、Animator Controllerと連携することでこんなことができます。

f:id:Takyu:20160327153540g:plain
ロボットが不定期にまばたきしています。

これを作るために、タイムラインエディタではこのように書きます。

f:id:Takyu:20160327153745p:plain

一つ一つの「くさび」は、ロボットの瞬きモーション実行タイミングを示しています。
(動画内のまばたき回数は多いので、タイムラインの画像は、その一部を切り取ってます)


タイムラインエディタに、まばたきをするタイミングに対して「くさび」を配置したら、次はここのタイミングにどんなアニメーションを実行するのか、を書きます。

他の場合もそうですが、Cinema Directorでは、このくさび型の図形をクリックすると、UnityのInspector Viewに関連情報を入力する欄が出てきます。

f:id:Takyu:20160327154059p:plain

今回の場合、ここにあるNameにBlinkと記述します。


では、Blinkはどこにあるかと言うと、まばたきのAnimator Controllerの状態遷移条件の一つです。

f:id:Takyu:20160328094812p:plain

3-3. トランジション

Director GroupからAdd Global Trackを選択してから個別のメニューを表示すると、Transitionという項目があります。

f:id:Takyu:20160327155218p:plain

この中にはFade from Black とか、Fade to Whiteのような機能があり、選択すればタイムラインエディタ上でトランジションが実現できます。

しかし、私の環境では、Fade〜を使うと、いきなり黒や白になってからトランジションしてしまい、変化が不自然でした。

色々試したところ、メニューの中にあるColor Transitionを調整すると、自然なトランジションができることがわかりました。

このような表現ができるようになります。

f:id:Takyu:20160327160604g:plain

これを作るために、タイムラインエディタではこのように書きます。

f:id:Takyu:20160327160936p:plain

3-1で作ったタイムラインを変更し、Camera01とCamera02の有効時間を長めにして、Transitionを冒頭と終了時に追加しています。

Transitionは

冒頭:真っ暗から明るくなっていく(フェードイン)

終了:だんだん暗くなる(フェードアウト)

という表現にしています。

さて、この表現ですが、Color TransitionのAlpha値を変更しているだけです。
以下、やり方です。

まず、タイムラインエディタ上のColor Transition を左クリックします。すると、UnityのInspector Viewで詳細設定ができるようになります。

f:id:Takyu:20160327162948p:plain

この画像のような画面で、fromとtoをクリックすると、それぞれカラーパネルが開きます。

あとは、状況に合わせてalphaを指定するだけです。

[フェードイン]

from : alphaを255
to : alphaを0

[フェードアウト]

from : alphaを0
to : alphaを255



4. 実際に動画にする方法

冒頭に説明した通り、Cinema Directorはタイムライン上でGameObjectを制御できることが特徴です。

一方、実際にmovとかmp4に出力する機能は持っていません。

そのため、Cinema Directorで動画っぽく仕上げたら、必要に応じて動画形式に出力する必要があります。

私の場合、動画の出力はQuick Time Playerを使用し、動画編集の最終調整はFilmoraというツールを使いました。

それぞれのツールについては別の記事にまとめましたので、よかったらご確認ください。

magicbullet.hatenablog.jp




5. Tips

実際にCinema Directorを使う方向けに、私が使っていて困ったところや解決方法を残しておきます。
何かの役に立てば幸いです。

5-1. Shot TrackのSet Cameraで指定できるカメラオブジェクトは、Hierarchy View上でチェックが付いているものだけ

f:id:Takyu:20160328064255p:plain

色々なアングルのカメラを追加していくと、他のカメラのViewが不要なのでチェックを外して作業を進めます。
すると、いざタイムラインエディタのShot Trackでカメラを指定するとき、チェックが外れてるので指定できない、ということがありました。

5-2. Cinema Director は、uGUIのimage をサポートしていない

2016/3/28時点の確認内容です。今後のアップデートでサポートされる可能性はあります。

f:id:Takyu:20160328065638p:plain

このように、基本的にはText系の変更のみです。
私の場合、Text Generatorを試そうと思ったのですが、null referenceになって使用できませんでした。
(環境に問題があるかもしれませんが、深追いはしていません)

5-3. 再生中のスクリーンショットを撮るために、Storyboardという機能がある

なぜStoryboardでスクショなのかは不明ですが、Global TrackのUtility からStoryboardを選択して、「くさび」を好きな位置に置くと、その瞬間のスクリーンショットを撮ることができます。

f:id:Takyu:20160328073749p:plain

赤い枠で囲った箇所にStroyboardのくさびを指定しました。


f:id:Takyu:20160328073810p:plain

このようなpng形式の画像が、Project ViewのAssetsフォルダトップに生成されます。
(生成までに数秒かかります)

5-4. タイムラインエディタに生成したTrackは、名称変更可能

タイトルの通りです。たとえば、下記の画像では、赤枠で囲った箇所の名称を変えてみました。

f:id:Takyu:20160328074259p:plain



6.感想

Cinema Directorについて、UnityのGameObjectをタイムライン上で直感的に制御できるので、とてもよいアセットだと思います。

詳しく書いてませんでしたが、CinemaDirectorに準備されていない機能を独自で作った場合、SendMessageを使うことで、タイムラインエディタから呼び出すこともできるなど、他にも色々なことができます。

ただし、3-3のトランジションのように、細かいところは制御が面倒なこともあります。

例えば、私が作った動画については、動きだけCinema Directorで作って、キャラクタの音声やBGM、説明するテキストは全てFilmoraで編集しました。

動画編集ソフトの方が簡単なこともあるので、そこはUnityにこだわらず、うまく併用して進めることで、開発期間を短くできると思います。