ノーマルマップのテクスチャを使用する上で大切なのがソフトによって異なるOpenGL形式なのかDirectX形式なのかです。
単に青紫色のテクスチャを張り付けても綺麗に凹凸が表現されずに反転される場合がありますが、初期状態で作成したSubstance 3D Designerのテクスチャを書き出してもBlenderやMayaでノーマルマップが綺麗に表示されずに反転して表示されてしまうので、それを回避する設定方法と、フォトショップで直ぐにDirectXとOpenGL形式に変更する方法を書きました。
ノーマルマップが表現可能な形式 | |
ソフト | 形式 |
Blender | OpenGL |
Maya | OpenGL |
Unreal Engine | DirectX |
Unity | OpenGL / DirectX |
Substance 3D DesignerでノーマルマップをBlender用に書き出す方法
Substance 3D Designerで初期状態のまま書き出してもBlenderでノーマルマップが同じ見た目で表示されません。
例えば、以下のような丸が出っ張ってるノーマルマップを作成しました。
しかし初期状態だと、左画面の作業画面では左上からライトが当たって出っ張ってるようにみえますが、右側の実際に作成されている2Dビューのノーマルマップの画像では右下からライトが当たっているように見えます。
Blenderでノーマルマップを繋げてみると、上からライトを設置しているのに、凹んでいるように丸の下側に光が当たっているように見えます。
Substance 3D DesignerとBlenderを比較すると、Blender側は出っ張って表現されていないのが分かります。
Substance 3D Designer側で書き出したテクスチャがBlenderでも表示される設定
環境設定をクリックします。
プロジェクト→一般の→その他のデフォルトの法線マップ形式をDirectXからOpenGLに変更して適用を押してOKを押します。
変更すると表示画面の左側の出っ張っていた表示が右側の画像と同じ下側からライトが当たっている表現でそろいました。
ただ、Substance 3D Designerではライトは上から当たっているのに凹んでいる表現で現状だとおかしくなっています。
これを改善するために、ノードの「法線」をクリックして→「法線の形式」をDirectXからOpenGLに変更します。
3Dビューと2Dビューで凹んでいたのが出っ張っている表現に変更されて、Substance 3D Designerで上から光が当たっているので、丸が出っ張っている欲しい表現になりました。
作成されたテクスチャは「出力をエクスポート」を選択して、
normalにチェックが入っているのを確認して、エクスポート出力を押して書き出すと、
上側が明るいノーマルマップの画像が書き出されているので、
Blenderに読み込むと、しっかりSubstance 3D DesignerとBlenderで同じ表現になりました。Mayaで繋げても同じように表現されます。
OpenGLとDirectXのノーマルテクスチャはチャンネルのGを反転して直ぐ使える
フリー素材や他の人が作ったノーマルマップのテクスチャを使う場合や、長々と書いた方法が面倒という人はその場しのぎに、OpenGLからDirectX用に直ぐに変換する方法もあります。
OpenGLとDirectXのテクスチャをPhotoshopでチャンネルのRGBを比較して見ると、R(レッド)とB(ブルー)は同じですがG(グリーン)だけ方向が違うのが分かります。
Gのチャンネルにマウスを持ってきてCtrl+Iキーを押して反転する事で、DirectXもOpenGLに、またOPenGLもDirectX用に変更して同じ見た目となってくれます。