‫こんにちは､ ようこそ｡
‫今回の講演
‫今回は､ アニメーション ブループリントのアニメーション グラフの使用方法について説明します｡
‫この全く新しいコンセプトは､ 一連の変数を使用してアニメーションをブレンドする新しいコンセプトへの全体です｡
‫見ての通り､ 変数を変えています｡
‫アニメーションの融合を変えていく｡
‫さっそく､ この仕組みを見てみましょう｡
‫このように､ ある程度のアニメーションはできています｡
‫しかし､ 明らかにダイナミックではありません｡
‫特に面白いわけではありません｡
‫これよりもはるかに複雑なアニメーションを行う必要がありますが､ Unreal には､ これを行うための優れたシステムが数多く組み込まれています｡
‫その主なものがアニメーション ブループリントで､ これは明らかに青写真です｡
‫アニメーションはBlueprintで行うのが理にかなっているので､ C++でこれを行うつもりはありません｡
‫アニメーション ブループリントの主な目的は､ すべてのアニメーション ロジックをまとめ､ アニメーションをブレンド､
‫マージ､ スイッチングして､ ゲーム ロジックがアニメーション ブループリントを駆動できるようにすることです｡
‫では早速､ アニメーションの設計図を作ってみましょう｡
‫コンテンツブラウザで新規追加するか､ 右クリックして､ アニメーションに移動し､
‫アニメーション・ブループリントを選択すると､ すぐに親クラスを要求されます｡
‫親クラスは必要ない
‫デフォルトを使えばいいんです｡
‫しかし､ スケルトンが必要なのは､ アニメーションのように､ スケルトンメッシュのように､ どちらもスケルトンに依存しているからです｡
‫アニメーション ブループリントも同様で､ そのスケルトンのすべてのアニメーションを使用でき､ そのスケルトンに関連するすべてのメッシュに使用できることを意味します｡
‫さて､ ここで明らかにWraithスケルトンが欲しいので､ それを選択してクリックしましょう｡
‫レイスのスケルトンに基づいてアニメーションのブループリントを作成します｡
‫そして､ 命名規則として､ BPのアンダースコアから始めます｡ このように接頭辞が異なるので､ 基本的にこれをジャストシューター文字と呼ぶことにしています｡
‫キャラクターを撮影するためのアニメーションの設計図であることは､ 十分に理解できると思います｡
‫アニメーション ブループリントを開き､ メイン ウィンドウにドッキングすると､
‫アニメーション ブループリント エディタが表示されます｡
‫真ん中にこのメイングラフのエリアがあるのですが､ ある意味違うんです｡
‫だから､ 似たようなグラフの面積を確保したんです｡
‫今までとは少し違うグラフになっています｡
‫それは､ アニメグラフと呼ばれるものです｡
‫通常のブループリントと同様に､ イベントグラフがあることがわかります｡
‫イベントグラフもありますが､ アニメーショングラフというものもあるそうです｡
‫その話はまた今度｡
‫詳細ペインがあり､ アニメーション・ブループリントの詳細が表示されます｡
‫だから､ 授業自体は､ その詳細がわかるようになっているんですね｡
‫アニメーションのブループリントに対するコンポーネントがないことに注意してください｡
‫それはもう､ ひとつの違いとして注目してください｡
‫アニメートプレビューエディターを使用して､ このプレビューウィンドウでいくつかの作業を行うことができます｡
‫デフォルトで近寄らない理由｡
‫どうだろう｡
‫アセットブラウザは､ アニメーションと同様に､ アニメーションを簡単にエディタに取り込むことができます｡
‫また､ アニメーションやメッシュと同様に､ 右上にあるこのビューで､ スケルトン､ メッシュ､ アニメーション､
‫ブループリントをすばやく切り替え､ 同じスケルトンに依存するすべてのものを表示できます｡
‫次に､ 左下にあるのが私のブループリント・ペインで､ これは私のブループリントとほとんど同じです｡
‫標準的な設計図では､ 関数､ 変数､ マクロなど､ そのようなものは同じです｡
‫何が違うのでしょうか？
‫そうそう､ グラフもありますよ｡
‫それも同じです｡
‫ただ､ 違うのは､ このアニメーショングラフとアニメーションレイヤーです｡
‫さて､ 今回はアニメーションレイヤーについてあまり触れません｡
‫それはもうちょっと高度な機能で､ 私たちには必要ないものです｡
‫しかし､ グラフは､ 実行ノードがないことを除けば､ 設計図のようなもので､
‫グラフの中を流れるデータは何なのでしょうか｡
‫さて､ 基本的には､ キャラクタをモデリングすべき出力ポーズ､ つまり出力アニメーションのポーズを取得しようとしています｡
‫そして､ この結果ノードにさまざまなノードを接続することで､ それを実現するのです｡
‫そして､ その中を流れるように､ 最終的に出力となるデータを得ることができるのです｡
‫例えば､ アニメーションをアニメーショングラフにドラッグすると､ ノードが作成され､
‫出力ピン（アニメーションポーズ）があることがわかります｡
‫そのポーズを出力ポーズにドラッグしてコンパイルを実行すると､ このアニメーション ブループリントが行うことがプレビューに表示されるのがわかります｡
‫基本的には､ この能力アニメーションを再生するだけです｡ 現在行っていることとほぼ同じですが､ アニメーションを直接再生する代わりに､
‫ブループリントを挿入する間に追加のレイヤーを追加しています｡
‫それ自体には特に意味はないのですが､ このポーズに対してできる操作の種類が違うんです｡
‫これで便利になりましたね｡
‫アニメーションのグラフの中で右クリックすると､ いろいろなものがあるのがわかると思います｡
‫ブレンドというものを検索したいのですが､ この中にいくつか種類がありますね｡
‫一番上に欲しい､ 一番便利なものを探してみよう｡
‫ここには､ チャンネル別にブレンドボーン､ ブレンドマルチがあると思います｡
‫標準的なブレンドノードだけが欲しい｡
‫それを取り込もう｡
‫そして､ ここには値があり､ 2つの入力ポーズと1つの出力ポーズがあることがわかります｡
‫そこで､ 2つの異なるアニメーションをドラッグすることができます｡
‫そして､ それを貼り付けることができるのです｡
‫こちらはアディショナルアニメーションです｡
‫それを持ち込みたくないんです｡
‫それだと､ 私たちは混乱してしまいます｡
‫実際に使いそうなアニメーションを使ってみましょう｡
‫だから､ 前振りを見ていたのです｡
‫ジョグがあるんです｡
‫ウォーキングよりもジョギングがいいかもしれませんね｡
‫では､ ジョグフォワードを少し見てみましょう｡
‫それをブレンドして､ もうひとつはジョグバックをブレンドするのもいいかもしれませんね｡
‫ジョグを探すと､ ジョグ､ ジョグB､ これはバックワード､ フォワード､ バックワードの略だと思います｡
‫これらをブレンドノードに取り込み､ 出力して､ どのような結果になるかを見てみましょう｡
‫コンパイルを押すと､ アルファを1つ上にくっつけてからリコンパイルすると､ ジョギングで進んでいるのがわかりますね｡
‫プレビューを実行しながら､ どのノードからデータが流れているかを確認することもできます｡
‫A αが両者の間に混ざり合うから｡
‫0ができるようになった｡ 5をアルファ上に､ またはその間の任意の位置に設定すると､ 両方のアニメーションを再生し､
‫それらを互いに重ね､ 両方の半分ずつを再生します｡
‫また､ ジョギングで前進と後退を同時に行う場合､ 明らかに少しおかしいと思われませんか？
‫そこで､ ジョグを削除して､ 代わりにアイドルアニメーションを入れることにします｡
‫では､ どこにアイドルがいるのか？
‫このアイドル非戦闘員を選択して､ ここに持ってきます｡
‫50%になると､ 非戦闘時のアイドリングのようなことが起こるはずです｡
‫その半分か､ 半分､ そしてジョグの半分｡
‫一方､ 1にしておけば100%になる｡
‫アイドル｡
‫ゼロです｡
‫100％ジョグをすることになる｡
‫さて､ これは理想的ではありません｡
‫このαを変更し続けることで､ リコンパイルを打たないといけないこと｡
‫そこで､ ブループリントに変数を追加することができます｡
‫これは float である必要があるので､ 先に進み､ 詳細ペインで変数のタイプを float に変更します｡
‫そして､ これをブレンド量に変更します｡
‫次に､ これをドラッグして､ ブループリントからアニメグラフに変数をドラッグし､ いくつかのピンにフックしてコンパイルを実行します｡
‫そして､ アニメのプレビューエディタに戻ります｡
‫表示されているのがわかると思います｡
‫ここで作成したブレンド量と同じような変数です｡
‫つまり､ 実行時にそれをずらせば､ 何が起こっているのかを確認し､ プレビューすることができるのです｡
‫そして､ 基本的には､ ゲームがアニメーション設計図の変数を動かして､
‫再生中の特定の時点で適切な種類のアニメーションを取得することになります｡
‫それは､ このセクションの後半で少し扱うことになるものです｡
‫しかし､ 今は､ ここに適切な種類の変数があるときに､ このアニメーションを正しく表示することを試みます｡
‫だから､ ちょっとしたチャレンジの時期なんです｡
‫アニメーションのブループリントをセットアップして､ アニメーショングラフで遊べるかどうか確認してみてください｡
‫そこで､ もう1つブレンドを追加してほしいのです｡
‫順番に足していくんです｡
‫まずは1回ブレンドをするんですね｡
‫出力は次のブレンドの入力に入ります｡
‫次に､ 右や左に動くなど意味のあるアニメーションを選択して､
‫意味のある変数を追加します｡
‫ビデオを一時停止して､ 試してみてください｡
‫これらのブレンドで､ アニメグラフの意味を理解できるかどうか､ 遊んでみてください｡
‫やあ､ お帰りなさい｡
‫というわけで､ 少しは楽しんでいただけたでしょうか？
‫もう1つのブレンドノードを追加していきます｡
‫そこでblendで検索して､ 上にスクロールしてください｡
‫これはなぜか､ 私の画面のスケーリングと関係があるのかもしれません｡
‫それをブレンドして渡りに船と行こう｡
‫このアイドルアニメーションをご覧ください｡
‫自分はどうしたいのか？
‫左に動かしてもらいたいと思う｡
‫そこで､ アセットブラウザで「jogging」を探し､ 「jogging left」のアニメーションを探してみることにします｡
‫ところで､ ブレンドが理想的な方法でないことは承知しています｡
‫次回の講義では､ ブレンドスペースと呼ばれるものを使って､ 動きのあるアニメーションを自動的にうまくブレンドする方法を紹介します｡
‫しかし､ これはより複雑なことに飛び込む前に､ アニメーション・グラフのアイデアを得るためにやっていることなのです｡
‫だから､ 左と前の間をブレンドすることになるんだ｡
‫そこで､ ここを左にして､ 前方をコピーしたり､ カットしたり､ ここに移動させたりするのです｡
‫そして､ ブレンドの出力にあるそれを､ 次のブレンド､ つまりアイドリングをするかしないかの入力にパッチするのです｡
‫これは本当に意味があるのでしょうか？
‫変数を考えよう
‫変数の名前はどうすればいいのでしょうか？
‫フォワードと呼ばれるものがありますね｡
‫前方だけというのは非常にシンプルで､ 左のアニメーションを選ぶので､ 右か左かと呼ばれるものです｡
‫また､ 浮き輪にもなる｡
‫だから､ ブレンドのどちらかが､ 前に進むか､ 動かないかの選択をする必要がある｡
‫ということで､ 最初のブレンドはこれでいこうと思います｡
‫アルファ値がゼロのとき､ 前進を1とすると､ アイドルの戦闘は1では動かないように､ aにフックする予定です｡
‫そのフォワード変数を1つでアルファにフックしてみましょう｡
‫前進して､ それを左移動のゼロに持っていくんです｡
‫その左の変数をムービングレフトのゼロでフックし､ ムービングレフトの1では､ Bでフックするつもりです｡
‫それをコンパイルすると､ ちょっと散漫な感じになるわけです｡
‫でも､ わかってもらえるといいんですけどね｡
‫アニメーションのプレビューエディターで､ 前に移動するとジョギングが始まり､ それをリセットして､
‫左に移動すると左に移動し始めるのがわかります｡
‫そして決定的なのは､ もし私たちが両方とも左に移動してジョギングを始めた場合です｡
‫ここでは､ その両方が混在していると見るべきでしょう｡
‫その前方がブレンドされるようになったのです｡
‫左をもう少し少なく､ 50％にする必要がある場合､ 私がちょっと動いているのがわかると思います｡
‫変な感じのアニメですね｡
‫特にうまくブレンドされているわけではありませんが､ ジョグ・レフトとジョグ・フォワードの両方を再生しているのがわかると思います｡
‫先ほど述べたように､ これらの変数はほぼそのままにして､ 実際にブレンドを行うメカニズムをより意味のあるものに変更し､
‫アセットブラウザで表示されているジョギング前進､ ジョギング後退､ ジョギング左などのアニメーションをもっと使用するようにします｡
‫しかし､ それはすべて次の講義のテーマです｡
‫今回は､ アニメーションの設計図とアニメーショングラフの仕組み､ そしてそもそもなぜアニメーショングラフがあるのかについて､
‫ほぼ網羅的に説明しました｡
‫それでは､ 次回の講義でまたアニメーションでお会いしましょう｡