Convertissez des heightmaps en normal maps tangent-space
Convertissez n'importe quelle heightmap ou image en niveaux de gris en normal map tangent-space directement dans votre navigateur. Utilise un opérateur de gradient Sobel sur la luminance, avec force, lissage et conventions OpenGL/DirectX ajustables. Idéal pour les moteurs de jeu, le travail shader, et s'associe naturellement avec le module aukimi Matter pour le design de matériaux procéduraux. Fait partie d'aukimi Matter.
Partager cet outil
Aidez d'autres à le découvrir
Créez un compte gratuit pour supprimer les filigranes
Sauvegardez vos créations, accédez à la suite créative complète et exportez sans filigrane.
Besoin de plus de puissance ?
Éditeur de textures procédurales par nodes pour créer des matériaux PBR avec aperçu 3D temps réel.
Transforme une heightmap en niveaux de gris en normal map tangent-space via un gradient Sobel, directement dans ton navigateur.
Glisse un PNG/JPG n'importe où sur l'espace de travail. L'image est auto-redimensionnée à 1024 px max pour le preview temps réel.
Une force plus élevée accentue la pente — bien pour des inputs subtils, trop fort pour des images déjà contrastées.
Un box blur 1–3 px enlève le bruit 1-pixel qui créerait sinon des tavelures dans la normal map.
Unity/Godot/Blender → OpenGL. Unreal → DirectX.
Le résultat est une normal map tangent-space standard, acceptée par tout slot de matériau PBR.
Une heightmap stocke l'altitude à chaque pixel (niveaux de gris). Une normal map stocke une direction de surface 3D (X, Y, Z) encodée en RGB. Le GPU peut calculer l'éclairage bien plus vite depuis une normal map que depuis une heightmap.
Les deux. Le sélecteur Convention inverse l'axe Y : OpenGL (Y+) par défaut, utilisé par Unity, Godot, Blender. DirectX (Y-) est utilisé par Unreal Engine. Si ton éclairage paraît inversé dans Unreal, passe en DirectX.
Seulement la luminance. Nous calculons la luminance Rec. 601 (0.299·R + 0.587·G + 0.114·B) puis appliquons un gradient Sobel. Une image couleur fonctionne, mais une heightmap en niveaux de gris donne le meilleur résultat.
Sobel convolue deux kernels 3×3 sur la luminance pour estimer le gradient dx/dy par pixel. Ce gradient est traité comme la pente de surface, puis le vecteur normal (−dx·s, −dy·s, 1) est construit, normalisé et encodé en RGB via (n·0.5 + 0.5)·255.
Oui. Colle le PNG dans le slot Normal de ton matériau. Unity et Blender : OpenGL. Unreal : DirectX (ou activer "Flip Green Channel" à l'import).
Les heightmaps réelles contiennent souvent du bruit 1-pixel qu'un Sobel amplifie. Un box blur léger (1–3 px) enlève ce bruit sans perdre le détail de grande échelle. Zéro convient pour des inputs procéduraux propres.