[UE5] Blenderで制作した複数アニメーション付きの家具を、UE5でセットアップする

Pocket
LinkedIn にシェア
LINEで送る

アニメーションに不得手なこともあって結構苦戦したので備忘録として。

まあ建築ビジュアライゼーション界隈あるあるですけど、アニメーション製作はみんな苦手だと思います。

やり方

今回はこちらの古家具アセットのアニメーションでやっていきます。
扉が3つと、引き出しが3つ。計6か所がアニメーションするようにしたいんです。

ちなみに後日Fabで販売予定です。

要件

製品としては、こういうアセット構成にしておきたいんです。
・6か所のアニメーションが独立して動作するように作っておきたい。
・例えば使ってくれる方がUE5側で「1クリックすると2つの扉が同時に開かせたい」とか「特定のインプット(例えば[F1]キーを押す)すると左の引き出しが開かせたい」とか柔軟に実装できるようにしたい。

1. Blenderでモデリングして、アニメーションをセットしておく

Blenderでのアクションとかモーションの設定は省略します。
とりあえず6つのパーツがそれぞれに対してアニメーションをセットしておきました。

2. Blenderでエクスポート

今回はFBXでエクスポートします。
オプションの「Bake Animation」は必ずONにしてください。

ここでは「kagu.fbx」として説明していきます。

3. UE5でインポート

「kagu.fbx」をUE5に入れます。
 ・[Skeletal Mesh]はONにしましょう。
 ・[Import Animation]もONです。

4. 要らないアセットは削除してもいい

アニメーションシーケンスがたぶんすごい量になっていると思います。

私としては6個あればいいはずですから、ダブルクリックしてアニメーション再生させてみて、関係ないor重複しているアニメーションシーケンスのアセットは削除してしまいます。

結果、アニメーションシーケンスは6つだけになるはずです。

5. アニメーションブループリントを作成する

コンテンツブラウザで右クリックして「アニメーションBP」を選びます。 

スケルトンを選択する画面が出るので「kagu_Skeleton」を選択して[作成]します。

するとアニメーションブループリントのアセットができます。
ファイル名は「kagu-Anim_BP」としました。

「kagu-Anim_BP」をダブルクリックで開いて、右クリックして「Default Slot」ノードを作成します。

「Default Slot」と「Output」を接続します。
「保存」して終了。

6. アニメーションモンタージュを作る

アニメーションシーケンスの全6つを選択して右クリックし「AnimMontageを作成」を選択します。

するとアニメーションモンタージュというアセットが6つ作成されます。

アニメーションモンタージュを開き[アセット詳細]ビューの[Enable Auto Blend Out]をOFFにします。
この設定をするとアニメーションしっぱなしになります。
今回の箪笥の扉の場合だと、
・設定がONの場合:扉が開いて、閉じてしまいます。(アニメ位置が0.0に戻ります。)
・設定がOFFの場合:扉が開いたところで止まります。(アニメ位置が1.0で終了します。)
これを6つ全部に設定します。

7. アクターのブループリントを作る

これで最後。
右クリックで「ブループリントクラス」を選択。

ファイル名は「kagu-BP」としました。

「kagu-BP」をダブルクリックで開いて、コンポーネントで追加→「Skeletal Mesh」を選択。

詳細の[Skeletal Mesh]には「kagu」を割り当てます。

Skeletal Meshを選択して詳細の[Animation Mode]は「Use Animation Blurprint」を選びます。

[Anim Class]は「kagu-AnimBP」を割り当てます。

8. 家具を配置する

ワールドに配置するのは「kagu-BP」です。いつも通り配置しましょう。

実験1

まずは「箪笥をクリックすると右扉が開く」という実装だけしてみましょう。

0. 準備
レベルブループリントあたりでコントローラーと「Show Mouse Cursor」と「Enable Click Events」ノードを接続して有効にしておいてください。
これでPLAY中にマウスカーソルが表示されて、マウスクリックするとOnClickイベントが有効になります。

1. コンポーネントのSkeletalMeshを選択した状態で、イベントグラフで右クリックし「ActorOnClicked」ノードを作成。
さらに「モンタージュを作成 (Play Montage)」ノードを作成してActorOnClickedノードと接続します。
  Play Montageノード
  ・In Skeletal Mesh Component →コンポーネント「SkeletalMesh」を接続。
  ・Montage In Play →アニメーションモンタージュ「kagu_door_right_Anim_Montage」をプルダウンから選択。

あとコンポーネントのSkeletalMeshを選択して、[詳細]ビューの[コリジョン]にある「コリジョンプリセット」は「CollisionDynamic」とかにしておきます。「NoCollision」だと反応しませんので注意。

2.PLAYしてみましょう。
箪笥をどこでもいいのでクリックすると、右扉が開くことが確認できました。

実験2

ここまでくるともうちょっと欲が出てきます。
「それぞれのパーツをクリックすると、クリックされたパーツがアニメーションする」みたいなことがしたいですよね。

1.SkeletalMeshの「コリジョンプリセット」は「NoCollision」に戻しておきます。これが割と重要。

2.コンポーネントでBox Collisionを6つ追加します。
6つのBoxはすべてパーツの位置といい感じに重なるようにしておきます。

3.Box Collisionの「コリジョンプリセット」は「OverlapAllDynamic」とかに変更します。

4.さらにBoxについて、[詳細]ビューで[イベント]の[On Clicked]を選択して、イベントを用意します。
「OnClick(Box_door_right)イベント」ノードからPlay Montageノードを接続します。
この作業を6つのOnClickイベントに対して実装していきます。

5.PLAYしてみましょう。
箪笥のそれぞれのパーツをクリックするとアニメーションすることが確認できます。

トラブルシューティング

私がハマったトラブルたちです。
Q. 設定は完璧だと思うんだけどなぜかアニメーションしない。
A. 手順5の、アニメーションブループリントの「Default Slot」のセットができていないのかも。

Q. クリックしても反応しない。
A. 実験1の0.準備の設定をし忘れているのかも。

Q. Boxコリジョンをちゃんと設定したのにクリックしても反応しない。
A. SkeletalMeshのコリジョンプリセットがNoCollisionになっていないからかも。

参考サイト

アニメーションを再生する方法(Animation Blueprint編)【UE5,UE4】 – ZENN
アニメーションモンタージュとは?自然にアニメーションを再生させよう [UE5入門続編 #1-9] – ZENN
Hello, Play montage does not work. – Unreal Engine Forums
Animation Montage – Unreal Engine Documents

管理人が読んだおすすめの建築本

    

コメントを残す