テラシュールブログ

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

【Unity】Timelineの独自Playableを超簡単に作るウィザード

キーボードが治ったので久しぶりのブログ更新です。

今回の内容はTimelineのPlayableを簡単に自作する方法です。

f:id:tsubaki_t1:20171015191851j:plain

Playableの自作

Timelineは現状、非常に単純な機能しか有していません。
例えば、アニメーションの再生、オーディオの再生、GameObjectのアクティブ切替、それと汎用ControlPlayableです。

tsubakit1.hateblo.jp

ControlPlayableがソコソコ汎用的なのでソレナリに色々な事が出来るには出来るのですが、少し凝った事をしようとすると直ぐにPlayableを自作したくなります。

 

とは言え、Playableの自作はかなり面倒くさい作業です。

Monobehaviourのように単純に一つのコードでは動作せず、Playable Asset、Playable Behavour、そして現実的に運用しようと思ったらPlayable Trackが必要でしょう。
Playable Trackは作成一覧に無いので、気づきにくい項目です。

f:id:tsubaki_t1:20171015192638j:plain

Playableをサクっと作るウィザード

この面倒くさいPlayableの作成をかなり単純にしてくれる機能がありました。

Default Playableに付いているTimeline Playable Wizardを使います。

f:id:tsubaki_t1:20171015192723j:plain

Default Playableについてはコチラ

tsubakit1.hateblo.jp

Timeline Playable Wizardの使い方

Wizardの使い方です。

まずDefault Playableをインポートしておき、Window > Timeline Playable Wizardを選択します。

すると下のような画面が出てきます。

f:id:tsubaki_t1:20171015192922j:plain

クリップ側で特にバインドしないならばStandard Bind Playableにチェックを入れます。
要するに、トラックで動かす対象が固定ならばStandard Bind Playableにチェックを入れる、クリップ毎に動かす対象(目標)を変えたいならばチェックを外す…といった感じです。

f:id:tsubaki_t1:20171015193300j:plain

後はTrack Binding TypeバインドしたいクラスStandard Bind Playable Property動かしたい値を設定します。

例えばTransformのPositionをTimelineで動かしたい場合は、下のような設定になります。

f:id:tsubaki_t1:20171015193617j:plain

字幕のようにTimeineで文字が変わる項目を作りたい場合は、下のような設定です。

f:id:tsubaki_t1:20171015193646j:plain

後はウィザード下のCreateボタンを押せば、Playableのコードが作られます。

作られるコード

作られるコードは若干面倒くさい構造です。たったコレだけの為に、5つのソースコードが追加されます。

f:id:tsubaki_t1:20171015194056j:plain

とは言え、命名規則はある程度決まっており、役割としても概ね決まっています。

  • ○○○Track
  • ○○○MixerBehaviour
  • ○○○Behaviour
  • ○○○Clip
  • ○○○Drawer
○○○Track

トラックを制御するコードです。
何をバインドするか…といった項目や、トラックの色を設定します。

MixerBehaviourもココから生成しています。

f:id:tsubaki_t1:20171015194432j:plain

○○○Clip

クリップをシリアライズするクラスです。
この項目にクリップ毎のパラメータを設定したり云々する感じです。

f:id:tsubaki_t1:20171015194659j:plain

○○○MixerBehaviour

クリップ全体の動作…という感じです。

この項目を記述して、クリップのブレンドやクリップ全体の動作を制御します。

このインスタンス一つのTrackに一つ生成されます。

大抵の場合、こちらを修正すれば色々と操作できます。

○○○Behaviour

各クリップの動作や、パラメータ保持情報についてです。

設定したクリップの数だけインスタンスが作られます

クリップ毎のパラメータを保持しているのはこの項目ですが、Drawerがパラメータを制御しているので、Drawerを編集しないとパラメータを増やせません

○○○Drawer

○○○Behaviourのエディター拡張…みたいなものです。

○○○Behaviourの値を編集したい場合は、こちらも編集します。

感想

手軽に出来るウィザードを用意するんじゃなくて、必要なコードはを少しシンプルな構造にできなかったのかしら。

関連

tsubakit1.hateblo.jp

【Unity】Hierarchyビューを複数使うのは、大きめのシーンを扱う際に便利かもしれない

f:id:tsubaki_t1:20170930223539j:plain

大きめのシーンを扱う時、Hierarchyを複数扱うと広い範囲をカバー出来て便利かもしれない…というお話です。

巨大なシーンとHierarchy

巨大なシーンを操作している時、複数の範囲のGameObjectを同時に編集したくなるといったケースがあります。
例えば、キャラクターのGameObjectとUIのGameObjectを行ったり来たりするような場合や、階層の広いUIを上に下に行ったり来たりする場合。

それがSceneViewで管理出来る物ならば、SceneViewでアクセスすれば良い話ではありますが、巨大なシーンになってくるとそれもソレで面倒くさい…という事もありそうです。

かと言って、毎回Hierarchyを閉じるのも面倒な話です。

f:id:tsubaki_t1:20170930224808j:plain

ならば検索…タグはどこだ?

巨大な物を管理する上で色々と便利なのが検索です。ただ、Hierarchyの検索で見つけられるのは以下の3つのみで、タグ付けして云々のような便利さはありません。

  • 保有するComponent
  • GameObject自体の名前
  • 指定アセットを参照しているオブジェクト(下のGIF)

https://cdn-ak.f.st-hatena.com/images/fotolife/t/tsubaki_t1/20170620/20170620001933.gif

Save SelectIionは選択を記憶する

Save Selectionを使う事で、オブジェクトの選択位置を記憶する…というアイディアもあります。

但しこの機能、ゲームをビルドすると参照情報を失うという微妙な挙動なので、使い所が微妙な機能でもあります。

https://cdn-ak.f.st-hatena.com/images/fotolife/t/tsubaki_t1/20150421/20150421022306.png

そうだ、Hierarchyを増やそう

面白いアイディアがHierarchyを増やしてしまうアイディアです。

単純にHierarchyViewを増やす事で、ある程度の階層を無視して、任意の階層にフォーカスを当てて操作が出来るという事を期待します。

 

Maya & Unity Timelineで魅せるキャラクターイントロ でHierarchyビューを二つ使用しているのを確認出来ます。

f:id:tsubaki_t1:20170930230046j:plain

やり方

Hierarchy Viewを増やすのは簡単です。メニューからAdd Tabを選択、Hierarchyを選択するだけです。作ったタブは移動する等をすれば良いです。

f:id:tsubaki_t1:20170930230336j:plain

選択先の情報が他のタブにも影響してしまうのを回避

さて、これだけだと一つだけ問題があります。
オブジェクトを選択した時、他のタブも同様に選択されたことになり、タブが開いたり移動したりしてしまう事です。

例えば下のGifアニメでは、左のタブでキャラクターの階層を開いて選択時、右の階層も開いてしまい、さらにフォーカスされたオブジェクトまでビューが動いてしまっています。

f:id:tsubaki_t1:20170930230642g:plain

この問題を解決するには、Hierarchyのビューをロックします。
出来れば全てのHierarchy Viewをロックしてしまうのが良いです。

これでオブジェクトを選択しても他のオブジェクトが一緒に開くことを回避出来ます。

f:id:tsubaki_t1:20170930230731j:plain

f:id:tsubaki_t1:20170930230859g:plain

試した感じ、マルチディスプレイや(20インチディスプレイ以上の)巨大なディスプレイで操作する場合、タブを切り離して使うとかなり操作効率上がる印象です。

Inspectorビューも同時に編集

InspectorやProjectビューも、ビューを増やしてロックの手順で複数同時編集出来ます。

ただ、ProjectViewは検索機能やお気に入り機能が充実してますし、Inspectorは切り替える頻度が多すぎて「増やしてロック」の手順では面倒臭すぎるかもしれません。

tsubakit1.hateblo.jp

Project Viewに至っては、何の役に立つのか分からんシリーズに乗るレベル。いや、使いみちはありそうではあるんですが。

tsubakit1.hateblo.jp

関連

www.twitch.tv

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

日記

19インチディスプレイがお亡くなりになられたので23インチディスプレイを購入。ブルーライト削減()とか思ってましたが、これ結構良いかもですね。予想以上に目がシパシパしない。

正直、都市伝説の類だと思ってましたが…うーむ…プラシーボ?

【Unity】一つ一つエディター上で操作を指示する、インタラクティブなチュートリアル

f:id:tsubaki_t1:20170929235718j:plain

Unityのチュートリアルの一つに、少し面白い形の物が登場したので紹介。

操作先を指示してくれるチュートリアル

blogs.unity3d.com

Interactive Tutorialシリーズです。

このシリーズでは、ソーシャルゲームにあるチュートリアルのようなチュートリアルを体験出来るみたいです。
操作対象がハイライトで表示され、作業を行うとチュートリアルが進む…といった感じです。

f:id:tsubaki_t1:20170930000233j:plain

ウィンドウの操作手順に従って作業を行うことで、操作の流れを理解してもらう…といった感じなのかなと。

実際の画面はこんな感じで進みます。

f:id:tsubaki_t1:20170930000327g:plain

言語は残念ながら英語のみです。
スクリプト(ScriptableObjectで構成)は公開されているので、頑張れば日本語にすることは出来ると思いますが。

チュートリアルはエディターのスタートからも開始できる

もう一つの特徴は、このチュートリアルがUnityエディタに統合されている点です。

多分Unity 2017.2からなのですが、起動後のLearnメニューから、チュートリアルが開始出来るみたいです。

f:id:tsubaki_t1:20170930000947g:plain

Asset Storeからもダウンロード出来ます。

f:id:tsubaki_t1:20170930001147j:plain

【Unity】音をキャプチャーするAudio Recorderと、動画撮影するMovie Recorder

昨日の続きで、調べられなかったMovie RecorderとAudio Recorderについて

固定フレームも録画可能なRecorder

Recorderについてはコチラ

tsubakit1.hateblo.jp

昨日紹介したRecorderでは「音」は録画出来ないのです。が、オーディオやオーディオ付きムービーをキャプチャー・録画する方法も用意されていたので紹介します。

これはどちらかと言えば、Recorderが使用してるFrame Captureの機能かな

録音するAudio Recorder

「音」をキャプチャーする場合、Audio Recorderコンポーネントが使用できます。

使い方は単純で、

  • Audio Listenerが設定されているGameObjectにAudio Recorderを追加
  • ゲームを開始すると、録音が開始

という物です。

f:id:tsubaki_t1:20170925234452j:plain

昨日の内容と異なるのは、オーディオ撮影のタイミングが「VideoのStart Recording」ではなく独自であるという点です。

Capture ControlでManualを選べば手動で、Frame Rangeを選べば指定フレームから開始します。

f:id:tsubaki_t1:20170926000308j:plain

まだTimelineとの連携は完了していないみたいなので、Timelineと連携するような場合は、Audio RecorderをTimelineでenableするような手法が必要かもしれません。

 

出力に成功すると、初期設定ではCaptureフォルダ(Recorderフォルダではない)にオーディオファイルが出力されます。

対応フォーマットはWav、ogg、それとFlac

f:id:tsubaki_t1:20170926000603j:plain

f:id:tsubaki_t1:20170926000446j:plain

ムービーを録画するMovie Recorder

Audio Recorderはあくまでも録音ですので、オーディオファイルと動画が別々にキャプチャーされます。つまり動画編集ソフトで結合する必要がありそうです。

もし音付きムービーを撮影したいとったケースの場合、Movie Recorderが使えそうです。

  • Cameraが設定されているGameObjectにMovie Recorderを追加
  • ゲームを再生

概ねAudio Recorderと同様にムービーがキャプチャーされます。

f:id:tsubaki_t1:20170926001623j:plain

ただ、なんとなくキャプチャーされる音がズレてるのは気のせい…?

 

GBuffer Recorder

ついでにGBuffer Recorderを見てみました。

細かいことは置いといて、DepthとかVelocityとかノーマルとか、そういった項目がキャプチャー出来るみたいです。

f:id:tsubaki_t1:20170926001922j:plain

f:id:tsubaki_t1:20170926001848j:plain

多分こういうこと

f:id:tsubaki_t1:20170926002103j:plain

関連

github.com