Blenderで3Dモデルを作成する際、FBXやOBJ形式でエクスポートすることは、他のソフトウェアやゲームエンジンとの互換性を持たせるために非常に重要です。
しかし、多くの人がつまずきやすい点として、「ノードで組んだテクスチャがエクスポート時に正しく適用されない」問題があります。
Blenderでは、シェーダーノードを使ってテクスチャを設定できますが、それがFBXやOBJ形式でエクスポートしたときに他のソフトウェアでうまく反映されないことがあります。
特にゲームエンジンや他の3Dソフトウェアで使用する場合、エクスポートされたモデルに正しくテクスチャが適用されないと、プロジェクト全体に影響を及ぼす可能性があるため、事前にこの問題を解決する方法を知っておくことは重要です。
本記事では、Blenderのシェーダーノードで組んだテクスチャを、エクスポート時に正しく持っていくためのステップとポイントを詳しく解説します。
特に、OBJとFBXの両方の形式における重要な手順をカバーしていきますので、これから3Dモデリングを進めていく方にとっては必見の内容です。
- エクスポートしたモデルが真っ白にならないようにするための手順。
- エクスポート設定の例。
- よくある問題の対処法。
私が作成した将棋盤を参考にやってみましょう。
OBJ/FBXのエクスポート手順
エクスポート前のBlenderで見るとこんな感じです。
今回の将棋盤のシェーディングにはノーマルやラフネスなどのテクスチャ以外の情報が入っています。
シェーディングノードの接続はこんな感じです。
この状態でエクスポートするとマテリアルの反映がされません。
ペイント3DやUnityなどで確認することができます。
この状態を解決してきましょう。
1. テクスチャのベイク準備
Blender内で作成されたシェーダーノードは、他のソフトウェアやフォーマットでは直接的に扱えない場合が多いため、まず「テクスチャのベイク」という処理が必要です。
これは、複雑なシェーダーノードの結果を、外部ファイルとして使用できる「画像テクスチャ」に焼き付ける作業です。
(1) 新しい画像を作成
- モデルを選択し、UVマッピングが適用されていることを確認します。
- 次に、「UV/画像エディタ(UV編集タブ)」で新規画像を作成します。画像サイズは出力解像度に応じて選びます(1024×1024や2048×2048など)。
(2) シェーダーノードの設定
- シェーダーノードエディタで「画像テクスチャ」ノードを追加し、先ほど作成した画像を指定します。このノードはベイク先の画像として機能します。
このときノードの接続はしないでください。
2. テクスチャのベイク
次に、ノードで組んだシェーダーをテクスチャとしてベイクします。
(1) ベイクタイプの選択
- プロパティパネルのレンダータブに移動し、レンダリングエンジンをCyclesにします。
- ベイクセクションを展開します。
- ベイクタイプをディフューズや統合など、必要なタイプに設定します。ディフューズはカラー情報、統合はライトや影なども含めた複合的な情報を焼き付けます。
(2) ベイクの実行
- すべての設定が完了したら、ベイクボタンをクリックしてベイク処理を実行します。完了後、「UV/画像エディタ」に焼き付けられたテクスチャが表示されるはずです。
- 画像が表示されたら、画像メニューから画像を保存して、PNGやJPEGなどの外部ファイルとして出力します。エクスポートするファイルと同じフォルダを選択します。
3. テクスチャの割り当て
次に、ベイクされたテクスチャをモデルに再度適用します。
(1) 画像テクスチャノードの再設定
- 先ほどベイクした画像ファイルを新しい画像テクスチャノードとして指定し、既存のシェーダーノードと置き換えます。これで、ノードで組んだシェーダーを、シンプルなテクスチャファイルとしてモデルに適用することができます。
- このとき現在使用しているマテリアルを削除して、新たに作り直してください。
新たにマテリアルを作り直さないと、UVマップがなぜかずれることがあります。
ベイクされたテクスチャがモデルに正しく適用されていることを確認したら、次にエクスポートを行います。
4.1. エクスポート前の準備
(1) 使用していないオブジェクトの削除
Blenderファイルもあわせて販売する場合は、カメラやエンプティオブジェクトなど不要なデータを削除します。
(2) 孤立したマテリアル、画像の削除
孤立した(割り当てられていない)マテリアルは名前の前に”0”がつきます。
アウトライナーから削除することも可能ですが、Blenderファイルを開きなおすと消えます。
マテリアルの数に応じて使い分けてみてください。
画像データは消えないのでひとつずつ削除する必要があります。
(3) 未使用データブロックの削除
最後に未使用データブロックも削除します。
ファイル→クリーンアップ→未使用データブロックで削除ができます。
(4) Blenderファイルへ画像ファイルのパック(非推奨)
ユーザー間でやり取りをする場合は画像ファイルのパックもおすすめです。
しかし、モデルを販売する場合は容量が大きくなる原因なのでこの作業は非推奨です。
UV/画像エディターの画像タブ→パックから選択できます。
(5) 全トランスフォームの適用
Ctrl+Aで全トランスフォームの適用をします。
4.2.OBJ形式のエクスポート
ファイルメニューからエクスポートを選択し、OBJ形式を選択します。
選択中のオブジェクトのみエクスポートしたい場合は、あらかじめオブジェクトを選択後、対象のチェックをいれてください。
4.3. FBX形式でエクスポート
ファイルメニューからエクスポートを選択し、FBX形式を選択します。
パスモードをコピーに設定し、埋め込みテクスチャにチェックを入れます。これにより、テクスチャファイルがモデルに組み込まれ、外部ソフトウェアでも正しく表示されるようになります。
5. 他のソフトウェアでの確認
エクスポートしたFBXやOBJファイルを、UnityやUnreal Engine、他の3Dソフトウェアでインポートし、テクスチャが正しく適用されているかを確認します。場合によってはテクスチャが適用されていないこともありますが、その場合は手動でテクスチャファイルを読み込み、モデルに適用すれば問題なく動作するはずです。
こんな時は
この手順でも別ソフトウェアにエクスポートした際に、画像がずれることがあります。
対処法を見つけたので紹介します。
原因は操作中にUVマップが自動で作成され、ずれたUVマップでエクスポートが行われるためです。
プロパティエディタのデータプロパティ→UVマップタブでUVマップが複数生成されていないか確認してください。
マークのついている(図だとUVMap)方のUVマップを-ボタンで削除してみてください。
まとめ
手順を簡単にまとめます。
- テクスチャのベイク
- テクスチャの再割り当て
- 孤立データの削除 【Blenderファイルを販売する場合】
- 画像ファイルのパック 【非推奨。ユーザー間でやり取りするなど】
- 全トランスフォームの適用
- OBJ/FBXのエクスポート
以上の手順を通して、Blenderでノードを使って設定した複雑なシェーダーを、FBXやOBJ形式で他のソフトウェアに持ち込む方法について解説しました。ポイントとしては、「テクスチャベイク」を行うことで、Blender特有のシェーダーノードを画像ファイルとしてエクスポートしやすい形式に変換することです。この手順を踏めば、ゲームエンジンや他の3Dプラットフォームにモデルを持ち込んだ際にも、視覚的な違和感なくテクスチャが反映されます。
テクスチャベイクは少し手間がかかるプロセスですが、エクスポート時に正しく表示されないというトラブルを避けるためには重要なステップです。Blender内で設定したマテリアルを他の環境でも再現できるように、ぜひこれらの手順を活用してみてください。