アーティストさんからFBXエクスポートしたときにスキニングが外れちゃうんですけど…って問い合わせを受けたときのおはなし。
原因と解決方法だけ知りたい人は「結論」を見てください😎
まずは問題を切り分けてみる
とにもかくにもFBXエクスポートのプリセットが怪しいのでデフォルトのプリセットに切り替えてもらってみる。
→解決せず
プリセットじゃないとなるとそれ以外のプリファレンスが怪しいのでprefsディレクトリをリネームしてもらってみる。
→解決
というわけで、こういうときはだいたいuserPrefs.melが怪しいので、問題が起きている環境のuserPrefs.melをもらってみました。
userPrefs.melを眺める
まっさらなuserPrefs.melを用意して、もらったものと比較したところ、怪しげな部分が目に入りました。
-iv "exportIncludeChannels" 0 -iv "exportIncludeConstraints" 0 -iv "exportIncludeExpressions" 0 -iv "exportIncludeHistory" 0 -iv "exportIncludeInputs" 0
これじゃん…。
このあたりの値を1にしたら再現しなくなったので、次はいつこの値が書き換わるのか調べてみます。
該当のoptionVarがいつ書き換わるか調べる
名前からしてFBX関係なさそうだし、プラグインが関係ないどこかだろうなーと思って調べてみた結果、選択書き出しのInclude Optionsであることが分かりました。
お前か…。
でもお前File typeがFBXのときはdisableかつチェック外れた状態になるじゃん…。関係あると思わないじゃん…。
選択書き出しのInclude Optionsの有効範囲を調べる
これがもしFBXExportコマンドを直接実行した場合も影響したら嫌だなーということで、Include Optionsのチェックを外した状態で以下のコマンドを実行してみます。
from maya import mel path = "{エクスポートパス}" mel.eval('FBXExport -f "' + path + '" -s')
これだと特に問題なくスキニングが有効な状態でエクスポートできました。
ということは、標準機能の選択書き出しはFBXにおいてもmaと同じfileコマンドを実行している…?
スクリプトエディタで「Echo All Commands」を有効にしてFBXの選択書き出しを実行してみると…。
file -force -options "v=0;" -typ "FBX export" -pr -es "{エクスポートパス}";
想定通り。求めてない器用さ。
結論
というわけで、
- 選択書き出しのInclude OptionsはFile typeがFBXのときも有効😇
- FBXExportコマンドを直接実行した場合は選択書き出しのInclude Optionsは影響しない
ということのようです。
mayaシーンファイル以外のエクスポートで選択書き出し、またはfileコマンドを使用している場合はお気をつけくださいませ。