背景アーティストのぶろぐ

UE4やら、Substanceやら、Zbrushやらいろんなソフトを触ったことについて色々書く。

【SD】NormalMapのGチャンネルが反転する問題の解決

先日Substanceテクスチャワークフローのセミナーに参加したところ、NormalMapの反転の解決方法について知ることができたので、追記をさせていただきます。

 

多分、これが一番正しい修正方法。

元の投稿も何かの役に立つと思うので残しておきます。

 

NormalMapが反転する原因はベイクした環境はOpenGLDirectXかによって異なるそうです。

これを3DViewの設定で変更することができます。

 

Materials>Default>Edit で3DViewの設定画面を開きます。

f:id:sinocof:20170223165145p:plain

 

デフォルトではDirectXがTrueで有効になっています。

f:id:sinocof:20170223165200p:plain

 

DirectX NormalをFalseにすることで3DViewで正しく見ることができます。

f:id:sinocof:20170223165222p:plain

 

ボーンデジタルの方曰く、ZbrushからベイクしたNormalはOpenGLだそうで、

そうすると、MayaもOpenGLってことでいいのかな?

 

Normal編集に関係するノードを使用する場合にもNormalのフォーマットを指定する箇所があるので、メインで読み込んでいるNormalに合わせてOpenGLDirectXかを選択しておいたほうがいいのかなと思います。

 

これはHeight Normal Blendノードですが、パラメーターの中でフォーマットの変更ができます。

f:id:sinocof:20170223165248p:plain

 

これでひとまず、Normalの反転は解決できそうかな。

 

 

 

 

 

 

(古い投稿)

 

xNormalやMayaからベイクしたNormalmapをSDに持って行くと表示がおかしいと感じていたので調べてみました。

 

MayaでベイクしたNormalmapは以下の様なもの。

f:id:sinocof:20170223165308p:plain

 

MayaでNormalを貼った結果は以下のとおり、正しく凸で表示されています。

f:id:sinocof:20170223165333p:plain

 

同じテクスチャをSDに貼ったものは以下のとおり。

明らかに反転して凹んで見えます。

f:id:sinocof:20170223165359p:plain

 

SubstanceDesignerはデフォルトでGチャンネルが反転してしまうようなので、

ベイクするソフトによってはNormalを反転させる必要があるようです。

 

で、その反転の仕方ですが、設定でできるかなと思ったのですがどうやらないみたいなので、

ノードをつないで修正します。

 

Normalmapの反転の仕方

 

反転の方法はすごく簡単。

Levelノードを追加し、Gチャンネルの下の▲を白と黒の位置を逆に入れ替えるだけです。

f:id:sinocof:20170223165435p:plain

f:id:sinocof:20170223165445p:plain

 

結果は以下の通り、正しく出るようになりました。

f:id:sinocof:20170223165457p:plain

 

簡単なノードの接続で解決できますがちょっと面倒ですね。

UE4はSDと同じようにGチャンネルが反転するので都合がいいかもしれないですが、

個人的にはNormalmapのGチャンネルフリップは統一させたいので、

xNormalから直接出したものと、SDから出したもので混合するような場合は面倒だなと…。

 

 

Forum:Convert normal map from DirectX to OpenGL