[Unite2018] スクリプトによるTimelineがっつり拡張入門
公式サイト
http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session56
講演者
SlideShare
※本公演は多数のアニメーションGIF, ムービーを含んでいるため Slide Share での再現はできませんでした
下記URLより講演スライド(Power Point)とサンプルプロジェク トをダウンロードしご確認ください
http://prt.nu/0/timeline
概要
内容
- Timelineのおさらい
- スクリプト拡張が必要になるとき
- どんなとき?
- インタラクティブなものを加えたいとき
- ex) THE PHANTOM KNOWLEDGE
- シーン遷移など
- ex) THE PHANTOM KNOWLEDGE
- Gameobjectにないパラメータをコントロールするとき
- ex) Post Effect
- aperture, force distanceなどのパラメータを調整
- https://github.com/keijiro/PostProcessingUtilities
- ex)
Quality Settings
とProcedural Skybox
Quality Settings
影のぼけ具合Procedural Skybox
空の色
- ex) Post Effect
- Animation Trackでは操作が複雑になってしまうとき
- ex) Fader
- Animation Trackを使う場合
- 5ステップくらい
- 時間を変えたい場合作り直しが必要
- カスタムトラックで作る
- 3ステップ
- 作り直しの必要がない
- Animation Trackを使う場合
- ex) Fader
- そもそもUnityに機能がないとき
- ex) 連番画像はストリーミング処理したい
- 画像を2Dスプライトに変換しない
- スプライト画像は実行ファイルの起動時に読み込まれるため、起動時間が馬鹿にならないことがある
- 画像を2Dスプライトに変換しない
- ex) 連番画像はストリーミング処理したい
- インタラクティブなものを加えたいとき
- どんなとき?
- Timelineの拡張方法
- Animation TrackとMonobehaviorをかませて管理
- Monobehaviorに擬似的なフィールドを作って適用
- Post Effectやプロジェクト全体設定を変えたいときに有効
- 典型的な例
- Control Track
ITimeControl
インターフェースをMonobehaviorに実装- 複雑なパラメータが必要ないときにおすすめ
- ex) スタートやエンドでとにかくコールバックがあればいいとき
- デモ中の制御が必要ない
- イベント再開までTimelineの更新停止も可能
- ex) 時間が決まれば
setTime()
内に関数的にかける処理- カメラの軌道をプログラムで書く
- UVスクロールやフェードアニメーション
- Clipの長さが取れないとき
- カスタムPlayable Track
- 専用のトラックを構築
- トラック全域に渡って対応可能な
Mixer.ProcessFrame()
- 5つのクラスで構成
- Track どんなオブジェクトがバインドできるか
- Clip どんなパラメータを扱うか
- Behavior クリップ単位の補間
- Mixer トラック単位の補間
- Drawer グラフィックを美しく
- Asset Storeで
”Default Payables”
で検索- 最初は自力で書いたほうがいい
- Asset Storeで
- 先にBehaviorとMixerについて
- Behavior クリップごとに作成されてフレームごとの処理
- Mixer トラックごとに作成されてフレームごとの処理
- 両方とも
ProcessFrame()
で処理 - Behaviorの
ProcessFrame()
を利用することはほぼない!- ex) 処理落ちした場合
- 回復したフレームが処理終了後の場合コールされない
Mixer.ProcessFrame()
のみ使う!
- 回復したフレームが処理終了後の場合コールされない
- ex) 処理落ちした場合
- カスタムトラック
- Track
- 何がバインドできるのか定義
- どんなクリップが貼れるのか定義
- トラックの色
- Mixerを管理
- タイムラインで変更されるパラメータ定義
- Clip
- キーフレームに入れたいデータを定義
- ClipCapsを定義
- ClipのBehavior生成
- Behavior
- Clipの情報を解釈して処理
ProcessFrame()
はあまり使わないほうが良い
- Clipの情報を解釈して処理
- Mixer
- トラック全体に渡って
ProcessFrame()
が呼ばれる - Clipのミキシングが可能
- トラック全体に渡って
- Track
- Recordボタンやカーブ編集は?
- いくつかのルール
- 補間処理はUnityに任せる
playable.GetInputWeight(int)
- durationを縮めた場合は最後まで再生されない
- DefaultPlayableで作ったものはこのタイプ
- ルール1. Clip内のパラメータ
- Clip内にBehaviorを持つ
- クリップ内のBehaviorは必ずpublic!
- ルール2. カスタムDrawer推奨
- Inspectorをすっきりさせる
- ルール1. Clip内のパラメータ
- Animation TrackとMonobehaviorをかませて管理
- Playable Track
- これの
ProcessFrame()
はBehaviorのもの - 要注意
- これの