はじめに
ゲームの作り方も興味津々ですが、もともとアニメーションに興味があったのでこちらを見ていきます。
前提条件
- Unreal Engine 4.22 または 4.23 が必要
ダンロードから
- 手順に従って引き換えクーポンでアセットをゲット
- 🤔引き換えクーポンでもらえる教材は名前がわからないのでどれがもらえたのか探すだけで時間がかかります。皆さんどうしてますか?
- 🤔引き換えクーポンでもらえる教材は名前がわからないのでどれがもらえたのか探すだけで時間がかかります。皆さんどうしてますか?
- 開く
レビュー中のプロジェクト
このフォローアップの概要では、プロジェクトを詳細に確認していきます。このチュートリアル シリーズは、特にシーケンサでの操作に素早く慣れることをを目的としているため、使用する要素の多くは既に設定済みとなっています。このため、プロジェクトの内容を確認することで、どんなことをしていくのかを理解できるようになります。また、シーン全体を多かれ少なかれ再現していくので、ゴールを確認しておくとコースを進めやすくなります。
このレッスンの概要の紹介
ゴール
- 頑張って学ぶとこのようなシーンが再現できる
- Unreal Engineシネマティックツールの深い理解が得られる
- 自身を持って開発を行えるようになる
祭壇に近づくとアニメーションが始まる
アセットの紹介
- Levels フォルダには2種類のレベルがある
- First_Hour_in_Sequencer_Complete
- 完成品
- First_Hour_in_Sequencer_Begin
- この講座中に使用するレベル
- First_Hour_in_Sequencer_Complete
ファイルオープン時マップの変更
- プロジェクト設定 → プロジェクト設定 → マップ&モード → First_Hour_in_Sequencer_Begin
First_Hour_in_Sequencer_Begin を開き内容を確認
First_Hour_in_Sequencer_Begin マップを開く
アウトライナレベルでの解説
FallingRock
- FallingRocks_1, FallingRocks_2 は単なるスポーナーで岩を頭上から振らせるためのもの
- RockBlocket はボリュームでキャラクターに岩が当たらないようにブロックする役割があり、キャラクターの進路に岩が落ちないように働いている
FireEffects
- P_Fire* はマップ上に配置された炎を表現する為のパーティクル
- 非アクティブ化され配置されている
- 🤔非アクティブ化とはつまり??
!cicinecams
- 利便性のためにだけ存在していて特別なプロパティはない
- シーン周辺の必要となるであろう箇所に設置している
Starting with Cinematics シネマティクスから始める
「シネマティックスとは何か」から始めて、シネマティックスの背後にある重要なアイデアを探ります。シンプルかつ一時的なアニメーションの作成方法とキーの作成方法、タイムラインのスクラブ方法、最初のシンプルなアニメーションを効率的に作成する方法を学習していきます。
マスターシーケンスの作成
先に進むために最初のシーケンスを作成するところから始めましょう。
- ルートフォルダーに
Cinematics2
フォルダを作成する - フォルダの中に入る
- マスターシーケンスの追加をクリック
- BasePath に作成したフォルダを設定しCreate Master Sequenceを押す
- マスターシーケンスが作成される
- Cinematics2 フォルダにもシーケンス用のフォルダ構造が生成されている
- マスターシーケンスが作成される
- マスターシーケンスを作成するとフォルダ構造まで作ってくれて整理整頓されていてわかりやすく配置されている
- しかし始めてだと少し複雑ということで一旦削除して一つずつ見ていく
- この構造は理解ができたら使ってくださいとのこと
マスターシーケンスの削除
- アウトライナ上からマスタシーケンスを削除する為選択して Delete
- コンテンツブラウザ上から Sequence フォルダ削除
- 警告が出てくるが削除
- 警告が出てくるが削除
マスターシーケンスの作成(個別に)
Cinematics2
フォルダで右クリック → アニメーション → レベルシーケンス からレベルシーケンスを作成- 名前: EntrySequence
- シーケンスで作業するための最低限必要な唯一の構成要素
- 名前: EntrySequence
- 作成したレベルシーケンスを開く
- わかりやすさの為下部パネルにドッキングする
- タブの部分をドラッグするとドッキングする為の動きになる模様
- タブの部分をドラッグするとドッキングする為の動きになる模様
シーケンスの画面構成の解説
- シーケンスにはまだ何も入っておらず空の状態
- シーケンスに何かを入れる為にはレベルに配置されている必要がある
レベルにアニメーションを配置する
- ParagonSparrow の Idle(待機) アニメーションをレベルにドラッグする
- 名前: AnimatedCharacter
- 名前: AnimatedCharacter
- アウトライナ上でフォルダを作成し作成したキャラクターを入れておく
- 名前: ISequence
- 名前: ISequence
- 必要となるまでキャラクターを見えなくするため見えない場所へ移動させる
- 位置XY: 0, Z: -5000
- 位置XY: 0, Z: -5000
シーケンサーに追加
アニメーションのためのキーフレーム作成(手動)
手動で位置を設定する例
- 0フレーム目の位置などを定義するため、プレイヘッドの位置を 0 に設定(入力)し、+(keyの追加)ボタンを押す
- xyzに相当するキーが追加される事が確認できる
- xyzに相当するキーが追加される事が確認できる
- キーをShiftを押しながら3つとも選択して右クリック → Properties → XYZ を値を入力
- 位置XY: 0, Z: 100
- これで 0フレーム目のキャラクターの場所が定義できた
- 位置XY: 0, Z: 100
アニメーションのためのキーフレーム作成(Auto Key)
- こちらはレベル上でキャラクターをドラッグして感覚的に位置を決める方法
- Auto-Keyをオンにして、Viewportで変換ツールを使用する
- Auto-Keyモードが Key Changed に設定されている事を確認
- 鍵マークのアイコンをクリックして自動キー入力を有効にする
- キャラクターをドラッグしての暗い方に移動Z軸を180度回転させる
- 位置に関するキーのみ生成していたため、回転に関する操作が記録されなかった事がわかる
- Auto-Keyは存在するキーにのみ作用する
- 回転に関するキーを+(keyの追加)ボタンを押して作成
- キー追加前に回転していた内容が適用されている事が確認できる。
- キー追加前に回転していた内容が適用されている事が確認できる。
- 100フレーム目に移動してキャラクターを祭壇の上に移動する
- キーが自動的に挿入される事がわかる
再生(プレイ)してみる
- はじまりへボタンを押し、再生ボタンを押す
- キャラクターが 0フレーム目から100フレームにかけて移動するのがわかる
調整する
開始地点から目的地に一直線に移動している。地面に沿って移動するように調整する
- 平坦な道から坂道になっている部分の物理的な位置を見つける
- シーケンサー上でその箇所に到達しているフレームを見つける
- Zを下げる
- しかしまだ微調整が必要
- カーブエディターを見ると各軸についての推移がグラフで分かる
- プレイヘッドを動かし Viewport と グラフを見ながら調整する
- 祭壇に走り途中の坂道を登り最後にジャンプして祭壇に飛び乗るイメージのグラフ
- 完成図
Swapping Animation アニメーションをスワップする
もう少し深く掘り下げて、シーケンサに関連するアニメーションと重み付けについて説明していきます。事前に作成されたスケルタル アニメーションのいくつかを使用することにより、キャラクターをすぐに走らせたり、ジャンプさせたり、アニメーションを変更したりできます。
ジョギングショーションを加える
- 待機モーションではなく走っているアニメーションを使うため、愛メーション + をクリックし Jog_Fwd を選択。
- 前方(Forward)にジョギング(Jogging)の略の模様
- 前方(Forward)にジョギング(Jogging)の略の模様
- 現在選択中のプレイヘッドの位置にアニメーションが作成される
- 位置を 0 ~ 150 フレームとなるようにマウスでドラッグして調整
- 0 ~ 100フレームで祭壇に到達
- 0 ~ 150フレームジョギングモーション
- 到達時間が早すぎるため変更していく
- アニメーション時間の変更 150 → 200に変更する
- グラフを調整する Viewport を見ながら調整していく
- 走るモーションと進む距離のシンクロ率を Play Rate で調整する
- これによって地面一蹴りで進む距離が感覚的におかしくないように調整する
着地→待機モーションを加える
祭壇に飛び乗り着地するようなモーションを加える
- ジャンプの頂上付近で Jog_Fwd_Stop アニメーションを追加する
- ジャンプ開始と着地の為に時間を少し調整する
- Jog_Fwd_Stopの開始位置を飛び始めの少し前に設定
- アニメーション全体の期間を225フレームを完了としている
- ここで Jog_Fwd と Jog_Fwd_Stop は重なっている
- 現状Jog_Fwd のウェイトが1のため、下にある Jog_Fwd_Stop は上書きされ無効化されている
- ウェイトを0にすると下にある Jog_Fwd_Stop が100%になる
- ウェイトにキーを打ち飛び始めからジャンプ頂上までに Jog_Fwd のウェイトを 0 にして着地に備えるようなモーションにする
- 飛び始めでウェイト1でキーを作成し
- 頂上ではウェイト0でキーを作成
- これによって頂上では完全に Jog_Fwd が無効化しJog_Fwd_Stopモーションに切り替わっている
- 同じ要領で Idle を追加し最終的には待機するように設定する
Master Sequence マスターシーケンス
単にシーケンスを別のシーケンスの子にするという単純な発想が、マスター シーケンスです。マスター シーケンスを使用することで、アニメーションを無制限にネストできます。これは、アニメーション作品を作成および移動する際にとても便利な方法となります。このチュートリアルでは、概念をブラッシュアップし、それらをうまく使用する方法を学習します。
マスターシーケンス作成
Cinematics2
フォルダにレベルシーケンスを作成する- 名前: MasterSequence
- この MasterSequence に他のシーケンスを突っ込んでいく使い方をするとのこと
- 名前: MasterSequence
- 作業用のコンテンツブラウザを表示する
- マスターシーケンスを開く
- EntrySequence を MasterSequence にドラッグする
- MasterSequence のアニメーションの期間を EntrySequenceに合わせる
- EntrySequenceをダブルクリックすると EntrySequenceを修正できる便利!
- EntrySequenceからはホットリンクされているMasterSequenceにもジャンプできる便利!
- EntrySequenceをダブルクリックすると EntrySequenceを修正できる便利!
カメラを追加
- EntrySequenceを開き、アウトライナから
Cam1_cine
をドラッグする- 結果2つのトラックが出来上がる。カメラカットとカメラ詳細
- 結果2つのトラックが出来上がる。カメラカットとカメラ詳細
カメラーにキャラクターを追跡させる
- Cam1_cine をクリックし、Enable Look at Tracking を有効化。(私のだともともと有効でした)
- Actor To Track(トラックするアクタ)に Animated Character を選択
- Cam1_cine を選択した状態だと Viewport 上でプレビューができるようです
- 動画だと足元にフォーカスがあたっており足元を重視したトラッキングとなっていたため修正していましたが私はそんな事なかったので修正はしません。
- しかし行う場合はCam1_cineを選択→詳細パネルの Relative Offsetからできるようです。足元なので Z軸の修正ですね
- しかし行う場合はCam1_cineを選択→詳細パネルの Relative Offsetからできるようです。足元なので Z軸の修正ですね
- Cam1_cine を選択した状態だと Viewport 上でプレビューができるようです
キャラクターに焦点を当てる
- Cam1_cineを選択して Focus Settings で焦点を当てるメソッドと焦点を当てる先が選択できるようです。
- これをやらないと焦点が当たらずボケるようです。
- ボケさせないためには Current Aperture(F値)から設定できるようですね。
- カメラの基本プロパティ
カメラを動かす
0フレーム目で中間に位置しているカメラが最終フレームで祭壇の上に移動するように設定。これだけで固定カメラよりも迫力のある画が得られる様になっていた。
Particels and sequencer パーティクルとシーケンサ
このチュートリアルでは、シーケンス内でパーティクル エフェクトを機能させる方法について説明します。機能を有効化したり無効化したりするのは難しくありませんが、タイムラインに追加のコントロール要素を追加する必要があります。このチュートリアルでは、そうした作業を行います。そうすることで、より複雑なことが可能になります。
一般的に人が行いたいことの一つに正確なタイミングでパーティクルの発動させるというものがあります。
大ヒット作の多くは特殊効果に依存している物が多く、私達はそれを見るのが好きです。
そのようなシーンに敬意を表しつつシーンに炎を追加しましょう。
炎に使用するパーティクルはすでにレベルに追加されている。ここではどのように作成され配置しているかを解説するとの事。
パーティクルをフィルタリングし配置する
配置されているパーティクルを見つける最も簡単な方法はフィルタリングすること
- フィルタリングする
- 配置してみる
- Auto Activate を無効にすると勝手に燃えない
- 配置したファイアを削除しフィルターもリセットする
新しいアニメーションを作成
ここではキャラクターに呪文を唱えるようなアニメーションを施し、炎を発生させ、地面から巨大なぞうが出てくるエフェクトを作成するとのこと。
Cinematics2
フォルダにレベルシーケンスを作成する- 名前: Explosions scene
- MasterSequence を開く
- MasterSequence に ExplosionsSceneを追加する
- ExplosionSceneを EntrySequenceの後に移動する
- ExplosionsSceneを開く
- P_Fire11 ~ P_Fire17 まで選択し、シーケンサーにドラッグして追加する
- 祭壇にある床タイルも追加するためマップ上で選択。選択するとアウトライナ上でも選択されるので、アウトライナ上からExplosions scene へドラッグ
- 巨大な像を検索してExplosions scene へ追加
- 並び順を調整する。動画では時系列で出現する順番にしていた。
床アニメーションを定義
- 0 フレームで定位置
- 45 フレーム目で奥に引っ込むように設定
パーティクルを発動させる
- パーティクル トグル トラック追加
- 最初は無効状態にしておくためDeactivateに設定
- 0 フレーム目でキーを作成
- Activate 有効に切り替え
- 10 フレーム目でキーを作成
- 上記を P_Fire11 ~ 17 まで繰り返す
結果
AnimatedCharacterを追加する
- AnimatedCharacterを追加する
- EntrySequence での最終位置と同じになるように、AnimatedCharacterが表示されるまでプレイヘッドをマイナスに移動させる
- そこで位置のキーを作成する
- 1フレームにキーを移動させる
- PlayHeadをマイナス方向に移動したら表示される理由は、MasterSequenceでアニメーションを共有しているからとの事。
- Cast(構える)アニメーションを適用
- Play Rateを0.5にする
巨大な像が出てくる演出を追加する
- 終了フレームを67(Castの終わりに合わせる)とする
- 12フレーム目で AnimState のキーフレームを作成
- 最終フレームで像が完全に見えるようにZ軸を上げる
カメラを追加してSweepする
- cam2_cine をシーケンサーに追加
- Track と Focus を Animated Characterに変える
終わり
Blueprints and Sequncer ブループリントとシーケンサー
ゲーム内エフェクトを扱う場合、シーケンサをただ理解するだけでは不十分です。ブループリントをトリガーしてカメラを制御することが重要となる場合もあります。このチュートリアルでは、ブループリントの機能とそれらを機能させる方法の概要を簡単に説明します。ただし、ブループリントに不慣れな人用に、シーケンサから必要となる特定のやり取りに焦点を当てます。
これまでにシネマティックスで行うことのほぼすべての基本は説明完了。後は自身で色々とやってみる事です。
しかしBlueprintからトリガーさせてアニメーションを作成する手法等まだ我々(講師)との溝がありますのでそちらを説明します。ただBlueprintのクラスではないためBlueprintで必要な実装は全て完了しています。
それらについてシネマティックスで必要な箇所について解説を行います。との事
- アウトライン上で FallingRockブループリントを選択する
- 選択するとシーンの上空にはボリュームが設置されている事がわかる。ここから岩を生み出し(Spawn)落としているとの事。
- FallingRocks_2 のFallingRocksを編集 をクリックしてイベントグラフを開く
- RockTrigger でカスタムイベンを受信している
- Timeline_0 は時間とともにどれだけの岩を生成するかを定義している
- 横軸が 0 ~ 5 なので5秒間のタイムライン
- 曲線は Float値に紐付いていて RockSpawned という名前で出力される
- 2秒付近で1となり5秒に近づくに連れ0となるグラフで出力もそのように連動する
- このあとの処理はバウンディングボックスで岩を発生させスケールしている
- 最初のカスタムイベントこそここの肝との事。ここでカスタムイベントの作成例が紹介
カスタムイベントを作成
- カスタムイベントを作成
- 名前: Cinematics_Example
- 名前: Cinematics_Example
- コンパイル&保存する
- 次にこれをこれまで作成してきたタイムラインから呼び出しトリガーする
- MasterSequence を開く
- FallingRocks_1, FallingRocks_2 をタイムラインにドラッグする
- イベントを呼び出すため +トラック ボタンを押して Event Track を追加する
- FallingRocks_1, FallingRocks_2どちらも行う
- FallingRocks_1, FallingRocks_2どちらも行う
- 360フレーム目でキーを作成する
- 360フレームはだいたい巨大像が出現完了したタイミングで動画でもそのあたりにしていたため
- 追加されたキーを右クリックしてプロパティを確認すると Event Unbound となっていてイベントが紐付いていないことがわかる
- 新しいバインディングを作成する必要があるとのこと
- 360フレームはだいたい巨大像が出現完了したタイミングで動画でもそのあたりにしていたため
- バインディングを作成するため、Create New Endpointを実行する
- シーケンスのBP?に Sequence Event 0(End point)が追加された模様
- これによって外部イベントが呼び出せるとの事
- この英文コメントの内容の翻訳は本記事メモ欄に記載
- 名前を DropRocks にする
- こうすることで2番目のトラックからも参照可能になるとの事
- こうすることで2番目のトラックからも参照可能になるとの事
- Rock Trigger カスタムイベントを接続して呼び出す
- 先程 Cinematics_Example というカスタムイベントは作成したが、例として作成しただけで何も接続されていないので、もともと用意していたカスタムイベントを接続との事。
- 先程 Cinematics_Example というカスタムイベントは作成したが、例として作成しただけで何も接続されていないので、もともと用意していたカスタムイベントを接続との事。
- コンパイル&保存する
- Blueprintをトリガーさせる準備はできたが、実際にトリガーできるのはプレイ中のみとの事
- プレイヘッドをグリグリ動かして動きを見てみる事はできない
- そしてゲームプレイ中用の設定は何も終わっていない。
- Blueprintをトリガーさせる準備はできたが、実際にトリガーできるのはプレイ中のみとの事
BP_SequenceTrigger の解説
BP_SequenceTrigger はコリジョンボックスで重なりを検出するとアニメーションを再生する機能を持つBP。以下詳細。
- BP_SequenceTrigger Blueprint を開く
- ここで行っているのはシーケンスインスタンスの作成
- Begin Play の時点で Create Level Sequence Player を作成
- 次にSequencePlayer(シーケンスプレイヤーID)とSequenceReference(シーケンスID)変数の設定を行っている
- 下の段ではプレイヤーがバウンディングボックスに入ってきたときにシーケンスを再生する為の処理
- 重なったらまずコントローラーとキャラクターを変数に格納(上の段)
- コントローラーを無効化
- 操作しているキャラクターを別のどこかに移動させる
- プレイヤーを再生する
- Delay はアニメーションが終わるまでここで待つ事を意味する
- プレイヤーを停止する
- 操作しているキャラクターを元の位置に戻す
- 操作しているキャラクターにコントローラーをもたせる
BP_SequenceTrigger をレベルに配置してプレイヤーの位置に応じてアニメーションを発生させる
- BP_SequenceTrigger をレベルに配置する
- 祭壇の上に上がったときに再生する為、祭壇の上に配置する
- 祭壇の上に上がったときに再生する為、祭壇の上に配置する
- 簡単に重なりが検出できるようにサイズを調整する
- Sequence を MaterSequence に設定する
- Cinematics2 のマスターシーケンスである事
- Cinematics2 のマスターシーケンスである事
- プレイしてみると祭壇に近づくとアニメーションが開始され岩が落ちてくる事がわかる
岩を仕上げる
- MasterSequence を開いてイベントを設定していなかった方にイベントを追加する
- 360フレーム
- DropRocks をバインド
シーケンサを記録する
シーケンサには、シネマティックスを様々な形式でキャプチャできる強力な録画ツールが搭載されています。録画パネルをざっと見ていき、プロジェクトを出力します。
Blueprintはプレイ中にしかアニメーションできない為、現状プレイヘッドを動かしても岩が落ちてくるアニメーションは確認できないが、シュミレーションモードでプレイすることでプレイヘッドを動かしながらアニメーションも確認できるとのこと。
シュミレートモードでプレイするとプレイヘッドを動かすだけでも岩が落ちてくる事を確認できる
シーケンサを動画ファイルにして出力する
- カメラをオンにして、シュミレーション中でも設置したカメラの始点になるようにする
- レンダリングボタンを押す
- 保存先とファイル名を設定してムービキャプチャボタンを押す
- パネルの詳細な説明もあったのでこちらは興味がある方は見たほうがいいですね
- image output format → Custom Render Passes にすると法線マップだけのレンダリングなどもできるようで動画編集ソフトなどと組み合わせられるとの事
出力イメージで出力先フォルダに保存され再生もできる事が確認できる
メモ
- ノンリニア編集 (よく見るタイムラインなどでシーケンスを編集する方法)
ノンリニア編集(ノンリニアへんしゅう、Non-linear editing)は、コンピュータを使用した非直線的(ノンリニア)な映像編集方式のこと。 2台以上のデッキを使いテープからテープへ映像をコピーするリニア編集に比べ、編集箇所を自由に選択でき、映像データを即座に追加・削除・修正・並べ替えることができる利点がある。 Wikipedia
英語メモ
- Hot link 直リンク
- Blockbuster 大ヒット
- Toggle off 発動
- Popping off 飛び出す
- 🤔offというのは何かが出てくるイメージもあるのか
- Fire off commands コマンドを発射する
- Ability と Capability の違い
- Ability は一般的に備わっている能力。人間は話す能力を持っている
- Capability は高度な能力。あの人はそれを行う高度な能力を持っている
- In fairly short order 短期間で
- Before we call this scene done, シーンが完了したと言う前に
- 後一仕事しましょうみたいな内容が続く。
- From this point forward ここから先は
- havoc 騒動
- key takeaway 覚えておいてほしいこと、重要なこと
- what comes behind it それ以降にあるもの
- ノードセットアップ説明時にあるノード以降につながっているノードは重要ではないという話の冒頭で言っていた
- Bind 紐付け、関連付け
- イベントトラックにキーを作成する際、キーに対してイベントを設定していないと Unbound となる。 事から。
- specified on … …によって指定された
- In doing so, そうすることで
Sequence event 0 ノード追加時の英文の翻訳
シーケンサーイベントは下記どちらかの関数シグニチャに関連付けできます。戻り値はサポートしていません。
1. パラメータ無し関数
マスタートラックかオブジェクトへの紐付け
2. 単一オブジェクトまたはインタフェースパラメータを持つ関数
マスタートラックかオブジェクトへの紐付け
ソースオブジェクトがパラメータと同じタイプの場合にトリガーさせる事ができる
下記の順序でオブジェクトをトリガーさせる事ができる
a) トラックのオブジェクトに紐付行けられているオブジェクト または
b) トラックのイベントレシーバ配列で指定されたオブジェクト
c) プレイバックコンテキストによって提供されたオブジェクト(レベルブループリント、ウィジェットなど)Tip: Trigger events on level blueprints using an interface pin, and adding the interface to the desired level blueprint.
インターフェイス・ピンを使用してレベル・ブループリントのイベントをトリガし、希望するレベル・ブループリントにインターフェイスを追加します
コマンドメモ
quit game
ゲームから抜ける
ファイルオープン時マップの変更
- プロジェクト設定 → プロジェクト設定 → マップ&モード
ドッキング
- タブの部分をドラッグするとドッキングする為の動きになる模様
シーケンス画面構成
グラフエディタープレイヘッド移動
アニメーション時間変更
アニメーション時間の変更 150 → 200に変更する例
シーケンスの拡大縮小
カメラ Viewport ロック
オンにするとViewportにはカメラから見えている内容が映し出される