前フリ
Blenderで作ったモデル(SkeletalMesh)をUE4へインポートするために、解決しなければならない問題があります
それはScale100倍問題です
Blenderでの通常手順でMeshを作り、Armatureを作成し、SkinningしてFBX形式でExportしてUE4にImportすると、なんとSkeletonのScaleが100倍になってしまいます
この状態になるとUE4上でのAnimationの扱いに大きな問題が生じます
(例えばSkeletonに対してAnimationがものすごく小さい…など)
他にも問題はありますが、一番大きな問題がコレでしょう
手作業で作る
まずは先人の知恵をもとに、手作業でUE4用のFBXを作る方法を整理しましょう
参考資料
http://kanianthi.hateblo.jp/entry/2018/06/10/174124
まずScale問題そのものを解決する手法ですが、以下の一連の操作が必要になります
- 通常通りMeshを作り、Armatureを作り、ParentしてSkinningする
- ArmatureのScaleを100倍する
- この時点でMeshの大きさが100倍になる
- ArmatureのScaleを適用(Apply)する
- ArmatureのScaleを0.01倍する
- この操作でMeshの大きさがもとに戻る
- Meshだけを選択して、Scaleを適用する
- このとき、ArmatureのScaleは0.01になっていること
Animationを作る場合は、この一連の操作をした後で行います
先にAnimationを作ってしまうと、ArmatureのScaleを操作した影響でLocationの変化を伴うAnimationが破綻してしまいます
そしてこの手順、結構面倒な問題を抱えています
それは、Armatureのスキニングのやり直しが容易でないことです
ちょっとスキニングをやり直したい、とか、モデルを作り直したい、とか思ったとしても、一旦Parentを解除してしまうともう一度この手順を最初からやり直すことになります
変更したScaleを
また、手戻りを少なくするには、Animationを作る前にScaleを修正する必要があり……
もうちょっとなんとかならないものか、と思ってしまいます
AutoRigProがあるじゃないか
Auto-Rig Pro - Blender Market
よく知られているBlenderアドオンの一つに、AutoRigProがあります
このAutoRigProにはGameEngine向けのFBXExporterが実装されており、これを使えばArmatureのスケール問題は解決できます
UE4のHumanoidRig…いわゆるEpicSkeletonにもしっかり対応されているため、人形のキャラクターを作る際はぜひコレを使うと良いでしょう
ただし、このアドオンに実装されているExporterはあくまでAutoRigPro用のExporterであり、それ以外のArmatureには対応していません
つまり、独自に作ったArmatureに関しては、別の方法で対応する必要があります
めんどくさいから自動で解決したい
めんどくさい手順をすべて省くため、UnrealEngine4向け特化のFBXExporterを作りました
X4UE: Exporter for UnrealEngine
https://github.com/Indie-us-Games/X4UE
現在、Indie-us GamesのOSSとして公開しています
使い方は簡単
- アドオンをBlenderにインストールする
- MeshとArmatureを通常のScaleでセットアップする
- 通常のScale(1, 1, 1)のままActionを作成する
- ExportするArmatureを選択し、メニューから
Export > FBX for UnrealEngine
を選択する
これだけです
Scaleを手動で100倍にしたり0.01倍にしたりする必要はありません
Blender上でScaleを変更しないので、Armatureの取り外しも気軽にできますし、Animationを作ったあとでのSkinning修正も通常通り行えます
また、ArmatureやAction関連であったらいいな、と思う便利機能もいくつか実装しています
- Actionの完全削除
- Armatureの1ButtonUnbind
なお、今後も機能追加していくつもりなので、こういう機能がほしい、というのがあればIssueを投稿してください
もちろんOSSですので、改造もOK、フィードバックも大歓迎です