見出し画像

【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エクスポートと同時にテクスチャーファイルも書き出す

◇大雑把な手順

  1. Blenderでメッシュを作成して、シェーダーを適用。

  2. シェーダーにテクスチャーを適用する。

  3. ファイル>エクスポート>FBX(.fbx) を実行。

  4. ファイル保存ウィンドウで、所定のFBX設定を行い、エクスポートする。

  5. FBXファイルが作成される。(fbmフォルダ作成)

◇気を付ける点

テクスチャーの状態が「生成」ではなく、「単一画像」になっている必要がある。テクスチャーを外部ファイル指定している場合は問題ない。(テクスチャーの状態は、シェーダーエディターのテクスチャー画像ノードで確認)

「生成」の状態

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

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

画像をすべて保存

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

説明した手順通りに進めると、
画像テクスチャーノードの「生成」 →「 単一画像」 になることを確認


◇FBXエクスポート時の設定(Unity用)

  • パスモード>コピー に設定。続けてパスモードの右端アイコンを無効化

  • トランスフォーム>前方>Zが前方 に設定。

  • トランスフォーム>トランスフォームを適用 を有効

Unity向け設定(テクスチャー付き)

■FBXファイルにテクスチャーを埋め込む方法

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

テクスチャーのファイル埋め込み設定

■トラブルシューティング

◇指定フォルダにテクスチャーファイルが書き出されない

エクスポートに成功すれば、fbmフォルダにテクスチャーファイルが書き出されるはずだが、空っぽの状態。

空っぽのfbmフォルダー

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

FBXファイルにテクスチャーが埋め込まれた状態
※再度、BlenderにFBXインポートして確認

◇上記トラブルの解決方法

テクスチャーファイルも同時に書き出したい場合、まず、エクスポート前にテクスチャーを外部ファイルとして保存しておく必要がある。

やり方は、テクスチャーペイントモードで、メニューバー:画像>保存 を実行する。または、プロパティウィンドウ>テクスチャスロットの名前をつけて保存 ボタンを実行して、テクスチャーを外部ファイルとして保存する。

Texture Paint>画像>保存

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

FBXエクスポートと同時にテクスチャーファイル書き出しに成功
テクスチャーファイルを書き出す場合は、パスモードの右端アイコンは、無効にしておく

これで、今回想定した検証おわり。

■おまけ

<使われていないテクスチャーを一括で削除する方法>
ファイル>クリーンアップ>未使用データブロック を実行。利用されていないデータ類は全て削除される。削除されたくない場合は、フェイクユーザーをつけておく。(盾アイコンをクリック)

■あとがき

どこかの解決方法で、下図のように、ファイル>外部データ>リソース自動パック の設定を行っておけば大丈夫・・・とあったが、この機能は、外部ファイルをblenderファイル(.blend)に含めて保存しておく機能。

何かの事情で外部ファイルが無くなってもBlendファイルに重複して保存することでリスク回避する機能らしい。
ただし、今回の目的とは無関係っぽい。<FBX関係

外部データ>リソースの自動パック を有効にしておく

以上。

この記事が気に入ったらサポートをしてみませんか?