Unreal Engine 4(UE4)やUnityといったゲームエンジン、あるいはその他の外部ソフトにBlenderで作ったモデルを持っていく場合、つまずく箇所がいくつかありました。
具体的には「blender to UE」という公式アドオンで、Blenderで作ったモデルをUE4に持って行くときに問題が起きました。
ここでは自分が当たった問題と、その解決方法を書いておきます。
一度問題なく乗り越えた人にとって、これはただの基礎知識に過ぎませんが、初めて遭遇した初心者にとっては何が問題なのかもわからず、調べてみても基礎知識過ぎて誰も解決策を残していないのが現状なのかなと思います。
誰かの助けになればいいな、と思ってゲーム用モデルに必要な作業を書き残しておきます。具体的な解決策というより原因を書いているので、詳細は各自ググってください。
自分が直面した問題は大きく分けて2つです。
1、エクスポート先でテクスチャがうまく貼れない
2、Blender上で設定したマテリアルがエクスポート先でうまく反映されない
の二点です。それぞれ解決策を書いていきます。
1、エクスポート先でテクスチャがうまく貼れない
画像はBlenderで作った地形をUE4にもっていき、Megascanのテクスチャを適用した画像です。のっぺりとした色が反映されるだけで詳細が一切見えません。
これはBlender上でUV展開という作業を怠ったために起きている現象です。
UV展開を行うと下の画像のようになります。UV展開のやり方は各自ググってください。Blenderを使う上でも必要になる操作なので覚えておきましょう。
2、Blender上で設定したマテリアルがエクスポート先でうまく反映されない
右は失敗例で、左が正常にBlender上のマテリアルが適用されたモデルです。
上の画像がBlender上のドアのマテリアルと、そのマテリアルを構成するシェーディング画面です。
外部ソフトで正常に見た目が反映されない理由は、Blenderのノード(シェーディング)が外部ソフトに無いためです。Blenderのノードによって構成された見た目を外部ソフトに持っていくためには、ノードの情報を画像に移す必要があります。
之を行うのがBake(焼きこみ)という作業です。あとはググってほしいのですが(疲弊)、大きく分けてBakeした二枚の画像でシェーダー上の見た目を再現します。
1枚はモデルの色を表現するDiffuse Mapで、もう1枚がモデルの凹凸を表現するNormal Mapです。どちらも手順はほとんど同じなのでDiffuse Mapの作り方だけ解説します。
①Bake元のモデルをオブジェクトモードで選択。
②Image Editorを開き新規画像を作る。名前は「オブジェクト名_Diffuse_baked」などがよい。完成度は解像度に依存するので用途や、オブジェクトの大きさによって変更する(今回は2048×2048)。できたら画像のように真っ黒い画像が表示される。
③Shader Editorを開き、Bakeするモデルに適用されたマテリアル上で、「Image Texture」を追加し、先ほど作った新しい画像(真っ黒)を選択する。
④「Redner Properties」からBake欄を開き、Bake TypeがDiffuseになっていることを確認する。最後にShader Editor上で先ほど追加したImage Textureノードの周りが白くハイライトされていること(選択されていること)を確認して、Bakeボタンを押す。
そうすると真っ黒だった新規画像に色の情報がBakeされます。Shader Editorで、Principled BSDFのBase Colorに繋がっていたノードをすべて削除し、代わりにいまBake結果が反映されたImage Textureを繋げると、ほとんど同じ見た目になります。
続いてNormal Mapについても新規画像を追加して…と同じ作業を行い、ノードを入れ替えるとUE4やUnityにBlender上の見た目のままでエクスポートする準備が整います。Normal Mapを作る作業で異なるところは「Bake Type」をDiffuseからNormalに変更するだけです。あとの作業は変わりません。
以上が自分が当たった問題点と、その解決策でした。初心者はBlender to UEみたいな公式アドオンがあるのに、エクスポートに失敗してしまって心が折れてしまったりしますが(自分)、そこで前提とされている情報は初心者からすれば全然知らなかったりします。
他にも初歩的なところで行き詰っている人はいっぱいいるので、過度に絶望せずに頑張りましょう。