【UE5】Blenderでテスト用アニメを作ってUE5にインポートする方法
プログラマーの尾関です。今回はBlenderで作ったアニメーションをUE5でインポートして再生する方法について紹介します。
今回の記事を書くことになった理由
ゲーム開発の現場では、アニメーションデータの作成や検証を素早く行えることが大きな強みとなります。今回この記事を書こうと思ったきっかけは、プログラマー自身がテスト用のアニメーションモデルを作成し、実際にUE5上で動作確認できるようにしたいと考えたからです。
仮データを自分で用意できれば、アートチームからの最終データを待たずにゲームの実装や検証を進めることができ、開発効率が大きく向上します。
ということで、BlenderとUE5を組み合わせて、テスト用アニメーションを作成・インポートする手順を解説していきます。
テスト用モデルの作成
まずは Blender を起動してテスト用モデルを作っていきます。

ドアを支える部分を作る
Blenderを起動して最初に配置されているCubeを使ってドアを支える部分を作成します。


- トランスフォーム
- 位置
- X: 0m
- Y: -1m
- Z: 1m
- スケール
- X: 0.1
- Y: 0.1
- Z: 1.0
- 位置
メッシュの名前は「Fulcrum」にしておきます。

扉の部分を作る
「追加 > メッシュ > 立方体」を選んで立方体を作成します。

回転する扉部分を作ります。


- トランスフォーム
- 位置
- X: 0m
- Y: 0m
- Z: 1m
- スケール
- X: 0.1
- Y: 0.85
- Z: 1.0
- 位置
扉の部分のメッシュの名前は「Door」にしておきます。

アーマチュアの作成
次にアーマチュアを作ります。
まずは「Z」キーを長押しして「ワイヤーフレーム」を選び、メッシュの表示を切り替えます。

これはボーンの表示をわかりやすくするための設定です。
次に「SHIFT+A」で追加メニューを表示して「アーマチュア」を選びます。

すると原点にアーマチュアのボーンが追加されます。

「G」キーを押して移動モードにし、ドアを支える部分あたりに移動します。

位置としては (X, Y, Z) = (0, -1, 1) あたりです。

続けて回転を X = -90° にして横向きにします。

そうしたら「Door」メッシュをクリックして、「CTRL」を押しながらアーマチュア階層のボーンをクリック。

そしてメッシュやボーンがあるビューの上で「CTRL+P」を押して、「自動のウェイトで」を選びます。

するとアーマチュアの下にDoorメッシュが移動してボーンに関連付けされました。

Zキーを長押しして「レンダー」に戻します。

末端のボーンを選んだ状態で「回転Z」から扉を回転できるようになりました。


アニメーションの作成
編集モードの設定
Blender上部にあるメニューから「アニメーション」を選んでアニメーションモードにします。

アニメーションモードの設定
Blenderの下側のアニメーションが「ドープシート」となっている部分を「アクションエディター」に変更します。
そして「+新規」を選びます。

作成したアクションを「door_idle」にします。

フレームを「0」に移動。

アーマチュアの末端のボーンを選んで「回転Zのキー」のアイコンをクリック。

するとキーフレームが設定されました。

そしてフレームを「20」に移動。

待機アニメは特に何もしないのでそのまま "回転Zのキーフレーム" をクリックして設定します。

ドアが開くアニメーションの作成
別のアクションを作成します。新規アクションアイコンをクリック。

作成したアクションの名前を「door_open」に変更。

念のため、アクションが2つあることを確認します。

フレームが「0」にあることを確認。
そして回転Zのキーフレームをクリック。

そしてフレームを「20」に移動。

回転Zを「65°」あたりにしてキーフレームアイコンをクリック。
これでドアが開くアニメーションが作れました。

なお、終了の部分を「20」にすると繰り返し確認がしやすくなります。

FBXの出力
出力前の設定
Unreal Engineで読み込めるFBXを出力する前にやるべきこととして、ここの「ボーン」というルートボーンは “root” にリネームするのが推奨されるようです。

このようにリネームしました。

また「アーマチュア」の文字も "anim" などに変えておいた方が良さそうです。

FBXの出力
アニメーションを出力するときには「アーマチュア」を選択します。

FBXの出力はメニューから「ファイル > エクスポート > FBX」を選びます。

書き出し設定は以下のようにしました。
注意点として「スムージング」は「面」または「辺」にしないと、Unreal Engineでインポート時に「スムージンググループが見つからない」というエラーになることがあります。

ここまでのデータ
ここまでの作業で作成した Blenderのデータと FBX ファイルを添付しておきます。
Unreal Engineでのインポート
確認用のプロジェクトは何でも良いですが、今回はサードパーソンのテンプレートを使ってみます。

FBXのインポート
再インポートを考えると正しい場所に置いたほうが良いですが、今回はテストデータなのでそのまま FBX をコンテンツドロワーにドラッグ&ドロップ。

するとインポートダイアログを表示されるので「インポート」ボタンをクリック。
「インポート」ボタンが押せない場合は “Import Only Animations” を OFF にすると押せるようになります。

特にエラーがなければ以下のアセットがインポートされます。

- スケルタルメッシュ
- アニメーションシーケンス: door_idle
- アニメーションシーケンス: door_open
- PhysicsAsset (物理アセット)
- Skeleton (スケルトン)
- Material (マテリアル)
アニメーションブループリントの作成
Animブループリントの作成
「スケルタルメッシュ」を右クリックして「作成する > Animブループリント」からアニメーションブループリントを作成します。

アセット名は「ABP_Door」としました。

ステートマシンの作成
何もないところを右クリック、日本語で「ステートマシン」で検索して “State Machine” を作成します。

名前を「Top State Machine」にして “Output Pose” に接続します。

Idleステートの追加
「Top State Machine」をダブルクリック。”Entry” ノードを伸ばして「ステートを追加」でステートを追加します。

ステートの名前は “Idle” とします。

“Idle” をダブルクリックして Idleステートを編集。アセットブラウザから “door_idle” を追加して Output に接続します。

「コンパイル」ボタンをクリックして正常にコンパイルされることを確認します。

“Top State Machine” を選んで State Machine に戻ります。

Openステートの作成
“Idle” ステートを伸ばして「ステートを追加」を選択。

ステート名を「Open」にします。

Openステートをダブルクリックして、”door_open”アニメーションシーケンス を Output に接続します。

「コンパイル」をクリックすると以下のような警告となります。

[1597.54] ABP_Door のコンパイルに成功しましたが、1 件の警告があります [34 ミリ秒] (/Game/Door/ABP_Door.ABP_Door)
これは Idle ステートから Open ステートへの遷移が実装されていないためです。
状態遷移を実装するために「Top State Machine」をクリックして戻ります。

ステートマシンのトランジションルールのアイコンをダブルクリック。

左下にある変数定義から「+」アイコンをクリックして変数を追加し、名前を「bOpen」の Boolean型で作成します。

そして Result に接続します。

「コンパイル」をクリックで警告が消えました。

状態遷移の動作確認
Top State Machine” に戻って、詳細タブから 変数 “Open” のデフォルト値を ON にします。

すると Openステートに遷移して扉が開くアニメーションが再生されます。

Idleに戻る遷移を実装する
開いた扉が戻る遷移ととして、OpenからIdleに遷移する処理を作ってみます。
OpenステートからIdleステートに線を伸ばして接続します。

そしてトランジションルールアイコンをダブルクリック。
bOpen変数を「Not Boolean」で反転させて、Resultに接続します。

Open変数をON/OFFすると、ドアの開閉が確認できました。

ブループリントクラスでアニメーションを再生する
最後にブループリントクラスでアニメーションを再生してみます。
ブループリントクラスの作成
任意の場所で「ブループリントクラス」を作成。

親クラスは「アクター」にしておきます。

名前は「BP_Door」としておきました。

コンポーネントの追加から「スケルタルメッシュコンポーネント」を追加。

スケルタルメッシュコンポーネントの詳細から「Animation > Animクラス」に「ABP_Door」を指定。またメッシュには「Door002 (ドアメッシュ)」を指定します。

プレイヤーが近づいたら開くようにする
イベントグラフを開いて Tickイベントでプレイヤーが近づいたら bOpen フラグを ON/OFF するようにしてみました。

レベルに配置して動作確認
BP_Doorをレベルに配置して動作確認します。

プレイヤーが近づいたら扉が開くようになりました。

おしまい
以上、Blenderで作成したアニメーションメッシュをUnreal Engineで再生する方法でした。
テストデータ作成などに活用できれば幸いです。