【Unity】.blendのインポート挙動を上書きするスクリプト

Unityは.blendのインポートに対応しています。 その挙動がUnityの仕様変更によって大破壊されてます。 キレちゃった。

何が問題なのか

.blendをインポートすると従来は各Actionを別々のAnimationとしてインポートできてました。

好きな数だけAnimationClipを作ってそのソースActionをドロップダウンから選べる

ところが、ある時から.blendの保存時に選択していたAction1つだけしかインポートしてくれなくなりました。

ドロップダウンがない!

Animationの数だけFBXのエクスポートをしなきゃいけないんですか…?

なぜこんなことに…

下記のissueに対する修正で挙動が変わっちゃいました。これをパッチリリースで出せる心粋。

issuetracker.unity3d.com

皆さんお困りのようでフォーラムやらissurtrackerにも情報がありました。

Blender 2.8 animations not importing in Beta 2019.3.0b4 - Unity Forum Unity Issue Tracker - Using multiple animation clips in Blender not all Animation clips are imported using a .blend file

Won't Fix じゃあないんだよ

どうやってなおすの

この不具合は、上記フォーラムにある通りUnity-BlenderToFBX.pyの一部を書き換えると回避できます。 こいつらがFalseのとこをTrueにするとよい。

bake_anim_use_nla_strips=True
bake_anim_use_all_actions=True

これをすべての開発環境で、全てのUnityバージョンで修正するの面倒だよね…? ということでタイトルの「.blendのインポート挙動を上書きするスクリプト」を用意したわけです。

.blend のインポート時のFBXエクスポート処理を上書き太郎

適当なEditorフォルダに突っ込んであげてください。その環境のUnity-BlenderToFBX.pyを書き換えます。 書き換える内容はハードコードされちゃってますが必要に応じていじってください。

「同じ環境の別プロジェクトではデフォルトのインポート挙動にしたい」みたいな場合は#if falseのとこをtrueにすればEditor終了時に戻してくれるはず。

おしまい

.blendのインポート…全部の環境にBlenderが入ってる必要があるので、ある程度の規模になるととても使えない機能だろうとは思います。 しかし個人で作る分には便利で使いまくってるので、もっと気の利いたメンテをしてほしかったです。