Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 4.7と4.8におけるMMDのFBXアニメーションインポートについての問題点と対処方法

前回はUE4でMMDのPMXやVMDをFBXにインポートして使ったりしていましたが、実は現在最新のUE4.7とPreview版の4.8にはそれぞれ別の問題があります。

今回はそれぞれの問題とその対処方法を紹介しておきます。

f:id:alwei:20150511212151j:plain

 UE4.7における問題

まずUE4.7ではボーンやモーフの名前が日本語などのUnicodeに対応していません。UE4のグローバル文字列は最終的にUTF16へと変換されるのですが、この部分にバグがあり、4.7の段階では、日本語の文字は大体"???"のような文字列へと変換されます。

表示はおかしいですが、これでも正常に動くので名前の指定などを間違えなければボーンやモーフもそのものを触る事は可能です。

そして4.7にはこれとは別の問題があり、それはアニメーションのインポートが長すぎるという事です。これは、MMDからFBXに変換する際にpmx2fbxが全フレームにボーンの物理演算をベイクして焼き込んでしまうため、そのまま読み込んでしまうと膨大な処理時間が必要になるからです。普通に読み込めば2時間から4時間程度の時間がかかるはずです。

UE4.8における問題

実は4.8では4.7における上記の問題を両方とも解決しています。しかし別の問題が発生している状況です。ボーンやモーフの日本語表示に対応した結果、アニメーションインポート時に日本語などの文字列をボーンに含んでいると、なんとエラーが出て読み込めません。

これは表示に対応しましたが、アニメーションインポート側でボーン名を比較する部分がUnicode文字列に対応しておらず、この部分に引っ掛かり正確にボーンを入力しても必ずエラーとなってしまいます。

現在の4.8には日本語ボーンを含むアニメーションをインポートさせる手段がありませんので、MMDが日本語ボーンを含んでいる場合には4.7を使わざるえません。しかしそうすると相変わらず長いインポート時間に悩まされます…今回はその部分の対処方法を紹介しておきます。

デフォルトのアニメーション圧縮アルゴリズムの変更

実はインポートが長いのはデフォルトで使われているアニメーション圧縮アルゴリズムが原因です。詳細はドキュメントにあります。

アニメーション シーケンス | Unreal Engine

デフォルトでは"Remove Linear Keys"が使われているようですが、これが長い原因のようです。これを実は変更する事ができます。

以下黒幕さん(@BlackMa9)のツイートから引用。

 というわけで、"Project/Save/Config"以下にある、"Engine.ini"に、

[AnimationCompression]
DefaultCompressionAlgorithm=AnimCompress_BitwiseCompressOnly

と追加しておきます。これでアニメーションインポートは長くても5分程度で終了します。もう数時間以上待つ必要はありません。

バグの修正予定は?

4.8 Preview 1では現状まだ修正されていませんが、私がこのバグの原因を突き止めて修正したパッチをエピックさんに送りましたので、近いうちに修正されると思います。それまでは4.7を使い続けるか、4.8で日本語ボーンをASCIIのみの文字列に変換したものを使うしかありません。4.8の正式リリースでは修正されていると良いのですが。

2015.06.12追記

バグはUE4.8正式版では優先度の問題で修正されませんでしたが、中の人から4.9で対応しますとのコメントをいただきました。

2015.07.29追記

UE4.9 Preview 1にて上記の問題が解決されている事を確認できました。

 FBXインポートから日本語ボーンを含んだものでも、メッシュやアニメーションが一発でインポート可能になりました。