手元に無いマップ
テクスチャパックがPBRマテリアルに必要なマップをすべて同梱していることは、まずありません。届くのは写真とハイトマップだけだったり、別のエンジン向けにベイクされたノーマルマップだったり、レンダラーがラフネスを求めているのにグロスネスのマップしか無かったり。この無料オンラインツールは、手元にあるものを必要なものへ、ブラウザ内で変換します。
ハイトマップからノーマルマップへ
ハイトマップは高さを明度として保持し、ノーマルマップはピクセルごとに方向を保持します。変換とは、高さ場の勾配を取り、そこから表面法線を組み立てることです:N = normalize(-dh/du, -dh/dv, 1)。
勾配は単純な画素差分ではなく3x3のSobelカーネルで推定します。8ビットのハイトマップは量子化が粗く、生の差分ではその量子化が目に見えるファセットとして現れてしまうからです。強度 は正規化の前に勾配をスケーリングします。低い値では控えめな表面に、高い値では起伏が誇張されます。緩やかな斜面でソースにバンディングが出る場合は、事前ぼかしを加えてください。
グリーン反転:OpenGLとDirectXの問題
3Dで最もよくあるノーマルマップの不具合で、しかも直し方は一行です。タンジェント空間ではV軸が 上 を向きますが、画像は上から下へ格納されます。この食い違いから2つの慣習が生まれました。
- OpenGL / glTF / Blender / Unity / Godot — 緑が+Yで、上向き。Y+とも呼ばれます。
- DirectX / Unreal Engine / 3ds Max — 緑が-Yで、下向き。Y-とも呼ばれます。
間違ったほうを選んでも、どこもエラーになりません。ただ表面が上下逆の方向から照らされるだけです。凸が凹に見え、ネジの頭は押し込まれたように見えます。それがもっともらしく見えてしまうからこそ、最終レンダリングまで生き延びてしまうのです。
直し方は g = 255 - g — 緑チャンネルだけを反転し、他は何もしません。緑チャンネルを反転 がまさにそれを行います。この操作は自分自身が逆操作なので、両方向の変換に使えます。
ノーマルからハイトへ、正直なところ
ノーマルマップから高さを復元することはポアソン方程式を解くことに相当します。そこで本ツールは傾斜場を積分し、ドリフトを取り除くために緩和パスを実行します。平坦であるべき場所に緩やかなグラデーションが現れる場合は、パス数を上げてください。復元できるのは相対的な深さだけなので、結果は正規化されます。
ラフネス、グロスネス、オクルージョン
ラフネス用にグレースケール化 はチャンネル平均ではなく知覚輝度を使います。そのあとレベル調整でレンジを整えてください。マップを反転 はラフネスをグロスネスやスムースネスへ、またその逆へ変換します。ハイトからアンビエントオクルージョン は各ピクセルから複数方向へ外向きに走査し、見つかった最も急な地平線の分だけ暗くします。高さスケールのスライダーが、グレースケール画像には無い奥行きを与えます。
すべてブラウザ自身のcanvas APIを使ってお使いの端末上で処理されます。テクスチャがアップロードされることはありません。
Tiny Online Tools







