การให้แสงเงา

จากวิกิพีเดีย สารานุกรมเสรี
(เปลี่ยนทางจาก การให้แสงและเงา)

การให้แสงเงา (shading) เป็นเทคนิคการแสดงแสงและเงาในสามมิติโดยการตัดแสงและความมืดในคอมพิวเตอร์กราฟิกส์สามมิติ หรือการวาดภาพประกอบ สำหรับในทางจิตรกรรม อาจเรียกอีกอย่างว่า การแรเงา (shadowing)

เทคนิคการวาดภาพ[แก้]

ตัวอย่างการให้แสงเงา

ในการวาดภาพบนกระดาษ การให้แสงเงาเมื่อวาดแสดงภาพสามมิติทำโดยใช้วัสดุสีเข้มสำหรับพื้นที่มืดและวัสดุสีอ่อนสำหรับพื้นที่สว่าง เทคนิคการให้แสงเงาประกอบด้วยการแรเส้นเงา โดยวาดเส้นจำนวนมากที่ตัดกันเป็นมุมฉากในช่วงต่าง ๆ กันเพื่อแสดงเงา พื้นที่ที่ช่วงระหว่างเส้นแคบกว่าจะกลายเป็นพื้นที่เงาเข้ม ในทำนองเดียวกัน ส่วนที่มีระยะห่างระหว่างเส้นกว้างจะกลายเป็นส่วนที่สว่าง

การวาดภาพโดยคำนึงถึงการให้แสงเงาทำให้สามารถวาดภาพที่มองดูแล้วมีความลึกลงบนกระดาษได้

คอมพิวเตอร์กราฟิกส์[แก้]

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

ตัวอย่างง่าย ๆ[แก้]

การให้แสงเงาจะเปลี่ยนสีพื้นผิวของแบบจำลอง 3 มิติตามมุมที่ลำแสงตัดกับพื้นผิวนั้น

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

ภาพกล่อง แม้ว่าจะไม่ให้แสงเงา แต่ก็สามารถเห็นได้ว่าเป็นสามมิติจากโครงร่างของพื้นผิว
ภาพเดียวกันโดยลบเส้นเค้าโครงออก
ภาพเดียวกันแต่ทำการให้แสงเงา เนื่องจากมุมไปยังแหล่งกำเนิดแสงแตกต่างกันไปตามพื้นผิว สีจึงแตกต่างกันไปในแต่ละพื้นผิว

แหล่งกำเนิดแสง[แก้]

การให้แสงเงาจากแหล่งกำเนิดแสงแบบจุด

การให้แสงเงาในคอมพิวเตอร์กราฟิกส์สามมิติจะใช้แหล่งกำเนิดแสงชนิดต่าง ๆ กันไป เช่น:

  • แอมเบียนต์ไลต์ (ambient light) - เป็นแสงที่ให้แสงสว่างแก่วัตถุทั้งหมดในฉากอย่างเท่าเทียมกัน ไม่มีการให้แสงเงาเนื่องจากไม่ได้ระบุตำแหน่งของแหล่งกำเนิดแสงและความสว่างจะเท่ากันตลอด
  • ไดเรกชันนัลไลต์ (directional light) - เป็นการฉายลำแสงแบบขนานและสม่ำเสมอจากทิศทางที่กำหนด สมมติว่าเป็นแหล่งกำเนิดแสงที่อยู่ไกลมาก เช่น แสงแดด จะมีการให้แสงเงา แต่จะไม่เกิดการการลดทอนตามระยะทางขึ้น
  • พอยต์ไลต์ (point light) - เป็นแสงที่เกิดจากจุดเดียวและกระจายออกไปยังทุกทิศทาง
  • สปอตไลต์ (spot light) - เป็นแสงที่ถูกสร้างขึ้นจากจุดเดียวและกระจายออกไปยังมุมตันส่วนหนึ่งเป็นรูปกรวย
  • แอเรียไลต์ (area light) - เป็นแสงที่ออกจากระนาบหนึ่งและแผ่กระจายไปยังด้านหนึ่ง
  • วอลุมไลต์ (volume light) - เป็นแหล่งกำเนิดแสงที่ส่องสว่างแค่ภายในขอบเขตที่กำหนดเท่านั้น

การให้แสงเงาจะทำการประมาณในช่วงตามมุมของแหล่งกำเนิดแสงเหล่านี้และพื้นผิวของวัตถุ แน่นอนว่าโดยทั่วไปแล้วมักมีแหล่งกำเนิดแสงหลายแหล่งภายในฉากเดียว ตัวเรนเดอร์จะทำการประมาณค่าในช่วงจากองค์ประกอบของรังสีจากหลายแหล่งและสร้างภาพสองมิติตามที่ควรเป็น

การลดทอนตามระยะทาง[แก้]

ตามทฤษฎีแล้ว เมื่อพิจารณาจากพื้นผิวสองด้านที่ขนานกัน ความส่องสว่างของแสงจากแหล่งกำเนิดแสงที่อยู่ไกลออกไป เช่น แสงอาทิตย์ จะเท่ากัน แม้ด้านใดด้านหนึ่งจะอยู่ไกลออกไป แต่ความสว่างก็จะเท่ากัน

ภาพด้านล่างแสดงการให้แสงเงาของทรงสี่เหลี่ยมสองลูกที่ส่องสว่างจากแหล่งกำเนิดแสงที่แตกต่างกัน ในภาพด้านซ้าย ทรงสี่เหลี่ยมทั้งสองมีสีในแต่ละด้านเหมือนกัน ในภาพด้านขวา ด้านหน้าของทรงสี่เหลี่ยมด้านหน้าจะสว่างกว่าเล็กน้อย ส่วนความสว่างบนพื้นนั้น ยิ่งใกล้มากเท่าไหร่ก็ยิ่งสว่างมากขึ้นเท่านั้น แหล่งกำเนิดแสงในภาพด้านขวาถูกตั้งค่าเพื่อให้ลำแสงอ่อนลงเมื่อระยะห่างจากแหล่งกำเนิดแสงเพิ่มขึ้น สิ่งนี้เรียกว่า "การลดทอนตามระยะทาง" (distance falloff หรือ distance attenuation) และส่งผลให้ได้ภาพที่สมจริงยิ่งขึ้นโดยไม่ต้องเพิ่มแหล่งกำเนิดแสง

กล่อง 2 ใบแสดงผลด้วยตัวเร็นเดอร์ OpenGL แม้ว่าระยะทางจากจุดสังเกตจะต่างกัน แต่ก็วาดด้วยสีเดียวกัน
การวาดแบบจำลองเดียวกันใน ARRIS CAD โดยมีการลดทอนของแสง พื้นผิวใกล้กับจุดสังเกตจะสว่างกว่า

มีหลายวิธีในการคำนวณการลดทอนของแสงตามระยะทาง

  • เชิงเส้น (กำลัง 1) - ลดปริมาณแสงที่ส่องไปยังแหล่งกำเนิดแสงตามสัดส่วนของ x โดยที่ x คือระยะทางไปยังแหล่งกำเนิดแสง
  • กำลัง 2 - ความสว่างจะแปรตาม 1/x2 ป็นรูปแบบที่ใกล้เคียงกับคุณสมบัติของแสงในโลกแห่งความเป็นจริง คือเมื่อระยะห่างจากแหล่งกำเนิดแสงเพิ่มขึ้นเป็นสองเท่า ปริมาณแสงที่ไปถึงก็จะลดลงเป็นสี่เท่า
  • กำลัง n - ความสว่างจะแปรตาม 1/xn
  • นอกจากนี้ยังสามารถใช้ฟังก์ชัน อื่น ๆ อีก

การให้แสงเงาแบบเรียบ[แก้]

ตัวอย่างการแก้ไขการให้แสงเงาแบบแบน

การให้แสงเงาแบบเรียบ (flat shading) เป็นเทคนิคการจัดแสงแบบหนึ่งในคอมพิวเตอร์กราฟิกส์สามมิติ การให้แสงเงาจะทำกับแต่ละพื้นผิวตามมุมระหว่างเวกเตอร์แนวฉากของโพลีกอนที่ประกอบกันเป็นวัตถุและทิศทางของแหล่งกำเนิดแสง และสีจะถูกกำหนดตามความเข้มของแสงที่ส่องสว่างพื้นผิวโพลีกอน วิธีนี้มักใช้เมื่อต้องการทำการเร็นเดอร์ด้วยความเร็วสูง เช่น ระบบประมวลผลแบบเรียลไทม์ ซึ่งไม่เหมาะจะใช้เทคนิคการให้แสงเงาขั้นสูงกว่านี้ อย่างไรก็ตาม เมื่อเทคโนโลยีหน่วยประมวลผลกราฟิกส์ได้พัฒนาขึ้น จึงสามารถทำการให้แสงเงาอย่างรวดเร็วและราบรื่นแม้ในผลิตภัณฑ์ระดับล่างและอุปกรณ์เคลื่อนที่ การนำเทคนิคให้แสงเงาแบบเรียบมาใช้เพื่อเหตุผลด้านประสิทธิภาพจึงลดน้อยลงไป

ข้อเสียของการให้แสงเงาแบบเรียบคือแม้ว่าจะต้องการแสดงพื้นผิวโค้งเรียบ แต่ก็อาจดูเหมือนระนาบเล็ก ๆ เรียงกัน แต่ในทางกลับกัน หากต้องการวาดวัตถุที่เป็นเหลี่ยม ๆ วิธีการนี้อาจใช้ได้ดี ในการสร้างงานแบบโซลิดโมเดลิง มักใช้การให้แสงเงาแบบเรียบเนื่องจากมองเห็นรูปร่างได้ง่าย เทคนิคการให้แสงเงาเหมือนจริงขั้นสูงกว่านั้น ได้แก่ การให้แสงเงาแบบกูโร และ การให้แสงเงาแบบฟ็อง เทคนิคการให้แสงเงาที่ไม่สมจริง ได้แก่ การให้แสงเงาแบบเซล เช่น เซลแอนิเมชัน ซึ่งการไล่ระดับสีจะเปลี่ยนไป

ดูเพิ่ม[แก้]