กลับไป ข่าว AI Game
ข่าวเกม AI

Laigter ทำ Normal Map ให้สไปรต์ 2D รับแสงเคลื่อนที่ในเกม

โดย GameSlash

ดูตัวอย่างกำแพงอิฐก่อนและหลังใส่ Normal Map พร้อมวิธีส่งออกจาก Laigter ไปลองจัดแสงคบไฟใน Godot

Laigter เป็นเครื่องมือโอเพนซอร์สของ azagaya สำหรับสร้างเท็กซ์เจอร์เสริมให้สไปรต์ 2D รับแสงในเกม ลองนึกถึงคบไฟที่เคลื่อนผ่านกำแพงอิฐ ขอบอิฐจะสว่างสลับด้านตามตำแหน่งไฟได้แม้กำแพงจะเป็นภาพแบน โปรแกรมมีหน้าพรีวิวให้ลองขยับแสงดูก่อนส่งไฟล์เข้าเอนจิน

หน้าพรีวิว Laigter แสดงสไปรต์หัวกะโหลกรับแสงพร้อมแผงปรับ Normal Map
หน้าพรีวิวแสงของ Laigter พร้อมแผงปรับ Normal Map ภาพจาก คู่มือ Laigter โดย azagaya

Normal Map กับ Specular Map คุมคนละอย่าง

Normal Map เก็บว่าพื้นผิวแต่ละพิกเซลหันไปทางไหน ขอบอิฐด้านที่หันเข้าหาไฟจึงสว่างขึ้นเมื่อไฟเคลื่อน ส่วน Specular Map คุมความแรงของไฮไลต์ เช่น ให้แสงสะท้อนบนเกราะโลหะเด่นกว่าผ้าด้าน Laigter ยังสร้าง Parallax Map สำหรับเอฟเฟกต์ความลึก และ Occlusion Map สำหรับกำหนดบริเวณที่รับแสงแวดล้อมน้อยลง การใช้สองแผนที่หลังขึ้นกับ shader ของเอนจิน คู่มือ Laigter

ภาพกำแพงอิฐแบบแบนก่อนใส่ Normal Map
กำแพงอิฐก่อนใส่ Normal Map ภาพจาก คู่มือ Laigter โดย azagaya
ภาพกำแพงอิฐเดิมที่เห็นขอบนูนขึ้นเมื่อใส่ Normal Map
กำแพงอิฐภาพเดิมหลังใส่ Normal Map แสงช่วยให้เห็นขอบนูนของอิฐ ภาพจาก คู่มือ Laigter โดย azagaya

ลองให้แสงคบไฟเคลื่อนผ่านสไปรต์ใน Godot

นำสไปรต์เข้า Laigter ปรับ Normal Map แล้วขยับแสงในโหมด Preview ก่อนส่งออกไฟล์ ใน Godot ให้ตั้ง Texture ของ Sprite2D เป็น CanvasTexture ใส่ภาพเดิมใน Diffuse และไฟล์ที่ส่งออกใน Normal Map จากนั้นลองขยับ PointLight2D ที่ใส่เท็กซ์เจอร์แสงผ่านสไปรต์ ถ้าผลยังเบา ลองเพิ่มค่า Height ของไฟแล้วดูอีกครั้ง คู่มือแสง 2D ของ Godot

สไปรต์ที่ทำด้วย AI ใช้ขั้นตอนนี้ได้หลังจัดเฟรมตามเลย์เอาต์ที่เกมใช้แล้ว ถ้าส่งออกเป็น Sprite Sheet ทั้งแผ่น ให้ภาพสีและ Normal Map ใช้กริดเดียวกัน เพื่อให้ทุกเฟรมอ่านข้อมูลพื้นผิวตรงตำแหน่ง

ซอร์สโค้ดบน GitHub ใช้ GPLv3 หรือใหม่กว่า ส่วนไฟล์พร้อมติดตั้งบน itch.io ระบุเวอร์ชัน 1.15.1 สำหรับ Windows, macOS และ Linux ราคาเริ่มที่ 4.99 ดอลลาร์สหรัฐ ณ วันที่เขียน ดูหน้าเครื่องมือ Laigter บน GameSlash

ดูแหล่งที่มา