ハイトマップをゲームエンジン用のノーマルマップに変換する

グレースケールの凹凸は正しく陰影付けできません — エンジンは紫のノーマルマップを求めます。高さをピクセルごとの面方向に変換します。

このガイドで使う道具

やりたいこと

ハイトマップは表面の隆起量を格納し、ノーマルマップは面の向きを格納します — エンジンはライティングに後者を使います。変換はピクセルごとのSobel風勾配です。水平変化→X・垂直→Y・平坦→Z。

ハイトマップを入れて紫を得る

グレースケールのハイトマップをドロップします(白=高・黒=低)。標準的なタンジェント空間規約のノーマルマップが出ます — RGB = 0〜255に再マップされたXYZで、平坦面はあのラベンダー色です。

  • 強度は勾配をスケールします — 石の深い凹凸には上げ、布目のさりげない凹凸には下げます。
  • エンジンの規約を確認してください。これはOpenGL式のY+ノーマルマップを出力します。DirectXはY反転が必要 — エンジンがそちらを期待するなら下流で緑チャンネルを反転してください。

入力と制限

最大40,000,000ピクセル(約8K)。ソースはグレースケール必須ではありません — 輝度を計算します — ただしクリーンな単一チャンネル入力が最もきれいな法線を出します。