
【Blender】FBXエクスポートと同時にテクスチャーも書き出す
FBXエクスポートの検証メモ。
いわゆるテクスチャー付きのFBXファイルを作成することが目的。
A)テクスチャー付きのFBXファイル
→ テクスチャーを外部ファイルとして書き出し
B)テクスチャー付きのFBXファイル
→ テクスチャーをFBXファイルに埋め込み
ただ、上記A)のテクスチャーを外部ファイルとして書き出しについては、成功したり、失敗したりと、挙動が異なることがあったので、特にそのあたりを検証してみた。
※余談だが、テクスチャー埋め込みFBXファイルにしておくと、Unity等にFBXファイルをインポートする際、別途マテリアル作成やテクスチャーセットアップ等の手間が省けて便利。
<Bleder 3.1.2>
■検証結果(結論)
今回の検証の結果を踏まえた結論は、下記の通り。
FBXエクスポートと同時にテクスチャーファイルも書き出したい場合、Blender内のテクスチャーペイントモードでペイントしたテクスチャー、及び、ノードを組み合わせて生成したプロシージャルテクスチャーは、テクスチャーファイルを一旦、外部ファイルとして書き出しておく必要あり。
現状のバージョンのBlenderは、そういう仕組みらしい。
--------------- 以下検証内容 ---------------
■検証内容
FBXエクスポート時、FBXファイルにテクスチャーを埋め込む。
FBXエクスポートと同時にテクスチャーファイルも書き出す。
(テクスチャーファイルは、自動作成されるfbmフォルダへ内包)
■FBXエクスポートと同時にテクスチャーファイルも書き出す
◇大雑把な手順
Blenderでメッシュを作成して、シェーダーを適用。
シェーダーにテクスチャーを適用する。
ファイル>エクスポート>FBX(.fbx) を実行。
ファイル保存ウィンドウで、所定のFBX設定を行い、エクスポートする。
FBXファイルが作成される。(fbmフォルダ作成)
◇気を付ける点
テクスチャーの状態が「生成」ではなく、「単一画像」になっている必要がある。テクスチャーを外部ファイル指定している場合は問題ない。(テクスチャーの状態は、シェーダーエディターのテクスチャー画像ノードで確認)

<Blenderでテクスチャーペイントした場合>
テクスチャーを作成し、ペイントしただけでは「生成」の状態。
これを無理やり「単一画像」に設定すると描いたテクスチャーが初期化されてしまうので注意。
こういう場合は、プロパティ>テクスチャースロット>画像をすべて保存 を実行して保存。そうすると状態が自動的に「単一画像」になる。

また、別操作で、テクスチャーペイントモード>プロパティウィンドウ>画像をすべて保存 をクリックしてもよい。

<プロシージャルテクスチャーの場合>
FBXエクスポート時、テクスチャー付き書き出しができない。
解決方法は、テクスチャーをベイクした後、画像ファイルとして書き出し、画像テクスチャーノードで、そのファイルを指定し再読み込みすれば、単一画像に状態が変わる。

画像テクスチャーノードの「生成」 →「 単一画像」 になることを確認
◇FBXエクスポート時の設定(Unity用)
パスモード>コピー に設定。続けてパスモードの右端アイコンを無効化
トランスフォーム>前方>Zが前方 に設定。
トランスフォーム>トランスフォームを適用 を有効

■FBXファイルにテクスチャーを埋め込む方法
テクスチャーをFBXファイルに埋め込みたいときは、FBXエクスポート設定の一部を変更する。パスモードの右端アイコンを有効化しておく。

■トラブルシューティング
◇指定フォルダにテクスチャーファイルが書き出されない
エクスポートに成功すれば、fbmフォルダにテクスチャーファイルが書き出されるはずだが、空っぽの状態。

一方、この状態でも、テクスチャー埋め込み設定を行い、FBXエクスポートするとテクスチャー埋め込みは成功する。

※再度、BlenderにFBXインポートして確認
◇上記トラブルの解決方法
テクスチャーファイルも同時に書き出したい場合、まず、エクスポート前にテクスチャーを外部ファイルとして保存しておく必要がある。
やり方は、テクスチャーペイントモードで、メニューバー:画像>保存 を実行する。または、プロパティウィンドウ>テクスチャスロットの名前をつけて保存 ボタンを実行して、テクスチャーを外部ファイルとして保存する。

その後・・・、
改めてFBXのエクスポートを行うとテクスチャーファイル保存に成功する。(実行時は、パスモードの右端アイコンは、無効にしておくこと)


これで、今回想定した検証おわり。
■おまけ
<使われていないテクスチャーを一括で削除する方法>
ファイル>クリーンアップ>未使用データブロック を実行。利用されていないデータ類は全て削除される。削除されたくない場合は、フェイクユーザーをつけておく。(盾アイコンをクリック)
■あとがき
どこかの解決方法で、下図のように、ファイル>外部データ>リソース自動パック の設定を行っておけば大丈夫・・・とあったが、この機能は、外部ファイルをblenderファイル(.blend)に含めて保存しておく機能。
何かの事情で外部ファイルが無くなってもBlendファイルに重複して保存することでリスク回避する機能らしい。
ただし、今回の目的とは無関係っぽい。<FBX関係

以上。