187.6K Views
April 03, 19
スライド概要
※ 補足
p138:UE4.27以降からは実行・Previewしなくても反映されるようになりました
説明記事:https://pafuhana1213.hatenablog.com/entry/2022/06/21/212259
※補足
p146:Shot TrackのPre Roll Framesも設定する必要があります。
2019年3月30日に行われた「GAME CREATORS CONFERENCE '19」で登壇した際に使用した資料です。
●公式サイト
http://www.gc-conf.com/
===
UE4のシネマティック編集ツールである「シーケンサー」は2016年6月に正式リリースされました。そして、今日に至るまで皆様からの多数のフィードバックを受け、非常に多機能かつ高性能なツールになりました!ただその一方、アップデートの頻度が高い故に便利機能などの情報が知られずに埋もれてしまっているように感じます。そこで、シーケンサーの最新機能、Tipsなどについてご紹介します。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
UE4のシーケンサーをもっともっと使いこなそう! 最新情報・Tipsをご紹介! Epic Games Japan Support Engineer 岡田 和也
目次 1. シーケンサーとは? 2. シーケンサーの基本機能・便利機能について 3. シーケンサーの最新機能について 4. よくある問題とその対策について 初心者向け 中級者向け
本題に入る前に 前半部分の8割は 公式ドキュメント・リリースノートで 説明しています! 読んでない人は早く読んで!!!!! 読んで頂き、今後の参考になれば幸いです候
目次 1. シーケンサーとは? 2. シーケンサーの基本機能・便利機能について 3. シーケンサーの最新機能について 4. よくある問題とその対策について
シーケンサーとは? ● リアルタイムの シネマティックアニメーションツール ● UE4.12 (2016年6月)に正式リリース
基本的な用途・メリット ● カットシーン・映像作品制作 ● ゲーム中のギミック制御 ● 必殺技演出の制御 ● などなど
基本的な用途・メリット ● カットシーン・映像作品制作 ● ゲーム中のギミック制御 ● 必殺技演出の制御 ● などなど 基本機能とBlueprint(BP)を 組み合わせることで 様々な表現・挙動を実現可能! (非エンジニアにも優しい設計)
何故このお題にしたのか?(その1) UE4.12 ~ 4.22 の間に数多くの機能追加・改善があったため ● 自社・他社プロジェクトからの様々なフィードバック https://www.unrealengine.com/ja/tech-blog/ue4--sequencer-2
何故このお題にしたのか?(その2) UE4.24 で旧バージョンである「Matinee」が 卒業 するため ● Sequencerの機能・安定性が十分に担保できたので ● もし現在使ってる場合、Sequencerへの変換ツールをご利用ください ● ● ●
目次 1. GDC 2019情報 2. シーケンサーとは? 3. シーケンサーの基本機能・便利機能について 4. シーケンサーの最新機能について 5. よくある問題とその対策について
基本的な流れ
Level Sequence アセットを作成
Level Sequenceに登録したオブジェクト( Actor )を制御
Level Sequenceを再生 ● ● ●
オブジェクト( Actor )の制御部分の UI・用語について
SequencerのActor制御部分のUIについて 制御対象のActor
SequencerのActor制御部分のUIについて Track : 制御対象のActorに対してどのような制御を行うのか ● Transform Track : Actor の 位置・向き・スケールを制御
SequencerのActor制御部分のUIについて Section:どの区間・フレームにおける制御内容を設定 ● Section自体で制御するパターンと、Section内にKeyを打って制御するパターン
Sequencerを使ったActor制御の基本 1. 制御したいActorをLevel Sequenceに登録 2. 制御したい プロパティ に対応したTrackを追加 3. Track毎にSection・Keyを配置し いつ・どのように制御するかを設定
どんなプロパティを 制御できるのか?
基本的なプロパティは ほぼ全て制御可能!
ポイントライトの明るさ・色を変更したり…
ポストプロセスのパラメータを制御したり…
マテリアル・メッシュのパラメータ・アセット変更
Material Parameters: マテリアルが持つパラメータを制御 Material Switchers (UE4.22): メッシュが使う ● ● ● マテリアルアセットを変更 Skeletal (Static) Mesh(UE4.22): コンポーネントが使う メッシュアセットを変更
BP, C++クラスが持つプロパティも制御可能 UPROPERTY( interp ) float Speed;
株式会社ヒストリア 様のBlog記事 [UE4][C++]シーケンサーで非対応のパラメータを制御可能にする方法
Sequencerから各Actor・Componentが持つ プロパティを制御することが可能 コードを書かなくても、 様々な挙動、表現などを実現可能! 非エンジニアにも優しい作り!
プロパティを制御するための Trackだけではありません! 特定の演出や作業効率の向上のための 専用Trackが用意されています!
便利な 専用Trackについて
Fade Track 画面のフェードイン / アウト 処理を実現 ● 色を変えられるので カットシーン中のダメージ表現などにも ● 右クリックメニューにある Fade Audio を 有効にすると、音のフェード処理も実行 http://api.unrealengine.com/JPN/Engine/Sequencer/HowTo/TracksFade/
PlayRate Track シーン全体の再生速度を調整 ● スローモーションや早送り的な表現に ● 内部的には、ゲームの実行速度を変更する slomo コマンドを実行 ● Delta Seconds, Delay, Set Timerなどの 時間関連の処理が影響を受けるので注意 ● サウンドの再生速度は変化しないので Audio TrackのPitchを変えるなどで対応 http://api.unrealengine.com/JPN/Engine/Sequencer/ HowTo/TracksPlayRate/ https://www.unrealengine.com/ja/tech-blog/ue4--sequencer-2
Media Track 動画、または連番画像を再生 ● 再生結果を 指定したMedia Textureに出力 ● Media Textureをマテリアルや ポストプロセスに使うことで、 カットイン演出などを実現可能 http://api.unrealengine.com/JPN/Engine/Sequencer/ HowTo/UsingMediaTracks/ https://www.unrealengine.com/ja/tech-blog/ue4--sequencer-2
Camera Cut Track カメラカット(カット割り)用の機能 ● レベル上に存在するカメラの中から どのカメラを表示に使用するのかを指定 ● Camera Cut Trackのサムネイルは 右クリックメニューから更新可能 http://api.unrealengine.com/JPN/Engine/ Sequencer/HowTo/TracksCameraCut/
CineCameraについて軽く説明 を押すと、Camera Cutトラックと Cine Cameraが自動的に生成される カットシーン向けの 多機能なカメラ機能 Cine Camera ● レンズに関するパラメータが豊富 ● Look at トラッキング ● オートフォーカス ● などなど http://api.unrealengine.com/JPN/Engine/Sequencer/Ho wTo/CineCameraActors/
Cine Cameraのオートフォーカス機能 猫でも分かるUE4のポストプロセスを使った演出・絵作り
Event Track Sequencer から BP, C++で実装された処理(関数)を呼び出すTrack ● Sequencer が 持つ Director BP 上で Event Trackから呼び出したい処理を書く形
詳細は先日のライブストリーミングにて! Unreal Japan Stream | UE4.21 で大きく変わった Sequencer の Event Track の使い方を紹介! 公式ドキュメントはこちら https://docs.unrealengine.com/enus/Engine/Sequencer/HowTo/TracksEvent
この他にも便利機能が沢山! ● フォルダ分け機能 ● ラベルによる検索フィルタ
この他にも便利機能が沢山! ● シネマティクスビューポート ● 構図の調整を支援する表示オプション ● 動画・連番画像(バッファ指定可能)の出力 ● EDLを経由して、Premiereなどのソフトとやり取り可能
まだ…沢山… ● エディタ設定や ツールバー から SequencerのUI・デフォルト挙動を変更可能 ● キー補間方式のデフォルト設定の変更 (Key Interpolation) ● 再生時のタイムラインの自動スクロール (Auto Scroll Enabled) ● 数多くの便利なショートカット
まだだだだだだだだだだだだだだだだ http://api.unrealengine.com/JPN/Engine/Sequencer/Ho wTo/index.html
ここまでのまとめ 前半部分の8割は 公式ドキュメント・リリースノートで 説明しています! 読んでない人は早く読んで!!!!! 読んで頂き、今後の参考になれば幸いです候
ここまでのまとめ ● UE4.12 ~ UE4.22の過程で頂いた 数多くの お叱り 温かいフィードバックをエンジン本体に反映 ● 標準機能 + BPを併用することで 様々なユースケースに対応可能 ● カットシーン や 遊びの部分 のクオリティを追求したい 非エンジニアがのびのびと開発できる環境 ● 足りない機能に関しては、 ご要望をいただくか、エンジン改造をご検討ください… ● 後述のSequencer Scripting機能にこうご期待!
目次 1. シーケンサーとは? 2. シーケンサーの基本機能・便利機能について 3. シーケンサーの最新機能について 4. よくある問題とその対策について
UE4.22が先日リリースされました! https://www.unrealengine.com/ja/blog/ unreal-engine-4-22-released リリースノートでは 詳しく解説されていない 機能について紹介
Frame Markers ( UE4.21, 22 ) 編集・制御用のマーカーを挿入できるように ● マーカーの時点からの再生、その時点へのジャンプ・スクラブがBPから可能
Assign multiple objects to a single track 一つのTrackで複数のActorを制御できるように ● 持っていないパラメータに対しての制御は無視される
Network replication (UE4.22) サーバー側 の Level Sequence の再生にクライアント側が同期するように ● Level Sequence Actor の Replicate Playback を有効に ● クライアント側で再生した場合は同期されません ( RPCを使いましょう! )
Editor Scripting Utilities Plugin (UE4.20 ~ 22) BP や Python から各アセットタイプに対して 様々な処理を可能にするEditor Scripting機能が強化 ● Blutility の ActorActionUtility や AssetActionUtility を使って アセットなどの右クリックメニューを拡張することも
http://api.unrealengine.com/JPN/Engine/Editor/ScriptingAndAutomation/ HowTos/CreatingLODs/
Unreal Python API Documentation https://api.unrealengine.com/INT/PythonAPI/index.html
Sequencer Scripting Plugin (UE4.20 ~ 22) Level Sequenceの各要素( Track, Section, Channel など)への アクセス や 編集処理を BP・Pythonから可能に
例:選択中のLevel Sequence アセットの Possessable な Track の Section を全てLockする処理
Sequencer Scriptingで作業・チェックを自動化! Sequencerは非エンジニアでも自由に使える = 処理や管理が煩雑になる可能性がある ● エンジニアが定期的にチェックする必要がある Sequence Scriptingで作業・チェックを自動化! ● 作業効率の向上 ● ヒューマンエラーの回避・削減
Editor Widget (UE4.22) UMG(ゲーム中のUI作成ツール)で エディタ拡張・ツール作りが可能に ● これまでは Slate(C++) が必須だったのでかなり楽に ● 非エンジニアでもちょっとしたツールを作りやすい!
その他の新機能に関しては UE4.22 リリースノートをご確認ください https://www.unrealengine.com/ja/blog/unreal-engine-4-22-released Take Recorder Composure シーケンサ トラック
目次 1. シーケンサーとは? 2. シーケンサーの基本機能・便利機能について 3. シーケンサーの最新機能について 4. よくある問題とその対策について
今回紹介する問題と対策について 1. Sequencerを使ったアニメーション制御について 2. 複数人で一つのカットシーンを同時・並列に作業したい 3. カット切替時に表示がおかしくなる 1. 物理の荒ぶり 2. テクスチャが一瞬ボケてる 4. どこでも使える必殺技の制御をシーケンサでしたい
今回紹介する問題と対策について 1. Sequencerを使ったアニメーション制御について 2. 複数人で一つのカットシーンを同時・並列に作業したい 3. カット切替時に表示がおかしくなる 1. 物理の荒ぶり 2. テクスチャが一瞬ボケてる 4. どこでも使える必殺技の制御をシーケンサでしたい
Sequencerを使ったアニメーション制御 Animation Trackを使って アニメーションを再生するのが基本 しかし、Section毎に 指定可能なアセットは一つだけ
Sequencerで複雑なアニメーション制御をするには ● アニメーションのブレンド機能の活用 ● Animation Blueprintとの連携
アニメーションのブレンド
ブレンド時の補間カーブの設定について http://api.unrealengine.com/JPN/Engine/Sequ encer/HowTo/CharacterAnimation/index.html
Animation BPのパラメータを制御
Animation BPのプロパティを制御 BPと同様にプロパティを公開することで Anim Graph, Event Graph を Sequencerから制御可能!
Animation BPを経由して、物理挙動を制御
Animation BPと Animation Trackの併用について Animation Trackは、エンジン内部では Slot付きアニメーション( Anim Montage )を実行 Slotを考慮していないAnimation BPの場合 Animation Trackに指定したアニメーションは再生されない
例:走るモーションを指定しても再生されない
Animation BP持ち を Animation Trackで制御するには? Animation BP, Animation Trackに Slot(ノード)を適切に設定する
Animation BP持ち を Animation Trackで制御するには? 又は、Skeletal Meshコンポーネントの Animation Mode を Use Custom Mode に変更 ● ただし、Animation BPはその間処理が走らない ● 例外的に使用する際は、すぐに元の設定に戻しておくと吉
公式ドキュメントにサンプルあり http://api.unrealengine.com/ JPN/Engine/Sequencer/ HowTo/GameplayAnimBlending/ index.html
Update Animation in Editor プロパティ 有効にすることで、実行しなくても エディタ上でアニメーションの更新処理が走る! (Animation BPの Event / AnimGraphも) Sequencer上での確認・調整作業が格段に楽に! ● Cloth処理に関しては Simulateなどで実行する必要あり
今回紹介する問題と対策について 1. Sequencerを使ったアニメーション制御について 2. 複数人で一つのカットシーンを同時・並列に作業したい 3. カット切替時に表示がおかしくなる 1. 物理の荒ぶり 2. テクスチャが一瞬ボケてる 4. どこでも使える必殺技の制御をシーケンサでしたい
一般的なカットシーンの構成要素 ● キャラクタ ● 背景 ● ライティング ● エフェクト ● ポストプロセス ● サウンド ● カメラワーク ● ゲームフローの制御 ● などなど
一般的なカットシーンの構成要素 ● キャラクタ ● 背景 ● ライティング ● エフェクト ● ポストプロセス ● サウンド ● カメラワーク ● ゲームフローの制御 ● などなど
より効率よくカットシーンを作るには… 一つのLevel Sequenceに要素が集中した場合 他セクションの作業終了を待つ必要が発生… コラボレーションワークフロー ● 他のセクションの作業を待たずに作業できる ● 他のセクションの作業に影響を与えない ● 他のセクションの作業内容を確認しながら作業できる http://api.unrealengine.com/JPN/Engine/Sequencer/Workflow/ ToolUsage/index.html
Subscene Track ● コラボレーションワークフローを実現するための機能 ● 他のLevel Sequenceを再生するTrack Level Sequenceを レイヤー化することが可能!
他のSubscene Trackを再生しながら作業可能
Shot Track 他のLevel Sequenceを再生するTrack …Subscene Trackとの違いは?
Subscene Track と Shot Trackの比較 Subscene ● 複数同時に使用することが 可能 Shot ● 複数同時に使用することが 不可能 重複部分は 片方のShot Trackしか 再生されない
Subscene / Shot Track の 同じTrackタイプ間での優先度 ● SectionのHierarchical Biasが高い方が優先される ● Hierarchical Biasが同じ値の場合は上にある方が優先される 同じActorを制御している場合、 上にある “Camera1” が優先される
Subscene Track と Shot Trackの比較 Subscene Shot ● 複数同時に使用することが 可能 ● 複数同時に使用することが 不可能 ● サムネイルが ない ● サムネイルが ある
Subscene Track と Shot Trackの比較 Subscene Shot ● 複数同時に使用することが 可能 ● 複数同時に使用することが 不可能 ● サムネイルが ない ● サムネイルが ある ● Take機能を 使えない ● Take機能を 使える
Shot Track の Take機能について ● Shot Trackに指定されている Level Sequenceアセットを 別Take として複製 ● 各Takeにすぐ切り替え可能 演出変更を試してみたい時や 絵コンテ・仮組み・本番などの段階毎に 管理したい時に便利
https://www.unrealengine.com/ja/tech-blog/ue4--sequencer
Epicが推奨している構成 Master Sequence ( Level Sequence ) ● ● Shot 0 ● Subscene Character ● Subscene Camera ● Subscene Lighting ・・・ Shot 1 ・・・
Master Sequence Shot 0 Subscene Character
Master Sequence の 自動生成機能 Shot Trackの数 や 各Shot Trackが持つ Subscene Trackの名前などを指定可能
Multi-User Editing (UE4.22 Early Access) サーバー上で繋がった他の作業者と同時に一つのレベルを編集可能 ● サーバー・セッションの構築・接続はエディタ上で実行 ● セッション終了前にセッション中に加えられた変更を ローカルに反映するかを選択可能
エディタを複数立ち上げて、一つのレベルを編集してみた
ローカルPCで試す手順 その1 プラグインを有効にし、 Go LiveアイコンにあるLaunch Multi-User Serverを実行 サーバーが立ち上がります
ローカルPCで試す手順 その2 Session BrowserにあるCreate Sessionをクリック Session名に名前を入力しCreate
ローカルPCで試す手順 その3 別エディタにてSession Browserを開く。 Server名をクリックすると現在有効なSessionのリストが開く。 その中から先程作成した物を選択し、緑のアイコンをクリック これで接続が完了し、 共同編集が可能になっているはずです!
今回紹介する問題と対策について 1. Sequencerを使ったアニメーション制御について 2. 複数人で一つのカットシーンを同時・並列に作業したい 3. カット切替時に表示がおかしくなる 1. 物理の荒ぶり 2. テクスチャが一瞬ボケてる 4. どこでも使える必殺技の制御をシーケンサでしたい
例:カット切り替え時のクロス荒ぶり
例:バストショット時のテクスチャの一瞬のボケ
ここでまず伝えたいこと Sequencer は プリレンダリングではなく リアルタイムで処理・描画するシステムであること 通常の処理中に注意すべき部分については Sequencerにおいても注意する必要があります! ● 映像制作の場合はまた話が変わってきますが…
注意すべき部分の一例 処理負荷が大きい処理が 1フレームに集中しないように注意する ● Sequencer から 大量のActorを生成・制御したり… ● Event Track経由で非常に重たい処理を呼び出したり… フレームレートが安定しない場合、 表示のカクつきなどの問題に繋がる可能性が高い!
高負荷がかかった場合のカクつきの様子
日々のプロファイリング・最適化、大事! [CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編) UE4アセットリダクション手法紹介 [4.20版] UE4におけるLoadingとGCのProfilingと最適化手法 [CEDEC2018] UE4アニメーションシステム総おさらい [CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック その他色々:https://www.slideshare.net/EpicGamesJapan/presentations
話を戻して、物理とテクスチャのボケについて
物理荒ぶり動画の種明かし
物理挙動との相性の良し悪し 演出の都合でカット切り替え時に キャラクタの位置・向きを少し変えるケース キャラクタが超高速移動しているのと同じ! 非常に物理が荒ぶりやすい状況!
Teleport設定を活用して荒ぶり回避 Skeletal Mesh Componentが持つ Teleport Distance (Rotation) Threshold プロパティで解決 ● 1フレームで一定値以上動いた場合、Cloth処理にはその移動量(加速)は反映しない Reset After Teleport をfalse に Teleport Distance Threshold を 10 に
物理の荒ぶりを抑えるTipsまとめ UE4の物理アセット・クロスの荒ぶりを 何とかする方法について(UE4.21版) 「UE4.18で生まれ変わった 物理アセットエディタについて」 と 「物理と少し仲良くなる方法について」 その3
(ほぼ) Sequencer特有の物理荒ぶり問題について カット切り替わり時に Spawnableに設定したActorの 物理が収まる前の状態が見える問題
Level Sequenceで制御するActorの管理設定 ● Possessable ● Levelに配置されているActorを制御 ● Levelが管理 ● Spawnable ● Level Sequence が 制御するActorを生成 ● Level Sequenceが管理 ● 基本的に、Level Sequenceの再生完了後 Spawnable設定のActorは破棄
Tips Spawnable に設定されたActorは Level Sequence Player の Get Bound Objectsで取得可能
なぜSpawnable設定だと荒ぶりが起きていたか? Spawnable設定の場合、カット切り替わり時は生成直後 = 物理処理がまだ働いていない!
どのようにしてこの問題を解決するか 物理が収まった状態から表示するようにすれば解決! つまり、表示前に物理を空回ししたい!
Pre Roll / Post Roll 機能 特定のTrack / Section の 処理開始・終了フレーム にオフセットをかける機能 Pre Roll Post Roll
Pre Roll / Post Roll機能を使うには 1. 対象の Track の Evaluate in PreRoll ( Postroll )を有効に 2. 対象の Section の Pre(Post) Roll Frames の値を調整
物理の空回しを実現するには Pre Roll機能を使って 画面に表示される前に生成すればいい! 表示される頃には 物理挙動は収まった状態に!
実装手順 1. 対象Actorを制御するLevel Sequenceが指定された Shot (Subscene) Track の Pre Rollを有効・フレーム数指定 2. 今回対象となるSpawnableなActorの SpawnedトラックのPre Rollを有効・フレーム数指定
事前生成したものが見えてしまうことを避けるには Visibility( Hidden in Game ) プロパティを使って 画面表示のON/OFFを制御 ● Pre Roll設定を忘れずに!
Animation BP上で物理を適用している場合は注意! デフォルト設定の場合、非表示状態では物理処理が行われない! ● Rigid Bodyノードや AnimDyanmicsノードなど
解決方法 Skeletal Mesh Component の Visibility Based Anim Tick Optionを Always Tick Pose and Refresh Bonesに設定 ● 非表示時も処理が走って負荷の原因になるので、不要な時は別の設定にしておく
次はカット切り替え時のテクスチャのボケについて
はじめに結論 Camera Cut Track のPre Rollを有効に + Pre Roll Framesの値を適切に設定すれば解決します!
何故バストショット時にテクスチャがボケたのか Mipmap ● オリジナルの高解像度テクスチャと そこから作成される低解像度のテクスチャ群 Texture Streaming ● カメラとの距離などを元にMipの読込・破棄を動的に行い、 MemoryのTexture使用量を一定以下に保つ機能 ● 急にカメラが近づいた場合、 高解像度テクスチャのロードが間に合わず 一瞬ボケて見える問題が発生する可能性がある
Camera Cut Track固有のPre Rollに関する仕様 Pre Roll区間中に、Texture Streamingによる テクスチャのロードを事前に走らせることが可能! ● Camera Cut Trackに登録した Camera Actorの位置を元に必要なMipを計算
Pre Rollを使用する際の注意 Pre Roll Framesで指定する値の調整は慎重に! 値が少なすぎる場合 ● 物理の収まりや テクスチャのロードが間に合わない 値が大きすぎる場合 ● 無駄な処理が走ることになるため、 負荷などの問題が発生する可能性がある
Texture Streamingに関する詳細情報は 後日公開予定!
今回紹介する問題と対策について 1. Sequencerを使ったアニメーション制御について 2. 複数人で一つのカットシーンを同時・並列に作業したい 3. カット切替時に表示がおかしくなる 1. 物理の荒ぶり 2. テクスチャがぼけぼけ 4. どこでも使える必殺技の制御をシーケンサでしたい
必殺技の制御をSequencerでするメリット 様々な要素の調整を 一つのエディタ上で出来る! ● ● ● ● ● ● アニメーション エフェクト カメラアングル・カット ポストプロセス 再生速度 などなど これらを別々のエディタで 実装・調整するのは大変!
どこでも使える汎用的なLevel Sequnceを作るためには 1. キャラクタの現在位置・向きを基準とした制御 2. 制御対象のActorを別Actorに差し替える仕組み 3. 不要な参照関係を持たない
どこでも使える汎用的なLevel Sequnceを作るためには 1. キャラクタの現在位置・向きを基準とした制御 2. 制御対象のActorを別Actorに差し替える仕組み 3. 不要な参照関係を持たない
キャラクタの現在位置・向きを考慮しない場合 Transform Track の Keyで指定した値が そのまま使われてしまう… 特定の座標・位置にいるときにしか 使えない 超専用Level Sequenceに…
一度作ったLevel Sequenceを使いまわしたい…!
Transform Origin ( Actor ) が便利! Level Sequence における 座標原点( 0,0,0 ) を 置き換える機能 ● Transform(位置・向き)の制御値に オフセットをかける機能 ● ●
Transform Origin (Actor) を活用するには < その1 > Level Sequence で Transformを制御する場合は 座標原点( 0,0,0 )を開始位置にする
Transform Origin (Actor) を活用するには < その2 > ● Level Sequence Actor の Override Instance Data を有効に ● Transform Origin (Actor) に 実際に再生する際に原点としたい位置 (Actor)を指定
例えば、LevelSequenceActor自身を原点に指定したり
注意!!! Ovrride Instance Data が 無効になっている場合 Transform Origin (Actor) の設定は無視されるので注意! UE4.22 Preview7 時点では Ovrride Instance DataはBPから制御不可 現在対応リクエスト中です… 4.23で対応が入ります。 お急ぎの方は CL-5671296 を
UE4.22の場合、 LevelSequenceActor.h の以下の部分を修正すれば動くはず…
Transform Origin (Actor) の問題点 レベルを実行・Simulateしないと Transform Origin (Actor) の設定が反映されない Sequencer上で作業する際、 「この位置で再生するとどう見えるかな…?」 といった確認をするには実行・Simulateする必要がある
Transform Origin (Actor) 以外の方法 < その1 > Transform Track の Section の Blent Type を デフォルトの Abosluteから Relative に変更する
Blend Type を Relativeにすると… 対象のActorの現在の位置・向きに対して 相対的な制御を行うことが可能 ● 座標を直接変更するのではなく 現在の位置・向きにオフセットをかける形 位置の制御に関しては 現在の向きは考慮しないので注意! ● Actorのローカル座標系では制御していない ● あくまで、現座標とのブレンド計算手法の違い
Transform Origin (Actor) 以外の方法 < その2 > 空の Actor に制御対象の Actor を Attach することで Transform Origin Actor の代用に
Transform Origin Actor との比較して メリット ● 「この位置で再生するとどう見えるかな…?」を見たいときは Attach先のActorを動かすだけでいい( 実行・Preview不要 ) デメリット ● Level Sequence が持つ Attach 先の Actor と Level Sequence を実際に再生する Level 上の Actorとの紐づけが必要 ( 後述のObject Bindingで対応 )
どこでも使える汎用的なLevel Sequnceを作るためには 1. キャラクタの現在位置・向きを基準とした制御 2. 制御対象のActorを別Actorに差し替える仕組み 3. 不要な参照関係を持たない
別Actorに差し替えたいケースの例 ● 先程のAttach先のActorのように Sequencer上での作業時点では位置・向きが未確定の場合 ● Sequencer で作成した挙動・演出を 様々なキャラクタに適用したい場合 ● 様々なキャラクタが使用可能な汎用必殺技 ● 操作しているキャラを シームレスにカットシーンに移行させたい ● ダメージを受ける側の演出も含まれている ● などなど
http://api.unrealengine.com/JPN/Engine/Sequencer/HowTo/AnimateDynamicObjects/index.html
全く異なるBP, キャラクタ でも流用したい…! Object Bindingでは差し替えが上手くいかない可能性があるケース ● Object Binding元のBPクラスと コンポーネント構成などが全く異なるBPをBinding ● Object Binding元が持つメッシュと 異なるスケルトンのメッシュを持つBPをBinding
Event Track + BP Interface で (ある程度) 対応可能 各BP毎に実装された処理を Event Trackから呼び出すことでLevel Sequenceを流用 ● クラスの継承関係外の場合はBP Interfaceを ● ただし、Sequencer上でのプレビューがし辛くなります…
今回お借りしたモデル・ライブラリのご紹介 モデル ● VRoid Studio「千駄ヶ谷 渋」ちゃん ● 公式ページ VRMモデルを UE4で読み込む上で使用したライブラリ ● VRM4U https://github.com/ruyo/VRM4U/wiki/VRM4U ● 作者様:はるべえ(@ruyo_h)様
どこでも使える汎用的なLevel Sequnceを作るためには 1. キャラクタの現在位置・向きを基準とした制御 2. 制御対象のActorを別Actorに差し替える仕組み 3. 不要な参照関係を持たない
Level Sequence の 参照問題について 特に考慮せずにLevel Sequenceを作成・編集した場合、 レベルとのソフトリファレンス(間接参照)が発生する
ハードリファレンス と ソフトリファレンス ハードリファレンス ( 直接参照 ) ● 詳細パネルやBPの引数ピンなどで アセットを直接指定して使用 ● ロード対象のアセットが ハードリファレンスしている アセットも同時に連鎖的にロードされる http://api.unrealengine.com/JPN/Programming/Assets/ ReferencingAssets/
ハードリファレンス と ソフトリファレンス ソフトリファレンス( 間接参照 ) ● Soft Object Referenceなどで アセットを間接的に指定して使用 ● 連鎖的なロードは走らない ● ハードリファレンスに比べて ロードの管理など注意すべき点は増える http://api.unrealengine.com/JPN/Programming/Assets/ ReferencingAssets/
レベルとのソフトリファレンスがあることで起きる問題 Cook ( ≒ Packaging作成 ) 処理対象に ソフトリファレンスされているレベルが含まれてしまう 例: 必殺技作成・調整用のレベルが パッケージに入ってしまっていた…
この問題を解決するには 1. Level SequenceでActorを扱う場合は 全て Spawnable にする 2. Level上のActorを制御したい場合は Object Binding を併用する
対応コストが高くて難しい場合は… プロジェクト設定 -> Packagingにある Directories to never cook に 含めたくないレベルを指定するという手も トラブルの原因になる可能性があるため 扱いには要注意
注意:Create Level Sequence Playerノードについて そのまま使うと、引数ピンに指定した Level Sequence と ハードリファレンス! ● ロード時間・メモリ使用量などに悪影響…
解決策 ● Soft Object Referenceを用いて、ソフトリファレンスにする ● Create Level Sequence Playerではなく Level Sequence Actorを使用する ● Level Sequence Actorの詳細パネルで指定する場合はソフトリファレンスになる
本日のまとめ ● Sequencerは非常に強力なツール! 基本機能とBPを組みわせることで、 非エンジニアでも様々な挙動・表現を実現可能です ● 出来ることが多いが故に使う上で注意すべき点があることは事実 少なくとも量産前に検証し、 プロジェクトに適した運用フローを構築することが重要! ● 今後もSequencerは改良されていくはず! 皆様からの熱いフィードバックお待ちしております!
https://unrealengine.jp/unrealfest/
● Unreal Engine Roadmap ● UE4マーケットプレイスに神社アセットを出品して分かったこと ● 日本一になった学生達に聞く、日本ゲーム大賞の攻略方法 ● UE4:2019年ノンゲーム分野での活用ついて ● コンソールの資産を活かす? モバイルゲーム「ウイニングイレブン 2019」のUE4活用事例 ● 「エースコンバット7」UE4×TrueSkyでの「雲」の表現について ● プロシージャル技法による背景の自動生成 『1,000の和室』
https://unrealengine.jp/unrealfest/