前回はUE4でMMDのPMXやVMDをFBXにインポートして使ったりしていましたが、実は現在最新のUE4.7とPreview版の4.8にはそれぞれ別の問題があります。
今回はそれぞれの問題とその対処方法を紹介しておきます。
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を使わざるえません。しかしそうすると相変わらず長いインポート時間に悩まされます…今回はその部分の対処方法を紹介しておきます。
デフォルトのアニメーション圧縮アルゴリズムの変更
実はインポートが長いのはデフォルトで使われているアニメーション圧縮アルゴリズムが原因です。詳細はドキュメントにあります。
デフォルトでは"Remove Linear Keys"が使われているようですが、これが長い原因のようです。これを実は変更する事ができます。
以下黒幕さん(@BlackMa9)のツイートから引用。
UEの4.7までのFbx(anim付き)読み込みが遅い理由が間違いなければ分かった気がする。AnimSequenceアセット生成時にPostProcessSequence内で圧縮しており4.7だとEngine.iniにてRemoveLinearKeysのアルゴリズムが指定されてる
— 黒幕 (@BlackMa9) 2015, 4月 25
(続き) 今のmasterブランチでは先のini内でDefaultCompressionAlgorithmの項目がなくなっている。この辺りの経緯はまだ不明だけど、AnimationSettingsの初期値(BitwiseCompressOnly)が新しく指定されている模様。
— 黒幕 (@BlackMa9) 2015, 4月 25
(続き2) で4.7ならPJ/Save/config配下のEngine.iniに追加でBitwise等使いたい方式だけを指定すれば圧縮アルゴリズムの選択が変わるので早くなるみたい。 https://t.co/aVQcYFRbxM
— 黒幕 (@BlackMa9) 2015, 4月 25
(続き3) 調査不十分だけど4.7系でEngine.ini記載する最低限はこんな感じかも(お試しで方式だけ変更した例) pic.twitter.com/n2F24QEQEI
— 黒幕 (@BlackMa9) 2015, 4月 25
というわけで、"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で対応しますとのコメントをいただきました。
@aizen76 はい…すみません、4.8向けにはクリティカルなバグへの修正しか入れられないタイミングだったので…様々なモデルで問題ないか検証する時間もなく4.9に向けて対応させていただけると助かります。m( _ _)m
— シモダジュンヤ Jun Shimoda (@junyash) 2015, 6月 12
2015.07.29追記
UE4.9 Preview 1にて上記の問題が解決されている事を確認できました。
UE4.9 Preview 1。MMDからのモデルも日本語名ボーンありでインポート一発でアニメーション再生まで出来るようになりましたね。これでMMDからの人はやりやすくなるかな。 pic.twitter.com/VFf3hHzpNu
— alwei@夏コミ3日目 東R44a (@aizen76) 2015, 7月 29
FBXインポートから日本語ボーンを含んだものでも、メッシュやアニメーションが一発でインポート可能になりました。