ノーマルマップ生成ツール
ハイトマップや写真からタンジェント空間のノーマルマップを作成。Sobel・Scharrフィルター、強さ、ぼかし、OpenGL・DirectX、つなぎ目なしの端に対応。PNGで保存。
ノーマルマップは、テクスチャの各ピクセルについて、表面がどちらを向いているかを記録します。ゲームエンジンや3Dソフトは、これを使って平らなポリゴンに凹凸や溝、傷があるかのようにライティングします。このジェネレーターは、ハイトマップ(または明るさを高さとして使う写真)を読み取り、ピクセルごとに傾きを測って、OpenGLまたはDirectXの規約でタンジェント空間のノーマルマップを書き出します。タイリングテクスチャ用に、つなぎ目なしの端のオプションもあります。ブラウザ内で動作します。
使い方
- ハイトマップ(白 = 高い)またはテクスチャ写真を選びます。
- 高さの取得元を選び、暗い部分を出っ張らせたい場合は反転します。
- ぼかし、エッジフィルター、強さを設定し、タイリングテクスチャなら「つなぎ目なしの端」にチェックを入れます。
- お使いのエンジンに合う緑チャンネルの規約を選んで、ノーマルマップをダウンロードします。
計算式
n = normalize(−s × ∂h/∂x, ±s × ∂h/∂y, 1);RGB = (n + 1) ÷ 2 × 255
hは0〜1の高さ、sは強さです。傾きは、Sobel (1, 2, 1) ÷ 8 またはScharr (3, 10, 3) ÷ 32フィルター、もしくは中心差分 ÷ 2で求めます。画像の行は下向きに並ぶため、OpenGL(Y+ が上)の規約では +∂h/∂y、DirectX(Y− が下)では −∂h/∂y を使います。ぼかしは σ = 半径 ÷ 2 のガウスぼかしです。つなぎ目なしの端をオンにすると、フィルターが境界を越えて反対側に回り込むため、マップが継ぎ目なくタイリングされます。
計算例
平らな部分は傾きが0なので n = (0, 0, 1) となり、色はおなじみの水色 (128, 128, 255) です。1ピクセルの間に高さが0.38上がる場所では、Sobelの傾きは0.19、強さ2では0.38になるため、n = (−0.38, 0, 1) ÷ 1.07 となり、赤チャンネルは82に下がります。
よくある質問
OpenGLとDirectXのどちらを選べばよいですか?
Blender、Godot、Unity、およびほとんどのglTFツールはOpenGL(緑が上)、Unreal Engineと3ds MaxはDirectX(緑が下)を想定しています。凹凸のライティングが逆の側から当たっている場合は、この設定を切り替えてください。
どんな写真でも使えますか?
使えますが、明るさは高さの推測にすぎません。暗いひび割れは低く、明るい石は高くなるため、石、樹皮、布ではうまく見えることが多いです。塗られた色や影は偽の凹凸を作ることがあるので、本物のハイトマップが最良の結果になります。
タイリングするとテクスチャにつなぎ目が見えるのはなぜですか?
「つなぎ目なしの端」をオンにして、境界の傾きを回り込んだ先まで含めて測るようにしてください。テクスチャ自体もタイリングできる必要があります。シームレステクスチャ作成ツールが役立ちます。
テクスチャはアップロードされますか?
いいえ。すべての計算は端末上で行われます。
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/normal-map-generator/
このツールを引用する
kakaoCalc. (2026, November 8). ノーマルマップ生成ツール. https://kakao.mobile/ja/tools/normal-map-generator/
“ノーマルマップ生成ツール.” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/normal-map-generator/.