法线贴图生成器
用高度图或照片生成切线空间法线贴图:支持 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)。当高度在一个像素内上升 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/zh/tools/normal-map-generator/
引用此工具
kakaoCalc. (2026, November 8). 法线贴图生成器. https://kakao.mobile/zh/tools/normal-map-generator/
“法线贴图生成器.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/normal-map-generator/.