>  > 18インチストリームRN6~9WORK エモーション T7R ホワイト 7.5Jx18NANOエナジー 3プラス 215/45R18
DIXCEL/ディクセル ブレーキディスクローター PD フロント左右セット MERCEDES BENZ W219 CLS350 年式:05/02~11/06 型式:219356C 品番:PD111 4917S
« 古い記事へ
新しい記事へ »

18インチストリームRN6~9WORK エモーション T7R ホワイト 7.5Jx18NANOエナジー 3プラス 215/45R18

2018年06月18日

Timelineは、マルチトラックでアニメーションクリップや音声などを再生できるUnityの新機能です。ゲームのカットシーンや、映像シーケンスを作るのに用いるのですが、謎めいたところが多いです。しばらく雰囲気で使っていたのですが、気持ち悪い感じが抜けなかったので、もう少し全体像を把握できないものかと思って調べてみました。

このエントリを読んだ人は以下のようになります。

うそです完全に理解するのは無理ですごめんなさい

普通にTimelineを使うサンプル

まず、Timelineの標準的なサンプルとしては以下の2つがあります。アセットが多く凝っているのですが、Timeline1本に、ほとんどがActivation Track(ゲームオブジェクトの有効・無効を切り替えるトラック)と、Animation Track(ゲームオブジェクトをアニメーションさせるトラック)で動いています。とりあえずTimelineで映像を作る方法を知りたい、標準的な作法を知りたいということでしたら、この2つのプロジェクトファイルを開いてみるのが最速でしょう。

ただもっとプログラム的なあれこれ、たとえばTimelineからスクリプトを呼び出したりしようとすると、これどうすればいいの? そもそもTimelineの内部構造どうなってるの? とわけわからん状態になりがちです(というかなりました)。そのあたりを探ってみることにしましょう。

とりあえずTimelineを使う

このエントリではTimelineの使い方の詳細には触れないのですが、説明のために簡単にTimelineを使う方法を書いておきます(もう使い方を知っている場合は飛ばして構いません)。

Unityの新規プロジェクトを作成して、Projectウィンドウで Create > Timeline でTimelineアセットが作成されます。TimelineアセットをHierarchyウィンドウにドロップすると、Playable Directorコンポーネントがアタッチされたゲームオブジェクトが作成されます。

Playable DirectorコンポーネントのTimelineAssetのダブルクリックするとTimelineエディターウィンドウが開きます 【アクレ/acre】 MERCEDES BENZ C CLASS W203(セダン) 等にお勧め ユーロストリート [フロント用] 左右セット ブレーキパッド EUROSTREET 型式等:C32 AMG 品番:β610*1。Timelineエディターウィンドウの左上にある Add ボタンでトラックを作成できますので、たとえばAnimation Trackを作成します。シーン上に何か適当なオブジェクトを作成してAnimation Trackにドロップすると、Timeline用のAnimatorコンポーネントがアタッチされます。トラックの赤丸をクリックすると「Recording…」表示になりますので、白い再生ヘッドとオブジェクトを動かすとキーフレームが記録されます。

エディターを再生すると、Playable Directorコンポーネントの「Play On Awake」によりタイムラインが再生されます。

Timelineエディターウィンドウの詳細についてはマニュアルを参照してください。

Playable Directorという謎コンポーネント

さて、この時点で謎めいたところが出てきます。Playable Directorって何?

Playable DirectorコンポーネントのPlayableプロパティにTimelineアセットを割り当てて、Bindingsでシーン上のオブジェクトとバインドされタイムラインが再生されるのですが、Playableプロパティの型はPlayableAssetになっています。TimelineAssetはPlayableAssetの継承クラスですので、Timeline以外も扱えそうな雰囲気です。が、ドキュメントを見てもTimelineのことしか書いていません。

Playable Director コンポーネントは、タイムラインインスタンスとタイムラインアセットの間のリンクを格納します。Playable Director コンポーネントは、いつタイムラインインスタンスを再生するか、どのようにタイムラインインスタンスがその時計を更新するか、および、タイムラインインスタンスが再生を終了したとき何を発生させるかを制御します。

現状はTimeline専用のコンポーネントであり、実質「Timeline Player」のようなものだと理解してしまって差し支えなさそうです。

が、どうやらTimelineはPlayableというものを基礎にしているようです。ちょっとPlayableのほうを把握したほうがよさそうです。

Playable APIについて

Playableについてはドキュメントのここから下を見るのがいいでしょう。

Playable APIは、アニメーションクリップ等の「再生できるもの(Playable)」をノードとして繋げて出力する汎用的な仕組みです。Playableという名前が抽象的な上に、以下のようにPlayableなんとかというクラスがぞろぞろ登場してこれまた分かりにくいです。

  • Playable
  • PlayableBehaviour
  • PlayableDirector
  • PlayableGraph
  • PlayableOutput

ざっくりと説明すると、Playable(というノード)を連結してPlayableGraphが構築されます。ノードは最終的にPlayableOutputに接続され出力されます。Playableを継承するAnimationClipPlayableや、PlayableOutputを継承するAnimationPlayableOutput等のクラスがあり、これらを使ってアニメーションクリップを再生したりできます。テラシュールブログさんが参考になります DUNLOP ダンロップ エナセーブ RV504 ENASAVE ミニバン サマータイヤ 225/55R17 HotStuff 軽量設計! G-SPEED G-04 ブラック ホイールセット 4本 17インチ 17 X 7 +48 5穴 100。

また、スクリプトで動作を記述できるカスタムPlayableというものがあり、PlayableBehaviourの継承クラスで振る舞いを記述してScriptPlayableでカプセル化することで作成できます。

PlayableDirectorは先の通りTimelineを再生するためのコンポーネントです。

TimelineのPlayable Graphを見てみる

Playableのノードの繋がりを可視化してくれるPlayableGraph VisualizerというツールがUnity公式から提供されています。こちらでTimelineを見てみましょう。

上記リポジトリからgraph-visualizer-master.zipをダウンロードしてプロジェクトファイルの中に展開します。HierarchyのPlayable Directorコンポーネントがアタッチされているオブジェクトを選択して、Window > PlayableGraph Visualizer を開くと、Timelineが再生するPlayable Graphが構築された状態が表示されます。下記は一例で、Timelineを操作・再生するとリアルタイムでノードの表示も変化します。

PlayableGraph Visualizerでは、各ノードの「Playable」という文字列は(長いので)省略されて表示される仕様になっています。たとえば上のグラフなら、右端のAnimationClipPlayableから、左のTimelinePlayable、AnimationPlayableOutputまで繋がって出力されています(省略される「Playable」文字列の位置が違うのでややこしい)。

上のグラフでは(画像が小さくて見えませんが)「Animation Motion X To Delta」という得体の知れないノードも表示されています。これはAPIリファレンスに載っていないAnimationMotionXToDeltaPlayableで、UnityCsReferenceで見れたりします。

さて、何のためにこうしたPlayableのグラフが構築されるのかといいますと、たとえばクリップのミックスです。

Animation Trackを作って3つのアニメーションクリップを置いたとします。Timeline上のアニメーションクリップは範囲を重ねてブレンドすることができます。このときPlayable Graphは下のようになります。

トラック上に置かれた3つのクリップが右端にあるAnimationClip(Playable)に対応します。これが水色のAnimationMixer(Playable)でミックスされます。再生マーカーが1つ目と2つ目のアニメーションクリップの中間にあるので、この2つのウェイトが上がり、AnimationClipPlayableからより白い線が出ています。

アニメーションに限りません。TimelineのクリップはすべてPlayableであり、それをトラック上でブレンドして出力するのにPlayable APIという汎用的な再生の仕組みを用いているわけです。これがTimelineとはある種独立した仕組みを用いているので分かりにくかったのですね。

ところで、PlayableGraph Visualizerですが、Timelineのトラックを増やしていくと下のようななかなかアグレッシブな表示になります。TimelinePlayableから複数のPlayableOutputに出力されるのに対応してないため、何重にも並んで表示されてしまうとのことです DUNLOP ダンロップ GRANDTREK AT3 グラントレック サマータイヤ 215/65R16 MONZA JP STYLE ウォルクス WOLX ホイールセット 4本 16インチ 16 X 6.5 +38 5穴 114.3。対応予定だそうですが、今のところは、実際のプロジェクトというよりも、シンプルなTimelineでどんなPlayable Graphが構築されるか確認・理解するのに使うのがいいでしょう。

というところまで踏まえた上で、Timelineでスクリプト拡張する方法を見てみましょう。まずPlayableを触らない方法から。

スクリプト拡張:Playable触りたくないコース

18インチストリームRN6~9WORK スタッドレスタイヤ エモーション T7R ホワイト 7.5Jx18NANOエナジー 3プラス 215/45R18 X

Activation Trackに適当なオブジェクトを割り当てて、そのオブジェクトのOnEnable、OnDisableでスクリプトを実行するというテクニックがあります。UnityのTimelineの中の人も使っている由緒正しい方法です。

Control TrackでITimeControlを使う

MonoBehaviourとITimeControlを継承したクラスを作ると、スクリプトでクリップ内の時刻を取得できます。クリップの時刻のみをベースに何かを動かすときはこの方法が簡単です。

Control Trackを作成してAdd Control Playable Asset Clipでクリップを追加、Source Objectにゲームオブジェクトを登録します。

Animation Trackでプロパティを書き換える

Animation Trackでオブジェクトのプロパティを書き換え、それをもとにスクリプト制御したりできます。たとえば直接アニメーションできないQualitySettings等を操作するのに有用です。

スクリプト拡張:Playable触ってもいいよコース

Playable Trackを使う

TimleineのPlayable TrackでカスタムPlayable(PlayableBehaviourで振る舞いを記述したScriptPlayable)を再生できます。

Projectウィンドウで Create > Playables > Playable Behaviour C# Script / Playable Asset C# Script を実行するとPlayable Trackで使用する2つのスクリプトの雛形ができます。PlayableBehaviourの雛形クラスで動作を定義して、PlayableAssetの雛形クラスのCreatePlayableでPlayableBehaviourを使用したScriptPlayableを生成するように書き換えます。例を2つ示します。

18インチストリームRN6~9WORK エモーション 215/45R18 3プラス ホワイト 7.5Jx18NANOエナジー 18インチストリームRN6~9WORK 215/45R18 T7R

PlayableAssetのテンプレートを生成したばかりの状態ではPlayable.Createしているのを、PlayableBehaviourからScriptPlayableを生成するように変更します。

 public string message
 ...
 var behaviour = new CharacterVoiceBehaviour();
 behaviour.message = message;
 return ScriptPlayable<CharacterVoiceBehaviour>.Create(graph, behaviour);

PlayableBehaviorのテンプレートには

 public string message

を追加すると、OnBehaviourPlay等でクリップのmessageが代入されています。

クリップに参照プロパティを追加するには

PlayableAssetのテンプレートに

 public ExposedReference<GameObject> testObject;
 ...
 var behaviour = new CharacterVoiceBehaviour();
 behaviour.testObject = testObject.Resolve(graph.GetResolver());
 return ScriptPlayable<CharacterVoiceBehaviour>.Create(graph, behaviour);

PlayableBehaviourのテンプレートに

 public GameObject testObject

を追加すると、OnBehaviourPlayでtestObjectが代入されています。

ちょっと説明手抜きです K&H ケイアンドエイチ シート本体 ダブルシート タック <セミオーダー> カラー:バーガンディー カラー:レーシングオレンジ FLHR ツアラー系 08-。こちらのページが参考になります。

Default Playablesでカスタムトラックを作る

最後に紹介するこれはある意味フルスペックな方法です。

Unity公式からDefault Playablesというアセットが提供されています。これをインポートすると、ウィザードでTimelineのカスタムトラックのテンプレートスクリプトを作成できます。また、いくつかのカスタムトラックのサンプルが入っています CRIMSON(クリムソン) CLUB LINEA L747 KING LABEL (クラブリネア L747 キングレーベル) 22インチ 8.5J PCD:115 穴数:5 inset:50 DISK TYPE:LOW カラー:ブロンズクリア [ホイール1本単位]/H。個人的にはこのアセット名前が悪すぎると思っていて、Timeline Custom Track Generator & Examplesのようなものと考えたほうがすんなり使えると思います。

インポートして、Windows > Timeline Playable Wizard… でテンプレートスクリプト一式を生成するウィザードが開きます。ウィザードは大まかにStandard Blend Playableがオンとオフのモードがあります。

Standard Blend Playableをオンにする場合の例としては、以下のようにして「Create」ボタンを押すと、TimelineエディターウィンドウのAddメニューからTransformをバインドできるトラックが作れるようになり、クリップにTransformのpositionを設定してブレンドできるようになります。

一方、Standard Blend Playableをオフにして以下のようにすると、バインドオブジェクトなしで、各クリップに文字列を格納するトラックが作れるようになります。

Standard Blend Playableオフで生成したカスタムトラックはそのままでは何もしませんので、動作を記述する必要があります。カスタムトラックの動作の書き換えは主にMixerBehaviourで行います。MixerBehaviourでトラックのすべてのクリップのPlayableBehaviourとウェイトが取得できますので、それをもとに処理を行います。たとえばこの場合、生成されたDialogueMixerBehaviour.csで

// Use the above variables to process each frame of this playable.
if (inputWeight == 1f)
{
 Debug.Log(input.message);
}

とすると、再生マーカーがクリップの範囲に入ったときにクリップのmessageの内容がコンソールに出力されます。

ウィザードでは以下のような5つ(4+1つ)のスクリプトが生成されます。なんで5つもあるんだと思うかもしれませんが、TimelineがPlayableをベースにしていることや、個々のスクリプトの役割を把握したあとだと妥当だと感じるのではないでしょうか(……え、そうでもない?)。

*Track.cs

トラックにバインドされるオブジェクトやクリップの型、トラックの色等が定義できます。

*MixerBehaviour.cs

トラック上のすべてのクリップをミックスするPlayableです。トラックの振る舞いを定義するには、基本的にはこのスクリプトを書き換えます。

*Clip.cs

PlayableAsset、ITimelineClipAssetを継承します。ITimeilneClipAssetはClipCapsを定義します。

*Behaviour.cs

PlayableBehaviourを継承します。クリップのパラメータを保持するだけで基本的にはほぼ何もしません。

Editor/*Drawer.cs

Standard Blend Playableがオフのときに「Create Drawer?」をチェックすると生成されるエディタ拡張スクリプトです(基本的にはオンにします)。クリップのインスペクタの表示を簡潔にします。

Default Playablesアセットに同梱されているサンプルを参照すると、カスタムトラックの動作をどう記述すればいいかのヒントになるかもしれません。また、Unite 2018 Tokyoの下記講演・スライドも参考になります。

最後にTimelineのTipsあれこれです。

Tips

Cinemachineのカメラを制御したい

CinemachineをインポートするとCinemachine Trackが作れるようになります。Cinemachine TrackにCinemachine Brainのアタッチされたカメラを設定、トラックで右クリックしてAdd Cinemachine Shot Clipでバーチャルカメラを割り当てます。クリップをブレンドするとカメラの位置がブレンドされたりします。

Timelineの再生終了を検知するには

Unity 2018.1以降ならPlayableDirector.stoppedイベントが使えます。Unity 2017以前ではPlayableDirector.stateの変化を監視とかでしょうか。

Timelineをマニュアル再生するには

PlayableDirector.timeUpdateModeをManualにします。PlayableDirectorのtimeで再生位置を更新してEvaluateしてください。Playする必要はありません(ドキュメントでは”You need to manually call PlayerController.Tick with your own deltaTime.“とか書いてあるけどTickとかないよね……?)。

なお、Evaluateで位置更新するとAudio Trackの音が鳴りません。カスタムTrackを作るなどして自分で鳴らす必要があります。

プレビューでAudio Trackの音が鳴らない

Unity 2018.2から鳴ります。Timelineエディターウィンドウの右上メニューにEnable Audio Scrubbingというのが追加されていて、有効にするとスクラブ再生もできますが、みんなが想像する鳴り方と違うような……。

Timelineの中で他のTimelineを再生するには

Control Trackを作成して、他のPlayable Directorを持つゲームオブジェクトをドロップしてください。Unity 2018.2では、クリップをダブルクリックするとサブTimelineを開くことができます。

なお、メインのTimelineのUpdate MethodをManualにする場合は、呼び出されるTimelineのUpdate MethodもManualにする必要があります 。

Timelineからイベントをシンプルに呼び出したりできないの?

Timelineイベントというのがあったそうですが、リリースされる直前に問題があってなくなったそうです。Unity 2018.2か2018.3で復活見込みとのことです。

18インチストリームRN6~9WORK エモーション T7R ホワイト 7.5Jx18NANOエナジー 3プラス 215/45R18


c303t12184-t12184w53081-w53081d1543

WORK エモーション T7R ホワイト
18インチ タイヤ&ホイールセット  適応車種: ストリームRN6~9 他
ご注文前に車両への適応確認をお願いいたします

商品によっては、お取り寄せに時間をいただく場合がございます
また、欠品や完売の場合もございますので、ご注文前に納期の確認をお願いいたします
取付ナットは付属しません
サイズ等がわからない・・・そんな時はお気軽にお問い合わせください
アルミホイール
メーカー名WORK
ホイール名エモーション T7R
サイズ(F)7.5Jx18 PCD114 5穴
(R)7.5Jx18 PCD114 5穴
カラー ホワイト
備考引き締められた7スポークはリムエンドに達し伸びやかさを強調 深化する7スポークシルエットスポーツ性と秀麗さを融合するホイールです。
タイヤ
タイヤ名TOYO NANOエナジー 3プラス
サイズ(F)215/45R18
(R)215/45R18
適応車種ホンダ ストリーム(RN6~9)2006~
◆タイヤホイールは、取付車両の 車種・型式・年式・駆動方式・グレード等により適合する商品を選択する必要があります。 適応車種に該当する場合でも車両のグレード等により、一部装着出来ない場合もございます。ご不明な場合は必ずお問い合わせの上、ご注文ください。◆掲載画像は代表サイズのイメージです。サイズ・穴数により実際の商品とは異なる場合がございます。◆タイヤの製造年月日は、ご指定が出来ません。あらかじめご了承ください。◆取付車種によっては、純正のナットを使用しての取付ができない場合がございます。

Before Timeline released, we had an internal version with Timeline Events. It was mostly working, but we had problems with UI and timing (in some cases events were triggered when they should not have been). We cut that feature right before release because it wasn’t at a quality level we judged appropriate. We really wanted that feature though, so expect to see it return in the future (although I can’t provide a time frame).

we are targeting early-mid 2018 for a timeline event system. they will land in 2018.2 or 2018.3.

Timelineの再生速度を変更するには

Timeline再生時にPlayable Graphが構築されているのでそこからいろいろ制御できます。例えば以下のようにします。

playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(speed)

Audio Trackで音を鳴らすとクラッシュ

Unity 2017.4.4f1でAudio Trackでサウンドを鳴らすとアプリケーション終了時にクラッシュするのをいくつかのプロジェクトファイルで経験しています。OnApplicationQuitでPlayable Directorを停止して回避しました。Unity 2018で直っていそうな気もしますが未確認です。

Timelineのベストプラクティス

可能な限り、ビルドしたりエディタを再生したりせず、Timelineエディターウィンドウを開いてスクラブするだけで動作をある程度確認できるようにしておくとイテレーションが速くなるのでおすすめです。あとよく忘れるのですが、Timelineウィンドウの右上のボタンでウィンドウの表示をロックできます。

Timeline総評

Playable APIを基盤にしていたり、全体的に名前が良くなかったりで分かりにくいところはありますが、ざっくりやりたいことは分かるし素直に使っていきたいなという感じです。個人的には標準機能大好きですしね(UNetとか(略))。お仕事(ハシラス)のVRコンテンツでは、Timelineで素直にアニメーションを再生しつつ、インタラクティブなオブジェクトのみを別制御したり、ネットワーク同期したりということをやっています。

18インチストリームRN6~9WORK エモーション T7R ホワイト 7.5Jx18NANOエナジー 3プラス 215/45R18

(書いた人: こりん

« 古い記事へ
新しい記事へ »
技術ブログトップへ
{yahoojp}jpprem01-zenjp40-wl-zd-24468