UE5 で Skeletal Mesh Editing Tool を使って、物理挙動で動くだけのキャラクターを作る

第21回UE5ぷちコン|株式会社ヒストリア で以下の作品を提出しました。

第21回UE5ぷちコン 提出動画「Hand Push Sumo」 - YouTube

このゲームでは、Box や Sphere だけで構成された簡素な物体がプレイヤーキャラクターとなっています。

ただボタンを押したらキャラクターが腕を伸ばして相手を押すという、いわばレトロな対戦パンチゲームのような雰囲気を出すには、これぐらいがちょうどいいだろうという意図での選択でした。

時間が無くてプロトタイプで作ったキャラクターで進めるしかなかったというのもあります 🤣

このキャラクターはアニメーションは一切使っておらず、 Simulate Physics を有効にした状態で、ただ空中に浮いた腕を前に押し出す(そして自動で戻る)ということだけを行っています。

本記事では、このキャラクターを UE5 のみ で作成した過程を簡単にご紹介します。(本記事はコードがほとんど無いのでサンプルプロジェクトはありません)

空のステージを用意する

これは単に作業がしやすいからです。

既存のレベルを使うにしても、原点で作業した方が数値の設定がわかりやすいので良いとおもいます。

Modeling Tool でキャラクターの Static Mesh を作る

まずはキャラクターのメッシュを作ります。Modeling Mode に切り替えましょう。

1. Box 配置

何も無いので、まずは「Body」になる Box を配置します。

座標は原点にしておきます。

2. Body を Triangle Edit で調整

Mesh メニューにある、Triangle Edit で Body を調整していきます。

一つの面は三角が2つあるので、それらを選択し移動させて形状を変えていきます。今回は以下のように横長の形にしています。

また、今回は X がキャラクターの前面として作っているため、上記でも長いのは Y 方向です。

5. Sphere を設置し、縮める

これは頭部になります。今回は 0.6 倍しています。Pivot が下にあるので位置を最初に決めることができます。

初期サイズ 0.6倍後

6. 腕を作る

こちらも Box で作ります。Body 同様に形状を変えて、 最後に Pivot を変更します。

a. 形状変更 b. Pivot変更
c. 複製して両側に d. 少し Body から離す

Pivot 変更 (Edit Pivot) は XForm メニューにあります。

7. Merge して一つのメッシュにする

ここまでで作成したすべてのメッシュを選択した状態で XForm メニューの Merge でまとめます。

Pivot が真ん中になっていると思うので、足元 (原点で作業しているなら原点) に変えておきます。

そうすると、Outliner の表示が Combined の一つになっており、またそのメッシュ本体も以下のようにレベルがある場所と同じところの _GENERATED フォルダ内に保存されているはずです。

Contents Browser の Thumbnail Edit Mode でサムネイルの見た目を変えておくと便利です。
また、ここではこの Static Mesh の名前を SM_Study と名称を変更しています。

Skeletal Mesh Editing Tool でスケルタルメッシュを作る

1. プラグイン有効化

UE5.3.2 の時点ではまだデフォルトで有効では無いの有効化します。

  1. スケルタルメッシュに変換

Contents Browers で先程の Skeletal Mesh のコンテクストメニューから変換を実行します。

今回は Create New です。

そうすると、Skeleton と Skeletal Mesh が作成されます。

  1. Skeletal Mesh を開いて Root を確認

Pivot の変更がされていれば Root が以下のように足元になっているはずです。

  1. Skeletal Mesh の編集

引き続き Skeletal Mesh の画面です。
左のメニューに Skeleton があるはずです。もしなければ以下の上部の Editing Tools が有効になっているか確認してください。

さっそく Edit Skeleton してきます。

  1. Bone をつけていく

Edit Skeleton した状態で右ペインの Skeleton Tree にいくと、New Bone ができるようになっています。ボタンからでも Root のコンテクストメニューでも大丈夫です。(Edit Skeleton しないと New Bone が出ません)

最初は慣れないかもしれませんが、New Bone すると新しい joint が作成されるので、それを選択した状態で移動させます。

今回は最終的に以下のようにしました。

upper_arm_, lower_arm_ に関しては、Left 側だけを作って Mirror して複製しています。

Left 側を作り選択 Mirror を実行
複製される

Mirror に関してはデフォルトでは X 軸で Mirror されるようになっているので Y に変更しています。

6. Skin を付けていく

Skin に関しては 左クリックで塗るCtrl + 左クリックで消す だけここでは使います。

では、左の Skin メニューから、一度 Bind Skin し、そのまま Edit Weights していきましょう。

作成直後はこんな感じです。

今回は以下のようにしています。

Root spine_01 neck head
upper_arm_l lower_arm_l upper_arm_r lower_arm_r

上段は、Bind Skin したままです。
下段の arm 系は自身の arm 以外の weight を 0 に塗り直しています。それだけです。

私も Skin Weights は意図なくやっているので、参考にはならないと思います 😵

7. 確認する

Skeleton の画面に移動して、upper_arm_l などを動かして見ると、Skin Wieght の状況が確認できると思います。

ここまでで、Skeletal Mesh Editing Tool を使う部分は終わりになります。

Physics Asset を付ける

Physics Asset での目標は、「腕だけ前後に振る動きができる」というものです。

1. 生成し大きさを調整する

Contents Browser の Skeletal Mesh のコンテクストメニューから作成できます。

初期の生成メニューでは Capsule から box にだけ変えます。

生成直後は以下のような感じです。

まずは head だけ Sphere で作り直します。おそらく head と同じサイズになります。

以下のように大きさをメッシュに合わせます。neck 部分は少し spine_01 (body) を小さくして head の下に差し込んでいます。

spine_01 は足元まで延ばしておきます。Simulate Physics を ON にした時に倒れないようにするためです。

2. Constraint を調整する

upper_arm_l(r) に関するもの以外の Constraint を以下のように角度もロックします。

続いて upper_arm_l(r) に関する Constraint の設定です。以下に右側の例だけ示します。

対象 設定 状態

ただ、Constraint の方向によっては Angular Limits の設定だけをしても方向が異なる場合があります。
その場合は、回転ツールで Constraint 自体を回転させたり、Swing2 以外にしてみるなどしてみてください。

目的としては、腕の動きを下方向の X 方向にだけ限定したい というだけです。

Blurprint で動かす

1. 基本的な設定

作成した Skeletal Mesh を使って Pawn をベースにした BP を作成します。

Components Viewport

当然ながら SkeletalMesh の Simulate Physics は ON にしておきます。

2. Event Graph

腕を前に押し出すだけです。

3. Level Blueprint から呼び出す

先ほどの Pawn に Posses してもいいのですが、今回は雑に Level Blueprint から呼び出します。

レベルに配して参照を直接取得して以下のようにします。

4. 動作確認する

今回は以下のような動きになることを確認しています。

youtu.be

まとめ

Skeletal Mesh Editing Tool を使うことで、これまで Blender 等でする必要があった作業が(どの程度かはわかりませんが)代用できるようになりました。

まだ Experimental で発展途上だとは思いますが、可能性を感じる機能だと思います。

参考記事