シヴァのブログ

UnityやUE4や趣味とかいろいろ...

「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

ダウンロードした中身を展開すると、
ビデオに表示されているファイル名とは異なったものであった。
※左:ビデオに表示しているファイル、右:ダウンロードしたファイル

f:id:shivaT:20150703100601p:plain f:id:shivaT:20150703100618p:plain

ファイル名の変化は以下(たぶん...)。
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」に設定した。
f:id:shivaT:20150703104346p:plain

3 - FBX Importing and Using Skeletons

①FBXインポート
②スケルトンについて


①FBXインポート
新規ファイル「Charactor」作成して、
その中に「SK_Mannequin.FBX」をドラッグ&ドロップすると、
FBXインポートオプションが出る。
「Mesh」のSkeleto欄は「なし」で、
Normal Import Method欄は「Import Normalds」に設定して全てインポートする。
ログは気にしないでいい。

f:id:shivaT:20150703110619p:plain f:id:shivaT:20150703110630p:plain

新規ファイル「Animation」を先ほど作成した「Charactor」ファイルの中に作成して、
その中に「SK_Mannequin.FBX」以外のFBXファイルをドラッグ&ドロップすると、
FBXインポートオプションが出る。
「Mesh」のSkeleto欄は「SK_Mannequin_Skeleton」に設定して全てインポートする。
ログは気にしないでいい。

f:id:shivaT:20150703112602p:plain f:id:shivaT:20150703112613p:plain


②スケルトンについて
ケルトンとは、特定タイプのキャラクター、またはスケルタル メッシュのボーンや階層情報を保持するリストのようなもの。アニメーションの関連性はこのリストを通じて設定する。

☆To share anims characters MUST use the same Skeleton Asset
アニメーションを共有するには、スケルタル メッシュは同じスケルタル アセットを使用 しなければなりません。

f:id:shivaT:20150703113855p:plain

※スケルトについて詳しくは以下のサイトへ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=△

f:id:shivaT:20150703164549p:plain f:id:shivaT:20150703164614j:plain

※LookUp:カメラを上下方向に回転させること
※TurnRate:一定の速度で回転する
※Turn:マウスの動かす速さで回転する

f:id:shivaT:20150703163812p:plain f:id:shivaT:20150703163648p:plain

6 - Basic Character Material

①マテリアル作成
②マテリアルインスタンス作成
③マテリアルをキャラクターに適用


①マテリアル作成

右クリックでマテリアルを作成し、
名前を「Charactor_parent」とする。
Charactor_parentをダブルクリックして、編集できる。

最終的に、以下のように設定する。
f:id:shivaT:20150703214946p:plain

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」にチェック。
で保存。
f:id:shivaT:20150703213109p:plain


また、
「Metallic」の数値を変化させると以下のようになる。
f:id:shivaT:20150703213002p:plain
「Roughness」の数値を変化させると以下のようになる。
f:id:shivaT:20150703213150p:plain

③マテリアルをキャラクターに適用
f:id:shivaT:20150703214610p:plain

7 - Blend Spaces

「Blend Spaces」について
複数のアニメーションのブレンドを可能にするアセットのこと。
この章では、3つの状態(アニメーション)を1つにする。
・Idle状態
・Walk状態
・Run状態
f:id:shivaT:20150704163144p:plain
f:id:shivaT:20150704161901p:plain

※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)が
どのようになっているかを説明している。

f:id:shivaT:20150704172109p:plain
f:id:shivaT:20150704174659p:plain
↓修正後
f:id:shivaT:20150704174320p:plain

9章では間違って「Locomotion」もステートと呼んでいた。
10章で、4つにステート全体を「Locomotion」という名前のステートマシンにしている。

※State Machinesについて詳しくは以下のサイトへdocs.unrealengine.com

10 - Building the AnimGraph

ステートマシンを作成する。

ステートマシン名:Locomation

AnimGraph
f:id:shivaT:20150705002927p:plain

Locomotion内部
f:id:shivaT:20150705002754p:plain

ステート:Idle_Walk_Run
Idle_Walk_Runの制御は、キャラクターの速度(Speed)。
Idle_Walk_Runのブレンドスペースの入力を変化させ、
ブレンドスペースの入力によって最終的なアニメーションが決定される。
変数へ昇格で「Speed」という変数を作成。
ここに、プレイヤーの操作による「速度」が入ることになる。
f:id:shivaT:20150705002855p:plain

ステートの遷移ルール:Idle_Walk_Run→JumpStart
変数名:IsInAir? (空中にいるか?)
IsInAir? という条件が満たされれば、
Idle_Walk_RunステートからJumpStartステートに移行する。
f:id:shivaT:20150705004213p:plain

ステート:JumpStart
f:id:shivaT:20150705003952p:plain

ステートの遷移ルール:JumpStart→JumpLoop
・TimeRemainng (比率) for ‘Jump_Start’
・Float < Float
JumpStartのアニメーションが残り50%になった時点で、
JumpLoopステートに移行する。
f:id:shivaT:20150705005806p:plain

ステート:JumpLoop
f:id:shivaT:20150705004913p:plain

ステートの遷移ルール:JumpLoop→JumpEnd
変数名:IsInAir? (空中にいるか?)
「空中にはいない」なので、NOT Boolean関数。
空中にはいなくなった時、
JumpLoopステートからJumpEndステートに移行する。
f:id:shivaT:20150705005340p:plain

ステート:JumpEnd
f:id:shivaT:20150705004927p:plain

ステートの遷移ルール:JumpEnd→Idle_Walk_Run
・TimeRemainng (比率) for ‘Jump_Start’
・Float < Float
JumpEndのアニメーションが残り10%になった時点で、
Idle_Walk_Runステートに移行する。
f:id:shivaT:20150705005621p:plain


いったん終了。