Blenderで作成したキャラクターをUnreal Engineに取り込む。
もくじ
Blenderでの調整
メッシュ
- 原点をワールド座標0にし、回転を0・スケールを1(初期値)にする。
- アーマチュアオブジェクトも同様。
- マテリアルは極力一つにする。
- オブジェクトは極力一つにする。
- (編集しにくければ最終的でよい)
- わかりやすい名前を付ける(オブジェクト名・マテリアル)。
- マテリアル名は、"M_"というプレフィックスを付けておく。
- メッシュをきれいにする。
- ノーマル反転・重複頂点・Nゴン・意図しないUVの重複などを修正する。
- アーマチュア以外のモディファイアは適用しておく。
- (書き出し後に問題が起きないモディファイアならしなくてもいい)
キャラのスケールを揃える
現実のサイズに合うようにキャラモデルのスケールを揃える。
人間キャラなら1.6~1.8mなどとする。
立方体を追加して、スケールZを目標のサイズに変えて指標にするとよい。
(右サイドバー > アイテム > 寸法で確認できる)
ボーン
使うボーンは、特に決まっていないならRigifyのボーンを使う。
Blender内でアニメーションを作りたいならこれが使いやすい。
書き出しする
キャラメッシュとリグを選択し、トップバー > エクスポートで、FBX書き出しする。
アニメーションオプションのNLAストリップ・全アクションは無効化する。
FBXファイル名には、"SK_"というプレフィックスを付けておく。
Unreal Engine
キャラBPを作る
- コンテンツブラウザーで右クリック > ブループリントクラス > キャラクターで、BPを作成する。
- 名前はBP_〇〇とする。
- Self(コンポーネントの最上階層) > メッシュに、自分の作成したスケルタルメッシュを設定する。
- テンプレートの、BP_ThirdPersonCharacterを開いてノードをコピペする。
- これでwasdで移動、スペースでジャンプ、マウスでカメラ操作が可能になる。
- 同様にCameraBoomとFollowCameraもコピペする。
キャラの向きをカメラ前方以外にも向けるようにする
TTPS_03.移動方向にPawn向きを合わせる | ueHow-日本語
キャラクターBPのデフォルト設定では、キャラはカメラ前方以外に向くことができない。
これを向けるように修正する。
(移動入力方向の修正は、テンプレートキャラクターからノードをコピペすれば問題ない)
- Pawnのヨー回転が、ControlRotationのヨー回転に沿うことを無効化する。
- Self > Pawn > Use Controller Rotation Yawを無効化する。
- キャラの向きを変えることを許可する。
- CharacterMovement > キャラクタームーブメント(回転設定) > Orient Rotation to Movementを有効化する。
キャラクターのアニメーションシステムを作る
歩く・走る・ジャンプ中など、状態によって変化するアニメーションシステムを作る。
アニメーションブループリントが必要になる。
アニメーションBPには、普通のBPと同様のイベントグラフと、AnimGraphがある。
イベントグラフの方でキャラの状態(走行中・ジャンプ中など)を判別し、変数に登録する。
AnimGraphの方では、その変数を使って、アニメの動きを分岐させる。
- アニメーションBPを作成し、キャラにそれを設定する。
- 自キャラのBP > Self > Animationタブ > Animクラスに設定する。
- アニメーションBP > AnimGraphにて、右クリックから"State Machine"を新規作成する。
- State Machineを開き、ウィンドウ右下のアセットブラウザから、好きなアニメーションをD&Dで追加する。
- ステートマシン内に入り、右クリック > "ステートを追加"で新規ステートして新規アニメをD&Dしてもよい。
イベントグラフにてキャラの状態を変数にする
- 走っているかどうかを得る。
- イベントグラフにて、Try Get Pawn Owner > Get Velocity > Vector Lengthで、キャラの速度を得る。
- "bMove"という名でBool値にする。
- 10以上ならBool値をTrueにする。
- 歩行中・走行中をなめらかに判別するため、速度を得る。
- 上記のVector Lengthを"Speed"という名でFloat値にする。
アイドル状態を追加する
- Idle(なにもしていない状態)のステートし、"Entry"と接続する。
- アニメーションをループさせる。
- 追加したIdleシーケンスプレイヤーを選択し、画面右の詳細 > 設定 > "Loop Animation"を有効化する。
- アニメーションシーケンスの方でもループを有効にする?
歩行中・走行中をなめらかにする
- ブレンドスペース(1D)というデータを新規追加する(ABS_◯◯とする)。
- そのABSファイルを開き、3Dビュー下の線にWalk・Runアニメーションをそれぞれ追加し、両端に置く。
- "Maximum Axis Value"を最大加速度の値に設定する。
- キャラクタームーブメント(一般設定) > Max Accelerationが最大加速度の値なので、その数値を設定する。
- これで、最大加速度に至るまでは歩行アニメーションが再生されるようになる。
- アニメーションBP > AnimGraph > State Machineにて、右クリック > ステートを作成する。
- 作ったステートの中で、Blendspace Playerを追加する(自分が作成したABSの名前のもの)。
- 自作した"Speed"変数を、None入力ソケットに接続する。
- アイドルステートと走行中ステートを、ドラッグして相互に矢印をつなげる。
- 矢印を開き、"bMove"が有効な場合は走行中、bMoveが無効な場合はアイドルに戻るように設定する。