Повернутися до блогу
Посібники

Конвенції Normal Map: OpenGL vs DirectX пояснено

Чому ваша normal map виглядає інвертованою в Unreal, але нормально в Unity — просте пояснення конвенцій осі Y у тангент-просторі з конкретними рішеннями.

Admin23 квітня 2026 р.3 хв читання11

Ви підключаєте normal map в Unreal, а поверхня освітлюється так, ніби сонце світить знизу. Ви підключаєте той же файл в Unity або Blender — виглядає чудово. Модель однакова. Текстура однакова. Що тут відбувається?

Дві індустрії, одна вісь незгоди

Normal map зберігають напрямок поверхні у своїх RGB каналах. Red = X, green = Y, blue = Z. Кожен PBR движок декодує їх однаково з одним винятком: знак Y.

Конвенція OpenGL (Y+): яскравіший зелений канал означає, що поверхня вказує вгору. Використовується в Unity, Godot, Blender (Cycles та Eevee), стандартному експорті Substance Painter та всіх WebGL-базованих движках.

Конвенція DirectX (Y−): яскравіший зелений означає, що поверхня вказує вниз. Використовується в Unreal Engine, застарілому Direct3D toolchain та деяких активах CryEngine/Xbox-ери.

Ті ж самі байти в PNG. Протилежне фізичне значення.

Як розпізнати з першого погляду

Подивіться на напівсферичний бугор (як кнопка або купол) у вашій normal map. За конвенцією OpenGL, низ бугра буде темнішим зеленим, тому що поверхня повертається до Y−, подалі від світла. За конвенцією DirectX низ яскравіший зелений.

Якщо освітлення в движку виглядає перевернутим — світлі ділянки там, де мають бути тіні — у вас невідповідність конвенцій.

Виправлення займає 5 секунд

В Unreal діалог імпорту текстури має прапорець Flip Green Channel. Включіть його, і движок інвертує G канал під час вибірки. Немає потреби в переекспорті вашого вихідного файлу.

В Unity встановіть тип текстури на Normal map, і імпортер все зробить — Unity очікує OpenGL, але попередить вас, якщо файл виглядає неправильно. В Blender використовуйте ланцюг вузлів Separate Color → Invert G → Combine Color, або просто виберіть DirectX-стильні вхідні дані прямо у вузлі Normal Map.

Чому два стандарти з самого початку?

У 1990-х OpenGL і DirectX визначили протилежні простори текстурних координат — OpenGL мав Y, що збільшується вгору, DirectX мав Y, що збільшується вниз. Коли normal map стали поширеними в середині 2000-х, кожен toolchain вбудував свій простір у свої вихідні дані. Розбіжність залишилась, тому що перевертання встановленого pipeline коштує дорого.

Генерування Normal Map без плутанини

aukimi Normal Map Generator дозволяє вам явно вибрати конвенцію при експорті. Він запускає Sobel gradient на люмінесценцію вашої карти висот, потім пакує (−dx·s, −dy·s, 1) в RGB — з Y перевернутим, коли ви обираєте DirectX. Ви можете переключити конвенцію після генерування та завантажити без повторного завантаження.

Внутрішньо формула однакова. Єдина різниця — знак, який ми застосовуємо до компоненти Y перед записом зеленого каналу. Знаючи це, ви можете конвертувати файл між конвенціями будь-яким редактором зображень: відкрийте PNG, виберіть зелений канал, інвертуйте його, збережіть. Це все, що робить «Flip Green Channel» в Unreal.

Короткий довідник

  • Unity, Godot, Blender, Substance Painter (за замовчуванням): OpenGL (Y+).
  • Unreal Engine, застарілий Direct3D: DirectX (Y−).
  • Виглядає неправильно в Unreal? Увімкніть Flip Green Channel в налаштуваннях імпорту.
  • Виглядає неправильно в Unity? Ви, напевно, експортували з DirectX-конвенційного інструменту — інвертуйте зелений канал або переекспортуйте.

Як тільки ви засвоїте конвенцію, виправлення тривіально. Найскладніша частина — розпізнати це в перший раз.

#normal-map#3d#pbr#shaders#opengl#directx

Сподобалась ця стаття?

ShareHN

Пов'язані Статті

industry

Креативний стек щойно впав: один тиждень AI-інструментів, кінець квітня 2026

З 27 квітня по 4 травня 2026 року Adobe, Luma, Novi, fal, Figma, Canva, HeyGen та Anthropic усі перетнули однаковий поріг за вісім днів. Ось що вийшло, що це означає, і де це залишає браузерні креативні люїти, що намагаються все консолідувати.

4 травня 2026 р.Читати статтю
industry

AI музика та SFX у 2026: що насправді працює в інді-ігровому звуці

Три роки тому інді-ігровий звук походив звідки-небудь з двох місць: ліцензування royalty-free бібліотек (дешево, загально, кожна гра звучить однаково) або найм композитора (чудово, дорого). У 2026 AI генерує музику, яка випускається в світ. Ось які інструменти дійсно працюють — і де людський композитор все ще перемагає.

2 травня 2026 р.Читати статтю
industry

AI Mesh Generation в 2026: Що насправді потрапляє в ігрові конвеєри

Image-to-3D перейшла від «жахливої демонстрації» до «випуску в індійських проектах» за вісімнадцять місяців. Ось що Tripo, Meshy, Rodin та Hyper3D насправді роблять у виробництві — і де тривимірний художник все ще переважає модель щоразу.

28 квітня 2026 р.Читати статтю