กลับไปบล็อก
บทเรียน

Normal Map Conventions: OpenGL vs DirectX อธิบายอย่างชัดเจน

ทำไม Normal Map ของคุณจึงดูกลับด้านใน Unreal แต่ดีในตัว Unity — คำอธิบายเป็นภาษาง่ายๆ เกี่ยวกับอนุสัญญาแกน Y ของพื้นที่แทนเจนต์ พร้อมวิธีแก้ไขที่เป็นรูปธรรม

Admin23 เมษายน 25692 นาทีอ่าน11

คุณเสียบ Normal Map เข้าไป Unreal และพื้นผิวให้แสงเหมือนกับว่าดวงอาทิตย์มาจากด้านล่าง คุณเสียบไฟล์เดียวกันเข้าไป Unity หรือ Blender — ดูเยี่ยมเลย Mesh นั้นเหมือนกัน Texture นั้นเหมือนกัน เกิดอะไรขึ้น

สองอุตสาหกรรม ความไม่เห็นด้วยแกนเดียว

Normal Map จัดเก็บทิศทางพื้นผิวในช่อง RGB ของพวกมัน Red = X, Green = Y, Blue = Z ทุก PBR Engine ถอดรหัสพวกมันในลักษณะเดียวกันโดยมีข้อยกเว้นหนึ่ง: เครื่องหมายของ Y

OpenGL convention (Y+): ช่อง Green ที่สว่างขึ้นหมายถึงพื้นผิวชี้ ขึ้น ใช้งานโดย Unity, Godot, Blender (Cycles และ Eevee), Substance Painter การส่งออกเริ่มต้น และทุก WebGL-based Engine

DirectX convention (Y−): Green ที่สว่างขึ้นหมายถึงพื้นผิวชี้ ลง ใช้งานโดย Unreal Engine, Direct3D toolchain เลิกใช้แล้ว และ CryEngine/Xbox-era Asset บางรายการ

Bytes เดียวกันใน PNG ความหมายทางกายภาพตรงกันข้าม

วิธีบอกได้อย่างรวดเร็ว

ดู Hemispherical Bump (เช่นปุ่มหรือโดม) ใน Normal Map ของคุณ ในอนุสัญญา OpenGL ด้านล่างของ Bump จะเป็น Green เข้มกว่า เพราะพื้นผิวหมุนไปทาง Y− ออกจากแสง ในอนุสัญญา DirectX ด้านล่างจะเป็น Green สว่างกว่า

หากแสงของคุณรู้สึกย้อนกลับใน Engine — ไฮไลท์ที่ควรมีเงา — คุณมีความไม่ตรงกันในอนุสัญญา

การแก้ไขใช้เวลา 5 วินาที

ใน Unreal, Texture Import Dialog มี Flip Green Channel Checkbox 切り替えเปิดและ Engine จะกลับช่อง G ในเวลาตัวอย่าง ไม่จำเป็นต้องส่งออกแหล่งที่มาของคุณใหม่

ใน Unity ตั้งค่า Texture Type เป็น Normal map และ Importer จะจัดการทุกอย่าง — Unity คาดหวัง OpenGL แต่จะเตือนคุณหากไฟล์ดูผิด ใน Blender ใช้ Separate Color → Invert G → Combine Color Node Chain หรือเพียงแค่เลือก DirectX-style Input โดยตรงใน Normal Map Node

ทำไมมีสองมาตรฐานในตอนแรก

ในช่วงทศวรรษ 1990 OpenGL และ DirectX กำหนด Texture Coordinate Space ตรงกันข้าม — OpenGL มี Y เพิ่มขึ้น DirectX มี Y เพิ่มลง เมื่อ Normal Map กลายเป็นสิ่งธรรมชาติในกลางทศวรรษ 2000 ทุก Toolchain ได้อบแหล่งที่อยู่ของมันลงในผลลัพธ์ ความแตกต่างติดขาดเพราะการพลิก Established Pipeline มีค่าใช้จ่ายสูง

การสร้าง Normal Map โดยไม่สับสน

aukimi Normal Map Generator ให้คุณเลือกอนุสัญญาอย่างชัดเจนเมื่อคุณส่งออก มันทำ Sobel Gradient บน Luminance ของ Heightmap ของคุณ จากนั้นจึงบรรจุ (−dx·s, −dy·s, 1) เข้าไป RGB — พร้อมกับ Y ที่ถูกพลิกเมื่อคุณเลือก DirectX สูตรภายในนั้นเหมือนกัน ความแตกต่างเพียงอย่างเดียวคือเครื่องหมายที่เราใช้กับส่วนประกอบ Y ก่อนที่จะเขียน Green Channel คุณสามารถแปลงไฟล์ระหว่างอนุสัญญาด้วย Image Editor ใดๆ: เปิด PNG เลือก Green Channel กลับด้าน บันทึก นั่นคือสิ่งที่ "Flip Green Channel" ทำใน Unreal ทั้งหมด

การอ้างอิงอย่างรวดเร็ว

  • Unity, Godot, Blender, Substance Painter (default): OpenGL (Y+)
  • Unreal Engine, Direct3D เลิกใช้แล้ว: DirectX (Y−)
  • ดูผิดใน Unreal? เปิดใช้งาน Flip Green Channel ในการตั้งค่า Import
  • ดูผิดใน Unity? คุณอาจส่งออกจาก DirectX-convention Tool — กลับด้าน Green Channel หรือส่งออกใหม่

เมื่อคุณฝังอนุสัญญาไว้ การแก้ไขจะเป็นเรื่องเล็กน้อย ส่วนที่ยากที่สุดคือการรู้จักมันเป็นครั้งแรก

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

ชอบบทความนี้หรือไม่?

ShareHN

บทความที่เกี่ยวข้อง

industry

สแต็กสร้างสรรค์ยุบตัวลงแล้ว: หนึ่งสัปดาห์ของเครื่องมือ AI ปลายเมษายน 2026

ระหว่างวันที่ 27 เมษายน ถึง 4 พฤษภาคม 2026 Adobe, Luma, Novi, fal, Figma, Canva, HeyGen และ Anthropic ทั้งหมดข้ามเกณฑ์เดียวกันภายในแปดวัน นี่คือสิ่งที่ปล่อยออกมา ความหมายของมัน และตำแหน่งที่ปล่อยให้สวิตส์สร้างสรรค์บนเบราว์เซอร์พยายามรวมความทั้งหมดเข้าด้วยกัน

4 พฤษภาคม 2569อ่านบทความ
industry

AI Music and SFX ในปี 2026: อะไรที่ใช้ได้จริงในเสียง Indie Game

เมื่อสามปีที่แล้ว เสียง indie game มาจากสองที่เท่านั้น คือ การใช้ライブラรี่ที่ไม่เสียค่า royalty (ราคาถูก แต่เสียงเหมือนกันทุกเกม) หรือการจ้าง composer (ดีแต่แพงมาก) ในปี 2026 AI สามารถสร้าง score ที่พร้อมส่งออกได้ นี่คือเครื่องมือที่ใช้ได้จริง และที่ไหนที่ยังต้องการ composer ที่เป็นมนุษย์

2 พฤษภาคม 2569อ่านบทความ
industry

AI Mesh Generation ในปี 2026: สิ่งที่ยังคงใช้งานได้จริงในเกม Pipeline

Image-to-3D เปลี่ยนจาก "demo ที่น่ากังวล" ไปเป็น "shipping ในโปรเจกต์ indie" ในเวลา 18 เดือน นี่คือสิ่งที่ Tripo, Meshy, Rodin, และ Hyper3D ทำได้จริงในการผลิต — และที่ไหนที่ศิลปิน 3D ยังคงชนะโมเดลอยู่ทุกครั้ง

28 เมษายน 2569อ่านบทความ