WorldMachineで作成した地形をUEにインポートする

WorldMachineで作成した地形をUEにインポートしてランドスケープを作成する方法。

1. WorldMachineで作成した地形データを出力する

WorldMachineで地形を作成したら、最後に「Height Output」デバイスにつなげる。

「Height Output」デバイスをダブルクリックして詳細を設定する。
「Filename」で保存先のディレクトリとファイル名を指定する。
「File Format」は「16bit RAW」にする。
以上の設定を終えたら「Write to Disk」をクリックして書き出す。


2. UEにインポートする

UEのエディタでLandscapeModeに切り替え、ランドスケープを作成する。
各種設定を行い「import」をクリックする。

ランドスケープマテリアルを作成する

以下の要件を満たすランドスケープマテリアルを作成する。

  • 草と岩の2つのレイヤーを持つ
  • カメラからの距離に応じてタイリングを調整する

1. マテリアルを作成する

新しいマテリアルを作成し、以下のようにノードを組む。

草のテクスチャ。遠距離用は近距離用をコピーして作成。近距離用と遠距離用のベースカラー・ラフネス・ノーマルそれぞれのテクスチャを「LinearInterpolate」でつなぐ。

「LinearInterpolate」のAlphaには以下をつなぐ。

岩も同様に作成する。

「LandscapeLayerBlend」ノードを配置し詳細を以下のように設定する。
ここで設定したPreviewWeightの設定に従ってプレビュー用の見た目とランドスケープにマテリアルを割り当てた際の初期状態が決まる。

この「LandscapeLayerBlend」ノードを各種テクスチャ用にコピーして3つにし、各種テクスチャをつなげる。



2. マテリアルインスタンスを作成する

作成したマテリアルからマテリアルインスタンスを作成し、各パラメータを調整する。



3. ランドスケープの設定

ランドスケープの「Landscape Material」に作成したマテリアルインスタンスを割り当てる。

そしてランドスケープ編集モードに切り替え、ペイントタブを開く。
Layersに各レイヤーのLandscapeLayerInfoObjectを設定する。
LandscapeLayerInfoObjectが未作成の場合はプラスボタンから新規作成する。

アニメーションシーケンスを編集する方法

アニメーションシーケンスを編集して一部分をカットする方法。

1. レベルにスケルタルメッシュを配置

レベルに編集したいアニメーションシーケンスのスケルタルメッシュを配置する。


2. レベルシーケンスを作成

「Cinematics > Level Sequence」からレベルシーケンスを作成する。

OutlinerからスケルタルメッシュをSequencerにドラッグ&ドロップする。

Sequencer上の「Animation」に編集したいアニメーションを選択する。

アニメーションを編集して保存する。



3. アニメーションシーケンスをベイクする

Sequencerで「スケルタルメッシュを右クリック > Bake Animation Sequence」でアニメーションシーケンスを作成する。

キャラの足元に丸い影を表示する

キャラクターの足元に丸い影を表示する方法。

1. テクスチャの用意

以下のような影の画像を用意し、エディタにインポートする。


2. マテリアルを作成

以下のようにしてマテリアルを作成する。


3. キャラクターにアタッチする

Planeをアタッチしてマテリアルに先ほど作成したマテリアルを割り当てる。

そして位置や大きさを調整する。


4. 表示・非表示を動的に切り替えられるようにする

影のPlaneは Hidden in Game にチェックを入れておきデフォルトでは表示されないようにする。

そして ShowFakeShadow 関数を作成し動的に表示・非表示を切り替えられるようにする。

1つのアニメーションBPを継承して各キャラ・各装備のアニメーションに対応する方法

アニメーションブループリントを一つ作成し、それを継承して各キャラクターの各装備分のアニメーションに対応させる。


1. ベースとなるアニメーションBPを作成

ステートの構成

AnimGrapのトップ階層にはStateMachineとモンタージュ用のSlotを配置する。

StateMachineは以下のように作成する。


跳躍以下のStartとEndのステートは「State Alias」である。
StartのStateAliasは自分自身のステートを含んでいるとエラーになるので、例えばLeapStartならLeap系のステートはチェックを外す。

EndのStateAliasは「Idle」のみを設定。

ステートの中身

ステートの中はSequencePlayer(またはBlendSpacePlayer」など)を置き、SequenceはDynamicにして変数化しておく。
再生速度も動的に変えたいアニメーションについてはPlayRateも同様にする。


ステートの遷移

Startからの遷移はフラグ変数を定義し、それがTrueになったら遷移するようにする。

Endへの遷移はアニメーションの再生が終わったら遷移するように「Automatic Rule Based on Sequence Player in State」にチェックを入れる。

またStartTransitionEventにイベントを定義し、アニメーションの再生が終わったらフラグをFlaseにするようにする。

アニメーション制御用変数の更新

MoveSpeedなどのアニメーション制御用の変数の更新処理を定義する。

ルートモーションの設定

ルートモーションを使用する場合は、「Class Defaults > Details > Root Motion」を「Root Motion from Everything」に設定しておく。



2. 子アニメーションBPを作成

作成した「ABP_Base」から子クラスを作成し、「ABP_Player_UnArmed」や「ABP_Player_Longsword」などの子アニメーションBPを作成する。

そしてClassSettingsから対応させたいキャラクターのスケルトンを設定する。

ClassDefaultsから各アニメーションを割り当てる。



3. キャラクターBPの編集

キャラクターBPの全体ベースクラスに、アニメーションBPのフラグを制御する関数を定義する。

ボーン毎のキャラクターBPのベースクラスに抜刀や納刀のタイミングでアニメーションBPの切り替え処理を定義する。

アニメーションBPの切り替え前後でポーズが大きく変わると服などの物理アセットが一瞬暴れるので、切り替え前後でポーズが変わらないようにアニメーションの遷移を工夫している。
納刀時はアニメーション遷移の工夫だけでは解決できなかったため、キャラクターBPの全体ベースクラスで納刀モーションを再生してから完了するまで待機してからアニメーションBPの切り替えを行うようにした。

TPSカメラを作成する

デフォルトのPlayerCameraControllerを使用してシンプルなTPSカメラを作る方法。

プレイヤーキャラクターを作成

プレイヤーキャラクターのブループリントに、スプリングアームとその子にカメラのコンポーネントを追加する。

スプリングアームのTargetArmLengthとカメラのFOVをいったん90050に設定する。


プレイヤーコントローラーを作成

プレイヤーコントローラーに以下のブループリントを組む。

カメラ操作


プレイヤー移動


回転の設定

カメラの横回転とプレイヤーの横回転を同期させ、プレイヤーは常にカメラが向いている方向を向きながら移動するようなカメラの設定を行う。
プレイヤーキャラクターのブループリントで設定をしていく。

「Class Defaults > Details > Pawn」で「Use Controller Rotation Yaw」にのみチェックをいれる。

「Character Movement > Character Movement (Rotation Settings)」で「Orient Rotation to Movement」のチェックを外す。

「Spring Arm > Details > Camera Settings」の「Use Pawn Control Rotation」にチェックをいれる。

モジュラーキャラクターの使用方法

複数のスケルタルメッシュで構成されるモジュラーキャラクターを使用する方法。

キャラクターブループリントの構築

キャラクターブループリントでMeshの下に必要なスケルタルメッシュを追加する。

親階層となる「Mesh」には顔のスケルタルメッシュを設定する。

初期化時に下記を実行するようにする。