Blender→UE5 惑星に重力をつけてみた01-PlanetGravity-(備忘録)
環境
Mac mini (M1, 2020)
macOS 14.4.1
Blender 4.1.1
UE5 5.4.1
参考
■こちらの動画を参考にしています。シンプルなのですぐに作成できます。
動画内でも指摘されていますがいくつか問題を孕んでいますがサンプルとして問題はなさそうです。

Blender
■今回は以下のモデルを使用しました。揺れものは大変なのでシンプルに作成しています。こちらをFBXでエクスポートしてUnrealEngineで使用します。

UnrealEngine5 -FBXインポート→リターゲット-
■リターゲットについては以前ブログで紹介したものと同様の工程になります。詳しくはリンク先を参照されてください。(※UE5.4でリターゲット簡略化されましたが、今回使用したモデルとではメッシュが崩れたため以前の方法でリターゲットをしています)

■BP_Third Person BluePrintにキャラクタを設定する。

UnrealEngine5 -Custom Gravity-
Blueprint -親クラスを作成-
1.右クリック。
2.Actorを選択する。
3.BP_GravityFieldと名称を変更する。

1.Functionを追加→Get Gravity DIrectionに名称変更。

2.詳細パネルでInputsをActor(actor)に設定する。

3.詳細パネルでOutputsをGravityDirection(vector)に設定する。
4.3を設定すると表示される。

Blueprint -子クラスを作成-
1.BP_GravityFieldを右クリック。
2.CreateChild Blueprint Classを選択する。
3.BP_GravityFIeldSphereに名称変更。

1.SphereCollisionを追加する。

2.Sphereを選択する。
3.SphereRadiusを1200に設定する。

4.Functionを追加する。
5.Get Graity Directionを選択する。

6.自動で表示される。

7.GetactorLocationでプレイやアクターと球の位置を取得する。
8.GetUnitDIrectionでプレイヤアクターと球の方向を取得する。
9.重力の方向に接続する。

BP_Third Person Character
■BP_Third Person Characterを編集する。

1.EventActorBeginOverLapより親クラスを重力フィールドにキャストする。(右クリックでノードを検索)
2.GetGravityDirectionで重力の方向を取得する。(CharacterMovementをターゲットにする)
3.重力の方向を設定した重力方向に接続する。
4.移動する重力方向を取得。(変数CurrentGravityFieldをSet)
1.CurrentGravityFieldをGet
2.右クリックConvert to Validated Getを選択する。
3.Get CurrentGravityField で変換する。
4.変換後、EventTickに接続する。

1.重力の方向を監視する。これは有効な場合に実行する。
2.重力の方向を取得する。
3.重力の方向に、設定した重力方向に接続する。

1.重力フィールドのオーバーラップが終了したかの確認。
2.他のアクターが重力フィールドにキャストされたことを確認。
3.オーバーラップしているすべての重力フィールドの配列を得る。
4.配列から最初のものを取得する。(0を入力する)
5.現在の重力フィールドに設定する。別のキャストへのキャストが必要。
6.キャストが失敗した場合は現在の重力フィールドに設定する。
7.子のクラスか判断→キャストが失敗した場合は現在の重力フィールドに設定する。
8.配列が0より大きい場合→キャストが失敗した場合は現在の重力フィールドに設定する。
9.CustomEventを設置。重力が変更されたときに実行する。
10.CustomEventを開始時に実行する。

■キャラクタの動きの設定の一部が変更された場合に重力の変更が呼び出されるため、キャラクタの動きに関して、変更する必要がある。
1.カメラの位置を得る。
2.カメラでドラッグすると前方ベクトルが得られる。
3.Add MovementInputに接続。
4.Add MovementInputに接続。

惑星を配置する
1.BP_GravityField_Sphreをレベルに配置する。
2.BP_GravityField_Sphreを惑星用(メッシュ)と同じ位置に配置し大きさを調整する。

Play in Editor -惑星を配置する01-
2つの惑星を配置する
1.惑星とBP_GravityField_Sphreを複製して配置する。

Play in Editor -惑星を配置する02
所感
翻訳をしながら進めたため、何のために何をしているのか理解がおぼつかないところがいくつかありました。作成したキャラクタを使って惑星の上を歩かせたいという目的は果たせた気がします。難しいですが面白いですね。
次回



コメント