うにty生活

UnityChanを生活させたい

【Blender→Unity】Unity側のNormal mapの適用方法 #35.1

どうも、ラブヘイトです。

 

BlenderからUnityにモデルをインポートした際に、

・Normal mapはどうやって適用するの?

 

・Bleder側で割り当てていたUVmapはどこへ?など

いくつか疑問があったので、自分が行ってできた一例を紹介しようと思います。

 

利用するモデル

まずはBlender側から

今回はこちらのモデルを使います。

Blenderでの街灯モデル

街灯の窪んでいる部分が、Normal mapの適用されている箇所です。

これをUnity側に持っていった時も適用したいというのが、今回の課題です。

 

BlenderでのNormal mapの作成方法がわからない方は、過去記事に書いています。参考にしてみてください

【Blender】UV mapの一部にだけNormal mapを適用する方法 - うにty生活

 

作成したモデルの前提

オブジェクトの一部にNormal mapを割り当ててる(以下Normalオブジェクト)

つまり1つのオブジェクトの中でNormal mapを割り当てる部分のマテリアルは分けている状態

マテリアルを2つに分割している画像

また、全ての箇所に仮でもいいのでマテリアルを割り当てといてください。

Unity側でオリジナルのマテリアルを設定するのに必要です。

 

UV mapは二つ存在

UV mapが二つ存在している画像

 

一つはベタ塗り用、一つはNormal map用です。

 ※ 上側の画像背景はnormal mapですが本来は透明です

 

Normalオブジェクトのshaderはこんな感じ

 

エクスポート 

この状態のモデルをエクスポートします。

エクスポート設定は以下の通り

Blenderのエクスポート設定

 

ミニTips

エクスポート設定はいちいち覚えておくのも面倒なので、プリセットとして覚えさせておくことをお勧めします。

Blenderエクスポートのプリセット

 

そしてUnityにインポートします。

 

ミニTips

人によって違うとは思いますが、マテリアルはBlenderから運んできても、色味が違うので自分はそもそもBlender側では本気でShaderいじらないです。こんなもんかなーと確認が取れたらもう出力しちゃって、Unity側でガッツリShaderいじります。

 

 

 

Unity側の設定

 

インポートしたモデルのマテリアルをUnity側で設定する場合

インポートしたオブジェクト>Inspector>Materialからマテリアルを設定して

ApplyすることでUnity側のマテリアルをモデルに簡単に割り当てることが可能です。

Unity側のインポート設定


normal map用のマテリアルもここで割り当てます。

 

※Blender側でマテリアルが割り当てられてないまま、Unity側にインポートするとインポート設定で出てこなくなるので注意

 

normal map用のマテリアルを作成していきます。

と言ってもめちゃくちゃ簡単です。

 

Normal mapのShader作成

Blenderで作成したTextureはBlenderエクスポート時にCollectionとして一緒に出力してもいいし、画像を保存しているなら手動でインポートでもどちらでもいいと思います。

 

Create > Shader > HDRP > Lit Graphで新しいShader Graphを作成。選択した状態でCreate>MaterialからShader Graphが割り当てられたMaterialを作成します。

 

Sample Texture 2Dノードを利用する方法とNormal From Textureノードを利用する方法、2つあります。どちらもTextureにNormal mapを設定するのは同じです。

 

それぞれの結果を見てみましょう。まずはNormal From Textureから

 

近くで見た時

遠くで見た時



なぜかぼやける...

 

次にSample Texture 2D

 

近く

 

遠く

かなり遠くからでも窪んで見えるため、Sample Texture 2Dを採用

もしかしたら、Normal From Textureの使い方が悪いのかもしれないが今回は体験談ということでよしとしましょう。

 

今回はここまで、ここまで見てくださってありがとうございました。