「Unreal Engine」チュートリアルのまとめ
「Unreal Engine」でゲームを開発していくために、
はじめに、
Video Tutorials(3rd Person Game with Blueprints (pre. v4.8))
で学ぶ。
※以下のサイト
Video Tutorials - Epic Wiki
機能とかを忘れないようにメモしていく。
1 - Intro
ビデオチュートリアルの進め方について説明。
2 - Project Creation and FBX Download
①FBXダウンロード
②プロジェクト作成
①FBXダウンロード
以下のサイトで「FBX」をダウンロード。
https://wiki.unrealengine.com/File:ThirdPerson_FBX.zip
「FBX」は、ファイル形式のこと(~.FBX)。FBXには、複数のオブジェクト、ボーン、スキニング、ライト、カメラを含む広範囲の3Dアニメーションソフトウェア情報を格納する。
※FBXについて詳しくは以下のサイトへdocs.unrealengine.com
ダウンロードした中身を展開すると、
ビデオに表示されているファイル名とは異なったものであった。
※左:ビデオに表示しているファイル、右:ダウンロードしたファイル
ファイル名の変化は以下(たぶん...)。
HeroTPP→SK_Mannequin
Idle→ThirdPersonIdle
Jump_End→ThirdPersonJump_End
Jump_Loop→ThirdPersonJump_Loop
Jump_Start→ThirdPersonJump_Start
MontageExample_End_1→同名
MontageExample_End_2→同名
MontageExample_Punch_1→同名
MontageExample_Punch_2→同名
MontageExample_Start→同名
Run→ThirdPersonRun
Walk→ThirdPersonWalk
②プロジェクト作成
include starter contentにチェック
プロジェクト名:MyThirdPersonGame
でプロジェクト作成。
とビデオで言ってるが、
バージョンが変わったからか、そんなものはない。
なんで、
「ブループリント」タブの「空のプロジェクト」を選択して、
プロジェクト名を「MyThirdPersonGame」に設定した。
3 - FBX Importing and Using Skeletons
①FBXインポート
②スケルトンについて
①FBXインポート
新規ファイル「Charactor」作成して、
その中に「SK_Mannequin.FBX」をドラッグ&ドロップすると、
FBXインポートオプションが出る。
「Mesh」のSkeleto欄は「なし」で、
Normal Import Method欄は「Import Normalds」に設定して全てインポートする。
ログは気にしないでいい。
新規ファイル「Animation」を先ほど作成した「Charactor」ファイルの中に作成して、
その中に「SK_Mannequin.FBX」以外のFBXファイルをドラッグ&ドロップすると、
FBXインポートオプションが出る。
「Mesh」のSkeleto欄は「SK_Mannequin_Skeleton」に設定して全てインポートする。
ログは気にしないでいい。
②スケルトンについて
スケルトンとは、特定タイプのキャラクター、またはスケルタル メッシュのボーンや階層情報を保持するリストのようなもの。アニメーションの関連性はこのリストを通じて設定する。
☆To share anims characters MUST use the same Skeleton Asset
アニメーションを共有するには、スケルタル メッシュは同じスケルタル アセットを使用 しなければなりません。
※スケルトンについて詳しくは以下のサイトへdocs.unrealengine.com
4 - Intro to Persona
ペルソナについて説明。
ペルソナは、アンリアル内のアニメーション編集ツールセットのこと。
※ペルソナについて詳しくは以下のサイトへdocs.unrealengine.com
5 - Setting Up Inputs
キャラクターの動きを設定する。
キャラクターの動きを特定のキーや
モバイル用仮想ジョイスティックなどに割り当てる。
編集>プロジェクト設定
インプットのBindingsの設定を変更
「Axis Mappings」の「+マーク」を押すと、軸マッピングが追加される。
追加された軸マッピングの名前を「MoveForward」に変更。
その横の「+マーク」を押し、グループに軸マッピングに追加する。
他の操作についても同様に設定する。
また、「Action Mappings」の設定も同様。
Action Mappings:動作(ジャンプという行動)と入力を結びつける
Axis Mappings:動く方向(座標軸)と入力を結びつける
追加内容は以下。
Action Mappings
└Jump
└「Spase Bar」
└「Gamepad Face Button Bottom」Scale:1.0
Axis Mappings
└MoveForward
└「W」Scale:1.0
└「S」Scale:-1.0
└「UP」Scale:1.0
└「DOWN」Scale:-1.0
└「Gamepad Left Y」Scale:1.0
└MoveRight
└「A」Scale:-1.0
└「D」Scale:1.0
└「Gamepad Left X」Scale:1.0
└TurnRate
└「Gamepad Right X」Scale:1.0
└「Left」Scale:-1.0
└「Right」Scale:1.0
└Turn
└「Mouse X」Scale:1.0
└LookUpRate
└「Gamepad Right Y」Scale:1.0
└LookUp
└「Mouse Y」Scale:1.0
最後に、
「Set as Default」ボタンを押し、設定を保存する。
※最新バージョンだと、「Set as Default」ボタンはない。
※フェイスボタンとは、PlayStationで言えば○×△□ のボタンのこと。
「Gamepad Face Button Bottom」なので、
フェイスボタンの内で一番下のボタンのこと。
つまり、
Xbox:「A」
PlayStation:「×」
Gamepad Face Button Bottom=A=×
Gamepad Face Button Right=B=○
Gamepad Face Button Left=X=□
Gamepad Face Button Top=Y=△
※LookUp:カメラを上下方向に回転させること
※TurnRate:一定の速度で回転する
※Turn:マウスの動かす速さで回転する
6 - Basic Character Material
①マテリアル作成
②マテリアルインスタンス作成
③マテリアルをキャラクターに適用
①マテリアル作成
右クリックでマテリアルを作成し、
名前を「Charactor_parent」とする。
Charactor_parentをダブルクリックして、編集できる。
最終的に、以下のように設定する。
「Vector Parameter」
マテリアルの色を変更することができる。
※Vector Parameterについて詳しくは以下のサイトへdocs.unrealengine.com
「Fresnel」
※Fresnel(フレネル)とは、物体を見る角度による映り込みの変化のこと。
反射の強度(0~1)、反射がない=0、反射が強い=1
※Fresnelについて詳しくは以下のサイトへdocs.unrealengine.com
「Power」
Power 表現式は、2つの入力値を受け取り、
BaseをExp乗の累乗をして結果を出力する。
※Powerについて詳しくは以下のサイトへdocs.unrealengine.com
「Lerp」
LinearInterpolate (線形補間) の略。
「ScalarPrameter」
1個のfloat型の値が入り、
後にマテリアルの要素 (メタリックやラフネスなど) を変更するために使用できる。
・Metallic
・Roughness
※ScalarPrameterについて詳しくは以下のサイトへdocs.unrealengine.com
②マテリアルインスタンス作成
「Charactor_parent」の上で右クリックして、
マテリアルインスタンスを作成する。
名前を「Charactor_Instance」に設定。
詳細のパラメーターグループの、
「Vector Parameter Values」の「BaseColor」にチェック。
「Scalar Parameter Values」の「Metallic」と「Roughness」にチェック。
で保存。
また、
「Metallic」の数値を変化させると以下のようになる。
「Roughness」の数値を変化させると以下のようになる。
③マテリアルをキャラクターに適用
7 - Blend Spaces
「Blend Spaces」について
複数のアニメーションのブレンドを可能にするアセットのこと。
この章では、3つの状態(アニメーション)を1つにする。
・Idle状態
・Walk状態
・Run状態
※Blend Spacesについて詳しくは以下のサイトへdocs.unrealengine.com
8 - Intro to Animation Blueprints
アニメーションブループリントとエディタの説明。
アニメーションブループリントは、
スケルタルメッシュのアニメーションを制御する。
「Event Graph」について
「AnimGraph」内部のアニメーションを操作するために、
BlendSpacesと別のブレンドノードで使用した値の更新処理をする。
つまり、
「BlendSpaces」のデータ(キャラクターのスピードなど)を読み取って、
その値を更新しつつ、「Anim Graph」に渡す。
「Anim Graph」について
現在のフレームに対する スケルタルメッシュ の最終ポーズを評価する。
つまり、
「Event Graph」で渡された値を、
フレーム毎にキャラクターのポーズをどのようにするかを決める。
※Animation Blueprintsについて詳しくは以下のサイトへdocs.unrealengine.com
9 - Intro to State Machines
ステートマシンについての説明。
「State Machines」とは、
ある条件(Rule)に沿って、スケルタルメッシュのアニメーションを、
一連のステートへ分割するグラフィカルな手法のこと。
つまり、
「Idle状態」「Walk状態」「Run状態」などの、
アニメーションに切り替えることができるようにする機能のこと。
この章では、
・Idle-Walk-Run
・Jump Start
・Jump Loop
・Jump End
の4つのステートを例として、
それぞれのステートが切り替わる条件(Rule)が
どのようになっているかを説明している。
↓修正後
※ 9章では間違って「Locomotion」もステートと呼んでいた。
10章で、4つにステート全体を「Locomotion」という名前のステートマシンにしている。
※State Machinesについて詳しくは以下のサイトへdocs.unrealengine.com
10 - Building the AnimGraph
ステートマシンを作成する。
ステートマシン名:Locomation
AnimGraph
Locomotion内部
ステート:Idle_Walk_Run
Idle_Walk_Runの制御は、キャラクターの速度(Speed)。
Idle_Walk_Runのブレンドスペースの入力を変化させ、
ブレンドスペースの入力によって最終的なアニメーションが決定される。
変数へ昇格で「Speed」という変数を作成。
ここに、プレイヤーの操作による「速度」が入ることになる。
ステートの遷移ルール:Idle_Walk_Run→JumpStart
変数名:IsInAir? (空中にいるか?)
IsInAir? という条件が満たされれば、
Idle_Walk_RunステートからJumpStartステートに移行する。
ステート:JumpStart
ステートの遷移ルール:JumpStart→JumpLoop
・TimeRemainng (比率) for ‘Jump_Start’
・Float < Float
JumpStartのアニメーションが残り50%になった時点で、
JumpLoopステートに移行する。
ステート:JumpLoop
ステートの遷移ルール:JumpLoop→JumpEnd
変数名:IsInAir? (空中にいるか?)
「空中にはいない」なので、NOT Boolean関数。
空中にはいなくなった時、
JumpLoopステートからJumpEndステートに移行する。
ステート:JumpEnd
ステートの遷移ルール:JumpEnd→Idle_Walk_Run
・TimeRemainng (比率) for ‘Jump_Start’
・Float < Float
JumpEndのアニメーションが残り10%になった時点で、
Idle_Walk_Runステートに移行する。
いったん終了。