CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender3.0】FBXインポート/エクスポート設定方法~完全版~
こんにちは!
複数のCGソフトを使っていたり、ゲームエンジンで自作モデルを使う場合は、作ったモデルをインポート/エクスポートする必要があります。
そんなときに、FBX形式を使っている方も多いのではないでしょうか。
今回はBlenderで困りがちなFBXでのモデルのインポート/エクスポートについて紹介していきます!
FBXとは
皆さんは「FBXファイル」という言葉を聞いたことがあるでしょうか?
3Dモデルを保存するファイル形式の一つで、拡張子が.fbxのファイルのことを指します!
現在は「Maya」などで有名なAutodesk社から公開されており、多くの3Dソフトウェアやゲームエンジンで採用されている非常にメジャーなデータ形式です!
なぜFBXが用いられるのか
FBXファイルは、リグやアニメーションなど3Dモデルに関する多くの情報を保持できるため、ゲームのキャラクターなど多くの場面で用いられています。
特に、UnityやUnreal Engineへモデルをインポートする際によく使われています。
しかし、多くの情報を保持できる反面、非常に複雑で扱いにくい形式です。
ではなぜ、ゲーム業界などで多く用いられているのかというと、すでに多くの人が使っていて、デファクトスタンダードになっているからでしょう。
慣れれば非常に強力な形式であるのは確かです!
他に有名な3Dファイル形式として「OBJファイル」がありますが、こちらはデータ構造が簡単で扱いやすい反面、ボーンやアニメーションなどの情報を格納することはできません。
FBXに保存できる情報/できない情報
FBXファイルは以下のデータを一つのファイルにまとめて保存することが出来ます。
- モデルデータ
- UV座標
- マテリアル情報
- テクスチャ (埋め込みが可能)
- リグデータ (ボーン、スケルトン)
- アニメーション
- ブレンドシェイプ(シェイプキー)
また、FBXファイルは以下の情報には対応していません!
- 日本語データ (文字化けの可能性がある)
- Blenderのモディファイア機能
- Blenderのノード機能
- Blenderのコンストレイント
このように、Blender内部の機能はFBXとしてエクスポートすることが出来ません。
もしBlenderのみでファイルのやり取りを行う際は、FBXではなく.blendファイルなどを使うことをオススメします!
BlenderにFBXをインポート
それでは、まずはBlenderでFBXファイルを読み込んでみましょう!
今回は、以下のサイトで公開されているモデル「高崎柚乃」をお借りします。
FBXはモデルによって構造が全く異なり、読み込んでそのまま綺麗の表示される場合もありますが、たいていの場合はメッシュが崩れていたりします。
基本的な方法
まずは、Blenderから〔ファイル→インポート→FBX(.fbx)〕を選択します。
もし〔FBX(.fbx)〕が存在しない場合は、プリファレンスウィンドウからアドオン〔Import-Export: FBX format〕を有効にしましょう。
すると、以下のような画面が出てきます。
読み込みたいFBXファイルを選択して〔FBXをインポート〕を選択します!
モデルが表示されました!
しかし、テクスチャがうまく表示されず、ボーンもおかしいです。
ボーンがおかしい場合
先ほど読み込んだファイルは、ボーンが正しい向きを向いていないように見えます。
(しかし、ボーンの向きが気持ち悪いだけで、アニメーションなどには問題ありません。)
そこで、FBXのインポート画面から〔子を強制的に接続〕を選択します。
また、この場合リーフボーンは不要になるので、〔リーフボーンを削除〕も選択し、プライマリボーン軸とセカンダリボーン軸を画像のように設定しました。
このあたりの設定は、モデルによって異なりますので、何度かインポートを行って適切な値を選択しましょう!
これによって、ボーンの先が子のボーンの方向を向くようになり、より自然な見た目になります!
だいぶすっきりしましたね!
リーフボーンとは、ボーンの末端に配置されるボーンで、子のボーンをもたないボーンの方向を示します。
マテリアル/テクスチャが反映されない場合
ボーンの位置を調整しましたが、モデルが紫色になって正しく表示されていません。
モデルが紫色ということは、テクスチャが反映されていないことを示しています。
ノードエディタでマテリアルを見てみます。
テクスチャのノードはつながっていますが、ファイル名が実際に存在するテクスチャと一致していません。
こうなってしまっては、手動で画像ファイルへのリンクを貼り直すしかありません。
適切にテクスチャを設定し直したものがこちらになります。
その他マテリアルの設定についても、多くの場合再設定が必要になります。
これで、モデルがしっかり表示されました!
実際に動かして動作を確認しましょう。
モデルが表示されない場合
FBXの形式によってはそもそもモデルが読み込めない場合も存在します。
その際はエラー文の内容を確認して修正する必要があります。
下の画像のように、〔ASCII FBX files are not supported〕というエラーが出ていないでしょうか?
この場合は、〔ASCII形式のFBXファイル〕を〔バイナリ形式のFBXファイル〕に変換する必要があります。
FBXファイルにはASCII形式とバイナリ形式の二つが存在し、Blenderはバイナリ形式にのみ対応しています。
変換はAutodeskによって公開されているFBX Converterを使用します。
上のリンクから環境に適したインストーラーをダウンロードし、支持に従ってインストールを行います。
インストールを行ったフォルダに〔FBXConverterUI.exe〕があるので、これを実行すると以下のウィンドウが開きます。
画面左側に変換したいFBXファイルをドラッグ&ドロップし、保存場所を選択します。
〔FBX Save Mode〕をバイナリ(Binary)にし、〔Convert〕から変換を実行します。
すると指定した保存場所にバイナリ形式に変換を行ったFBXファイルが生成されます。
今度はBlenderで読み込めるはずです!
メッシュが崩れる場合
FBXファイルの内容によっては、Blenderに読み込んだ時にパーツごとにサイズや回転がおかしくなる場合があります。
そういった場合は、3Dビューからトランスフォームを全て0にしてみましょう。
それでも治らない場合は、手動で位置の調整などを行う必要があります。
アニメーションを確認
アニメーション付きのFBXをインポートするためにはFBXのインポート設定から〔アニメーション〕にチェックをいれます。
すると、アニメーションが読み込まれます。
上の動画は、こちらのサイトで配布されている〔ユニティちゃん〕内に含まれているアニメーションファイルを読み込んだ例です。
キーフレームアニメーションが読み込まれていることがわかります。
モデルファイル読み込み時のように、〔子を強制的に接続〕などの設定を行うと、アニメーションがおかしくなる可能性があるので、作業を始める前に一度読み込んで確認しましょう!
BlenderからFBXをエクスポート
次に、BlenderからFBXとしてモデルファイルを出力(エクスポート)する方法について紹介します。
先ほどインポートしたモデル「高崎柚乃」を今度はエクスポートしてみます!
基本的な方法
まず、エクスポートを行いたいモデルを、アーマチュアを含めて選択状態にします。
〔ファイル〕→〔FBX(.fbx)〕を選択します。
こちらの〔FBX(.fbx)〕が存在しない場合は、プリファレンスウィンドウからアドオン〔Import-Export: FBX format〕を有効にしましょう。
基本的な設定として、〔選択したオブジェクト〕と〔オブジェクトタイプ〕を〔アーマチュア/メッシュ〕に設定します。
〔オブジェクトタイプ〕はshiftキーを押しながら選択することで複数選択することができます。
たいていの場合エンプティやカメラ、ランプなどはモデルファイルには必要ないので、今回は除外しました。
また、〔選択したオブジェクト〕を選択しないと、シーンに存在するすべてのメッシュを出力することになり、最悪Blenderが落ちてしまいます。
保存場所を設定し、〔FBXをエクスポート〕を押すと、FBXファイルを出力できます!
モディファイアの適用
FBXファイルには〔ミラー〕などのモディファイア情報を保存することが出来ません。
しかし、エクスポートの際にモディファイアを適用して出力することが可能です。
しかし、この設定を行うと、〔シェイプキー〕が全て削除されてしまいます。
この場合は、あらかじめアドオンなどでモディファイアを適用しておく必要があります。
出力したfbxファイルを再度Blenderに読み込みます。
ボーンなどがしっかり動くことを確認しましょう!
Unity座標に変換する
BlenderとUnityでは座標系が異なるため、Blenderで出力したファイルをUnityで読み込むと変な回転がかかったり、スケールがおかしくなったりします。
Unityで読み込んだ際に、正常な向きするためには、〔トランスフォームを適用〕にチェックを入れます。
ただし、今回のように一度FBXにしたものを再度読み込む場合には、あらかじめ回転が適切になるように親オブジェクトなどで設定されている場合があります。
全ての親オブジェクトの〔回転〕や〔スケール〕を適用してから出力を行うか、場合によってこの設定を行わずにエクスポートを行いましょう!
ただし、今回利用したモデルは、FBX読み込みの際にエンプティ〔CS_Girl〕にこの処理と同等の回転処理がかかっていますので、この操作は必要ないです。
FBXモデルをunityに読み込むと以下のようになります。
テクスチャを保ったままエクスポート
この状態では、Unityに読み込んでもテクスチャが表示されず、灰色のモデルのみ表示されてしまいます。
そこで、〔テクスチャの埋め込み〕という作業を行うことで、FBXファイルにテクスチャの情報を持たせます。
テクスチャの埋め込みについては、こちらの記事が参考になります。
必要なボーンのみをエクスポート
エクスポートの際に、〔デフォームボーンのみ〕をクリックすることで、〔変形〕にチェックが入っているボーンのみをエクスポートの対象にすることが出来ます。
〔変形〕にチェックが入っていないボーンは、ウエイトペイントやアーマチュアを使ったメッシュの変形の対象になりません。
リグなどで用いるコントロールボーンなどは、〔変形〕のチェックを外すことで、エクスポートの対象外にすることをお勧めします!
FBXエクスポートに便利なアドオン
最後にFBXエクスポートに便利なアドオンを紹介していきます。
Better Fbx Importer & Exporter – 最強のFBXサポーター!
FBXのインポートとエクスポートを行うアドオンです。
Blenderでほぼ完結している人には不要ですが、ゲーム作成でBlenderからUnity等のゲームエンジンにエクスポートする人や他の3Dソフトを使用している人と共同で作業する場合などに有効です。
詳しくは以下の記事を参考にしてみてください。
まとめ
今回は、FBXファイルのインポートとエクスポートの方法について紹介しました。
FBXファイルは複雑で、使いにくく感じることも多いと思います。
しかし、多くの場面で用いられており、使えるようになって損はありません!
この記事を参考に、是非FBXモデルファイルを使ってみて下さい!