🎬

Slayサンプルを眺めてシーケンサー使いこなしについて考える

2022/06/13に公開

これはなに

UEのシーケンサーのいい使い方を考えるためにSlayサンプルを眺めます。

https://www.unrealengine.com/marketplace/ja/product/slay-animation-sample

  • 書くこと:
    • Slayサンプルのシーケンサー周りのデータの様子
    • その解釈
  • 書かないこと:
    • シーケンサーの細かい操作

UnrealEngineにはタイムライン編集のためのエディタとして 「Sequencer」 というのが備わっています。

https://docs.unrealengine.com/latest/ja/cinematics-and-movie-making-in-unreal-engine/

UE4.10(2015/11/11)にて実験的リリース、4.12(2016/06/01)にて正式に新機能として紹介されましたので、6年少々の歴史があります。
その前身となる 「Matinee」2005年の記事のなかですでに言及があり、10年以上は現役だったと思われるので、シーケンサーもまだまだこれから活躍が見込まれることでしょう。
「マチネ」の後継なのにツール名が「ソワレ」ではないのは若干淋しいところです。

シーケンサーはマチネと比べて大幅に柔軟性が高まっており、UIはノンリニア編集(NLE)ソフトを意識したと思われる作りになっています。
比べてしまうと、単体のNLEとUE内の1機能であるシーケンサーとでは及ばない部分もさすがにありますが、Sequencer Scripting プラグインを有効にすることでPython拡張で幾分か下駄を履かせることはできるかもしません。

https://docs.unrealengine.com/5.0/ja/python-scripting-in-sequencer-in-unreal-engine/

マチネと比べて柔軟性が高まっているということは複雑化しているということでもあり、また扱うのも2D素材ではなく3Dシーンであることから、NLEの作法をそっくり持ち込んでも齟齬の元です。
大人数での制作では特に、どのような方針で作業を進めるべきか考えるのはなかなか難儀です。

EpicはUEのサンプルプロジェクトを不定期的に公開しており大変勉強になりますが、とりわけシーケンサーに関連したものは以下。

https://www.unrealengine.com/marketplace/ja/product/slay-animation-sample

https://www.unrealengine.com/marketplace/ja/product/meerkat-demo-02

https://www.unrealengine.com/marketplace/ja/product/sequencer-subway

https://www.unrealengine.com/marketplace/ja/product/your-first-hour-in-sequencer-completed-project-files

本稿時点では、このうちオンラインラーニングコンテンツである「初めてのシーケンサ」が一番新しく、次にSlayが新しいのですが、どちらもUE5対応は明記されていません。
この中では唯一MeerkatがUE5対応です。

‘The Matrix Awakens’のシーケンサーデータがあれば嬉しいのですが、City Sampleには残念ながら含まれていません。
https://youtu.be/K3A-KQSz6z8

ともあれ、シーケンサーのサンプルとして新しいSlayを眺めることで、
シーケンサー作業の方針を探ってみたいと思います。

参考動画

Youtubeに公開されている動画を確認しておきたいと思います。

Slay 本編

https://youtu.be/LfAV-OI4ygo

2021/09/07公開。1min13sec。

メイキング

1本のライブ配信と6本のワークフロー紹介動画が公開されています。

The Making of Slay

2021/12/10のライブ配信。1h45min。
https://youtu.be/kRpA-GDPXUY

Slay Workflow

YouTubeのvideoIDが不正ですhttps://www.youtube.com/playlist?list=PLZlv_N0_O1gbnqHnTF-1YSyh5sp_3IwHw

1: Visual Vocabulary Block Out
44min
2: Look Development
31min
3: VAD Production Workflows
65min
4: Real-Time Asset Creation
23min
5: Lighting
33min
6: Sequencer
55min

VAD は「Virtual Art Department」の略のようです。

6本目の「Sequencer」は、アニメーションを流し込んだりカメラを決めたりする話で、本稿で求めている内容とはちょっと違うみたいでした。

YouTubeのvideoIDが不正ですhttps://youtu.be/UWK2bjaiPN4?list=PLZlv_N0_O1gbnqHnTF-1YSyh5sp_3IwHw&t=2768

↑ここから「サブシーケンス」についての解説で、「トラックやシーケンスをモジュールに分割でき、複数人で作業するプロジェクトでは驚異的」とのことです。
サブシーケンス自体はいくらでも入れ子構造にできるので、入れ子にすればするほど驚異的に便利……かというとそんなはずもなく、複雑化して属人化したり開いたり閉じたり上がったり降りたり煩雑になります。このあたりは After Effects とかにも見られる永遠の課題です。
どんなサブシーン構成にするかがシーケンサー作業のキモになってきます。

全体像

最上流で「編集」を受け持っているシーケンス「TF_Edit」は、ショットトラックx2、ショット数32、フェードトラックx1、オーディオトラックx3という構成。
大きな流れとしては、ゆるめで開始して徐々にテンポを上げていくというアクション系PVとして常套なカッティングになっています。

クリップ(シーケンサー的には「セクション」)がトラック1、トラック2、トラック1、トラック2……と交互に配置されているのは、最初はカット同士を食い込ませるフェードのためとも思ったのですが、それなら傾向としては右上がりとか右下がりになるはずなので、おそらく単純に一本のトラックに並べてしまうと視認しづらいためかと推察します。

他のNLEを見てみると、クリップに色がついていてサムネイルと外枠の間に一定の縁があるためクリップ間の切れ目が判別しやすくなっており、

画像はDaVinci Resolveの編集ページですが、FinalCut、Premiere、EDIUSでも同様の傾向が見られます。
シーケンサーではカラースキームを調整できるようになったりするといいですね。

ショットはシーケンサー上で編集されていますが、オーディオはトラック1本に1ファイルの棒焼き状態になっています。
シーケンサーで最新の編集を頻繁に書き出しつつ、オーディオ編集は完全に別働で進行していたのかなと思います。
別の可能性として、プロジェクトが公開されるので公開用に整理した可能性もありますが、それだったら一本に焼いてしまうような気もします。DAWなどで音は音で進めて、絵はシーケンサーから連番出力、オンラインで納品データ作りといった順当な映像パッケージ制作の流れなのではと思います。

シーケンサーのフレームレートは24コマですが、どこかのアセットが30fpsらしくて警告されています。
原因となっているのはTechvisフォルダに置かれているカメラ手ブレ用のアセット。

二種類あり、無印は4ショット、NoRollは18ショットで使用されています。

全体のレンダリング時間は約20分。(マシンスペックは、Ryzen7 3800X 8Core / 64GB / RTX2070S)

TF_Editと同階層に、レンダリング設定ファイルが置かれています。

テンポラルサンプリングが上げてあって、コンソール変数もたくさん入ってます。
公式ドキュメントだと、テンポラル x スペーシャルが 8 を超える場合にはアンチエイリアスメソッドをNoneに、と書いてあるんですがそうなっていないので、コンソール変数側でそういう値を入れていそうです(よく確認していません)
jpg連番、png連番を出力する設定になってます。

プロジェクト構成

シーケンサーの話題から脱線しますが、プロジェクトの状態を確認しておきます。

「Assets」 以下は、「Chr」「FX」「HDR」などの大項目もありますが、「MasterMaterials」「MaterialFunctions」や「EchoSword」「GraniteClif」「SharpeClif」「TempleClif_A」「TempleClif_B」など割と具体的な項目も同じ並びにあり、突貫作業でもあったのかややフリーダムに見えます。

「Envs」 は環境アセット置き場ではなくマップ置き場。
「Sequences」 以下に各ショットシーケンスが置かれており、すでに触れたように「Techvis」にショットで跨いで使うカメラ手ブレが置かれています。

レベル構成

ルートレベルとなる「Temple_P」にキャラ・背景・ライティング・地形用のレベルがぶら下がっています。

Terrain_TF0010レベルのみ、1ショット目のみ登場なのでBPでストリーミングとなっています。

ルートレベルであるTemple_Pを見てみると、

編集用シーケンスである「TF_Edit」が存在しているのみです。
レベルBPもなしでした。

地形は超巨大メッシュがいくつかと、寺周辺のみランドスケープ。

↑この画像の真ん中に小さく写っている建物が、「Temple_Geo」レベルの内容です。

各ショットについて

32ショット分のサブシーケンスそれぞれを確認していきたいと思います。
基本的には大きく以下の構成になっています。

  • キャラ、カメラが置かれている
  • Lightingサブシーケンスが置かれている
  • FXサブシーケンスが置かれることもある

命名規則

「TF0010_02」に見られるように、ショット番号は四桁で、一桁目は枝番管理用に空けてあります。ショット番号を決めた後に番号を挿入する都合が生じた場合は、一桁目に「5」とか「3」「7」とかが入ります。

ショット14は途中で割られたことが窺われます。

こうした命名は、上記メイキング動画によると

狂気に対処するためにも大事とのことです。

最後の _02 はテイクですが、 _01 はサンプルに含まれていないことから採用されたテイク以外は削除されている模様。なので、テイク3, 4...とあったかもしれないけど不明です。

ショット14にはテイク1が残っています。

1

実際データを見ながらであれば簡単なことなのですが、それはダウンロードして手元で見ていただくとして、ここでは愚直にスクリーンショットを貼るなどします。

ショットは 998f〜1292fで、使用尺は1035f〜1178fあたりの約140f。半分くらいにトリムされてますね。

ライティング用のサブシーケンスがあります。

2

カメラブレが630fあたりから1360fあたりまで幅を取っていて、カメラトラックは1000fあたりから1296f。使用尺は1010fあたりから1150fあたりまで。
サブシーケンスはライティングとエフェクトがありますが、後者は0トラック。

ライティングではフォグをスポーンさせてたりします。

3

カメラカット 980f-1340f
使用尺 1032f-1177f
(両方ともおよそ)

エフェクトのサブシーケンスがあり、塵パーティクルが焚かれています。
Slayでは、多くのショットではナイアガラアセットをシーケンサー上では位置・タイミング指定のみとなっています(ナイアガラアセット内で済む作り込みは極力完結させている。シーケンサーでキー打つ時はガンガン打ってるけど)

4

カメラカット 980f-1170f
使用尺 1057f-1127f
(両方ともおよそ)



ライティングではカラコレしてますね。
エフェクトは、葉っぱとフレア。

5...

カメラカット 980f-1370f
使用尺 1040f-1175f
(両方ともおよそ)

200fほどもトリムされていて、一旦適当に伸ばしたのかなとも思ったのですが、ライティング/エフェクトサブシーケンスも似たような長さなので、編集しながらいろいろ揉んだのかなという感じです。


エフェクトは、塵・葉っぱ・Moteが三種類。
MoteはDeepl訳だと「原石」と出てきたので、なにかそういう神秘的なアイテムということでしょう。


1秒足らずのカットですがエフェクトにもキーが打たれるなどシゴトされています。
こうした細かい細工は(仮に)上の階層でやっていると編集でタイミングが変わると影響をモロに受けてしまうため、ショット以下にモジュール化されている恩恵は大きいと思いますが、逆に言えばそういった点での安定性が確保されているから、先ほど触れたトリムのような大胆な編集が加わったのかもしれません。(加わるならプリビズとプロダクションの間だと思いますが、プリビズ時点でのサンプルは提供されていないので実際のところは分かりません。思い過ごしかもしれません)


以下、32ショット分やるつもりでしたが途方もない感じがしてきましたので切り上げます。

もっと細かくエフェクトにキーを打っているショットもあれば、

アニメーションやサブシーケンスをプリロールさせているショットもありました。


ポストロールさせているショットもあり、それは次のショットのプリロールとは違うのかとか気になりました。

ライティング作業の例

ライティングのサブシーケンスで立方体などがスポーンしてある場合、どかしてみるとこのように、

不要な日照を遮って、陰影を整理していたりします。

所感

  • カメラカットの尺と使用尺が多くのショットで大きく違っていることから
    • 積極的にトリム編集が行われたことが窺われる
  • 10f以下の細かいトリムもある
    • キャプチャされたデータから不使用部分をざっくり切っただけでなく、絵が詰まってきてからも細かくタイミングを編集した気配を感じる
    • サンプルより前のリビジョンを見てみたい笑
  • ライティング、エフェクトはサブシーケンス化
    • キャラ・背景・モーションとは違う作業単位でモジュール化
  • 入れ子構造は3階層
    • 編集用シーケンス > ショットシーケンス > 部門作業シーケンス

3階層は順当な深さかと思います。下の階層で絵が見れないと困るので、「サブシーケンスを独立して評価」は OFF が前提になると思います。

これがONになっていると、今シーケンサーで開かれているタイムライン のみ 評価される=表示されるので、
たとえばライティングシーケンスまで降りるとキャラが見えない状態になります。
「いま編集してるアクターに集中したい」「ほかの要素は排除したい」場合にはONにして、平時はOFF、という運用になるかと思います。

あわせて、

「スクラブ中に再生範囲にカーソルを維持する」もOFF推奨です。
OFFにしておくと、開いているショットシーケンスの前後もスクラブできるので、つながりを意識しながら絵作りできます。
逆にONだと範囲外は触れなくなるので、……これはいつ嬉しいのかちょっと想像つかないですね。
編集するつもりがない時に、いらんところを触らないように、という時には嬉しいかもしれません?

あと作業便利系では

「マークされたフレームをグローバルに表示」は、基本ON(ときどきOFF)推奨です。
NLEでいうところの マーカー をシーケンサーでは「マークされたフレーム(Marked Frame)」と呼ぶようです。
マーカーはショット内のプランが多い場合には別の分担作業者と意思疎通する際に便利です。
ただし、ポップアップされているように「親シーケンス」「兄弟シーケンス」から見えるようになるという設定なので、入れ子の 子階層側 からは見えません。編集シーケンスからショットシーケンス(子階層)への連絡には使えません。ざんねん。

値を編集した際に打たれるキーは、ゲーム実装であれば無駄キーも容量を食ってしまうので節約する必要がありますが、連番・ムービー出力が前提であればその問題はなく、コマ単位で絵を確実に固めるために 「すべてキー入力」 が良いかと思います。

結び

編集作業とショット単位の作業が並走できるのは良し悪しな面があり、
ショット担当者が作っていた箇所が今まさに不要になるところを目にすることもあるかと思います。
そういうのはどこか知らないところで起きてくれた方が/ショット作業を捌いている途中では知らない方がマシだったりします。尺ロックやサブミットのポリシーで対策。

一方で、カットされるフレームを作り込むケースは確実に減らせるので、使われないフレームが都度わかるのはメリットです。「作り込んだフレームが使われない」悲劇を完全にゼロにできるわけではありません(これはシーケンサーとかツールの設計でどうこうではありませんが)。

いずれにしても、シーケンスの入れ子構造により「尺を編集」「絵を編集」を切り離して扱えるのはMatineeには無い特性で、順応してしまえば利点を享受できると思います。
階層を上がったり下がったりがやや不便(タイムライン右上にそれ用のプルダウンとブレッドクラムがありますが、ショット数が多いと特に下りが不便)なのでSlayの構成と同じ3階層が現実的だと思います。Pythonとかで効率化できると良さそうです。

Python APIのサンプルがプラグイン以下のこちらにあります。

Engine\Plugins\MovieScene\SequencerScripting\Content\Python

Slayより古いMeerkatはUE5版が配布されているのに、Slayはそうじゃないので、なにか複雑な仕込みとか一筋縄ではいかない要因があるんじゃ無いかと思います。Meerkatは「機能サンプル」にカテゴライズされているのにSlayは早くも「レガシーサンプル」に入れられているので(!!)、 アップデートされるわけでも無さそうです。 前半の方でも触れましたが、アップデートされました。
Echoキャラクターや「古代の谷」はUE5対応なので、その並びでSlayの後継となるようなUE5対応のシーケンシャルなサンプルプロジェクトを期待したいところですね。

https://www.unrealengine.com/marketplace/ja/product/windwalker-echo-01

https://www.unrealengine.com/marketplace/ja/product/ancient-game-01

Discussion