อ่าน 2 นาที
การทำแผนที่โฟตอน
ใน กราฟิกคอมพิวเตอร์ การ แมปโฟตอน เป็น อัลกอริทึม การเรนเดอร์ แสงสว่างทั่วโลก แบบสองรอบที่พัฒนาโดย Henrik Wann Jensen ระหว่างปี 1995 ถึง 2001 [ 1 ] ซึ่งแก้สม การการเรนเดอร์...
การทำแผนที่โฟตอน
ในกราฟิกคอมพิวเตอร์การแมปโฟตอน เป็น อัลกอริทึมการเรนเดอร์แสงสว่างทั่วโลก แบบสองรอบที่พัฒนาโดยHenrik Wann Jensenระหว่างปี 1995 ถึง 2001 [ 1 ]ซึ่งแก้สมการการเรนเดอร์ โดยประมาณ สำหรับการรวมความสว่างของแสงณ จุดที่กำหนดในอวกาศรังสีจากแหล่งกำเนิดแสง (เช่นโฟตอน ) และรังสีจากกล้องจะถูกติดตามอย่างอิสระจนกว่าจะตรงตามเกณฑ์การยุติบางอย่าง จากนั้นจะเชื่อมต่อกันในขั้นตอนที่สองเพื่อสร้างค่าความสว่าง อัลกอริทึมนี้ใช้เพื่อจำลองปฏิสัมพันธ์ของแสงกับวัตถุประเภทต่างๆ ได้อย่างสมจริง (คล้ายกับ เทคนิค การเรนเดอร์ภาพเสมือนจริง อื่นๆ ) โดยเฉพาะอย่างยิ่ง สามารถจำลองการหักเหของแสงผ่านสารโปร่งใสเช่นแก้วหรือน้ำ (รวมถึงแสงสะท้อน ) การสะท้อนแบบกระจายระหว่างวัตถุที่ได้รับแสง การกระเจิงของแสงใต้พื้นผิวในวัสดุโปร่งแสง และผลกระทบบางอย่างที่เกิดจากอนุภาคเช่น ควันหรือไอน้ำการแมปโฟตอนยังสามารถขยายไปสู่การจำลองแสงที่แม่นยำยิ่งขึ้น เช่นการเรนเดอร์สเปกตรัมการแมปโฟตอนแบบก้าวหน้า (PPM) เริ่มต้นด้วยการติดตามรังสี จากนั้นเพิ่มจำนวนการแมปโฟตอนมากขึ้นเรื่อยๆ เพื่อให้ได้ภาพที่เรนเดอร์ได้แม่นยำยิ่งขึ้น
แตกต่างจากpath tracing , bidirectional path tracing , volumetric path tracingและMetropolis light transport การแมปโฟ ตอน (photon mapping) เป็นอัลกอริธึมการเรนเดอร์แบบ "มีอคติ"ซึ่งหมายความว่าการหาค่าเฉลี่ยของการเรนเดอร์ฉากเดียวกันจำนวนอนันต์โดยใช้วิธีนี้จะไม่ลู่เข้าสู่คำตอบที่ถูกต้องของสมการการเรนเดอร์อย่างไรก็ตาม มันเป็นวิธีการที่สม่ำเสมอ และความแม่นยำของการเรนเดอร์สามารถเพิ่มขึ้นได้โดยการเพิ่มจำนวนโฟตอน เมื่อจำนวนโฟตอนเข้าใกล้ค่าอนันต์ การเรนเดอร์จะเข้าใกล้คำตอบของสมการการเรนเดอร์มากขึ้นเรื่อยๆ
ผลกระทบ
สารกัดกร่อน

แสงที่หักเหหรือสะท้อนจะทำให้เกิดลวดลายที่เรียกว่าคอสติกส์ (caustics ) ซึ่งมักมองเห็นได้เป็นจุดแสงที่เข้มข้นบนพื้นผิวใกล้เคียง ตัวอย่างเช่น เมื่อแสงผ่านแก้วไวน์ที่วางอยู่บนโต๊ะ แสงจะหักเหและปรากฏลวดลายของแสงบนโต๊ะ การทำแผนที่โฟตอน (Photon mapping) สามารถติดตามเส้นทางของโฟตอนแต่ละตัวเพื่อสร้างแบบจำลองว่าจุดแสงที่เข้มข้นเหล่านี้จะปรากฏขึ้นที่ใด
การสะท้อนแบบกระจาย
การสะท้อนแสงแบบกระจายตัวเกิดขึ้นเมื่อแสงจากวัตถุที่กระจายแสงชิ้นหนึ่งสะท้อนไปยังอีกชิ้นหนึ่ง วิธีการแมปโฟตอน (Photon mapping) มีความสามารถในการจัดการกับปรากฏการณ์นี้ได้เป็นอย่างดี เนื่องจากอัลกอริทึมจะสะท้อนโฟตอนจากพื้นผิวหนึ่งไปยังอีกพื้นผิวหนึ่งโดยอาศัยฟังก์ชันการกระจายการสะท้อนแบบสองทิศทาง (BRDF) ของพื้นผิวนั้น ดังนั้นแสงจากวัตถุหนึ่งที่กระทบกับอีกวัตถุหนึ่งจึงเป็นผลลัพธ์ตามธรรมชาติของวิธีการนี้ การสะท้อนแสงแบบกระจายตัวถูกจำลองขึ้นครั้งแรกโดยใช้ วิธีการคำนวณ รังสี (radiosity ) แต่การแมปโฟตอนแตกต่างออกไปตรงที่มันแยกการส่งผ่านแสงออกจากลักษณะของรูปทรงเรขาคณิตในฉาก การ รั่วไหลของสี (Color bleed)เป็นตัวอย่างหนึ่งของการสะท้อนแสงแบบกระจายตัว
การกระเจิงใต้พื้นผิว
การกระเจิงใต้พื้นผิวเป็นปรากฏการณ์ที่เห็นได้ชัดเมื่อแสงเข้าสู่วัสดุและเกิดการกระเจิงก่อนที่จะถูกดูดซับหรือสะท้อนไปในทิศทางอื่น การกระเจิงใต้พื้นผิวสามารถจำลองได้อย่างแม่นยำโดยใช้การทำแผนที่โฟตอน นี่เป็นวิธีการดั้งเดิมที่ Jensen นำมาใช้ อย่างไรก็ตาม วิธีการนี้จะช้าลงสำหรับวัสดุที่มีการกระเจิงสูง และฟังก์ชันการกระจายการสะท้อนแสงแบบกระเจิงพื้นผิวสองทิศทาง (BSSRDFs) จะมีประสิทธิภาพมากกว่าในสถานการณ์เหล่านี้
การใช้งาน
การสร้างแผนที่โฟตอน (รอบที่ 1)
ในการสร้างภาพ ด้วยเทคนิคโฟตอนแมปปิ้ง (photon mapping) อนุภาคแสงที่เรียกว่าโฟตอนจะถูกส่งออกไปจากแหล่งกำเนิดแสงไปยังฉาก เมื่อใดก็ตามที่โฟตอนตัดกับพื้นผิว จุดตัดและทิศทางที่เข้ามาจะถูกเก็บไว้ในแคชที่เรียกว่าโฟตอนแมป (photon map ) โดยทั่วไปแล้ว จะมีการสร้างโฟตอนแมปสองแผนที่สำหรับฉากหนึ่งๆ คือ แผนที่หนึ่งสำหรับแสงสะท้อน (caustics) โดยเฉพาะ และอีกแผนที่หนึ่งสำหรับแสงอื่นๆ ทั่วทั้งฉาก หลังจากตัดกับพื้นผิวแล้ว วัสดุจะกำหนดความน่าจะเป็นของการสะท้อน การดูดซับ หรือการส่งผ่าน/การหักเหของแสงวิธีการแบบมอนเตคาร์โลที่เรียกว่ารัสเซียนรูเล็ต (Russian roulette)จะถูกใช้ในการเลือกการกระทำอย่างใดอย่างหนึ่ง หากโฟตอนถูกดูดซับ จะไม่มีการกำหนดทิศทางใหม่ และการติดตามโฟตอนนั้นจะสิ้นสุดลง หากโฟตอนสะท้อนฟังก์ชันการกระจายการสะท้อนแบบสองทิศทาง ของพื้นผิว จะถูกใช้เพื่อกำหนดอัตราส่วนของความสว่างที่สะท้อนออกมา สุดท้าย หากโฟตอนส่งผ่าน ฟังก์ชันสำหรับทิศทางของมันจะถูกกำหนดขึ้นอยู่กับลักษณะของการส่งผ่าน
เมื่อสร้างแผนที่โฟตอนเสร็จแล้ว (หรือระหว่างการสร้าง) โดยทั่วไปจะจัดเรียงในลักษณะที่เหมาะสมที่สุดสำหรับอัลกอริธึมเพื่อนบ้านที่ใกล้ที่สุด k ตัวเนื่องจากเวลาในการค้นหาโฟตอนขึ้นอยู่กับการกระจายตัวเชิงพื้นที่ของโฟตอน เจนเซนสนับสนุนการใช้kd-treeแผนที่โฟตอนจะถูกจัดเก็บไว้ในดิสก์หรือในหน่วยความจำเพื่อใช้งานในภายหลัง
การเรนเดอร์ (รอบที่ 2)
ในขั้นตอนนี้ของอัลกอริธึม แผนที่โฟตอนที่สร้างขึ้นในรอบแรกจะถูกนำมาใช้เพื่อประมาณค่าความสว่างของแต่ละพิกเซลในภาพผลลัพธ์ สำหรับแต่ละพิกเซล จะมีการติดตามรังสีของฉากจนกว่าจะพบพื้นผิวที่ตัดกันที่ใกล้ที่สุด
ในขั้นตอนนี้สมการการเรนเดอร์จะถูกนำมาใช้ในการคำนวณความสว่างของพื้นผิวที่ออกจากจุดตัดในทิศทางของรังสีที่ตกกระทบ เพื่อให้เกิดประสิทธิภาพมากขึ้น สมการจึงถูกแยกออกเป็นสี่ปัจจัย ได้แก่ การส่องสว่างโดยตรง การสะท้อนแบบสเปคูลาร์ การเกิดแสงหักเห และการส่องสว่างทางอ้อมแบบนุ่มนวล
เพื่อให้ได้ค่าประมาณความสว่างโดยตรงที่แม่นยำ จะลากเส้นรังสีจากจุดตัดไปยังแหล่งกำเนิดแสงแต่ละแหล่ง ตราบใดที่เส้นรังสีไม่ตัดกับวัตถุอื่น แหล่งกำเนิดแสงนั้นจะถูกนำมาใช้ในการคำนวณความสว่างโดยตรง สำหรับค่าประมาณความสว่างโดยอ้อม จะใช้แผนที่โฟตอนในการคำนวณค่าความสว่างที่ได้รับ
โดยส่วนใหญ่แล้ว การสะท้อนแบบสเปคูลาร์สามารถคำนวณได้โดยใช้กระบวนการติดตามรังสี (เนื่องจากกระบวนการนี้จัดการกับการสะท้อนได้ดี)
การคำนวณค่าความสว่างของพื้นผิวจากแสงสะท้อน (caustics) จะใช้แผนที่โฟตอนของแสงสะท้อนโดยตรง จำนวนโฟตอนในแผนที่นี้ต้องมีขนาดใหญ่เพียงพอ เนื่องจากแผนที่นี้เป็นแหล่งข้อมูลเดียวเกี่ยวกับแสงสะท้อนในฉาก
สำหรับการส่องสว่างทางอ้อมแบบนุ่มนวล ค่าความสว่างจะคำนวณโดยใช้แผนที่โฟตอนโดยตรง อย่างไรก็ตาม การคำนวณส่วนนี้ไม่จำเป็นต้องมีความแม่นยำเท่ากับการคำนวณส่วนโค้งแสง ดังนั้นจึงใช้แผนที่โฟตอนโดยรวมแทน
การคำนวณค่าความสว่างโดยใช้แผนที่โฟตอน
ในการคำนวณค่าความสว่างของพื้นผิว ณ จุดตัด จะใช้แผนที่โฟตอนที่จัดเก็บไว้ในแคช โดยมีขั้นตอนดังนี้:
- รวบรวมโฟตอนที่อยู่ใกล้ที่สุดจำนวน N ตัว โดยใช้ฟังก์ชันค้นหาเพื่อนบ้านที่ใกล้ที่สุดบนแผนที่โฟตอน
- ให้ S เป็นทรงกลมที่บรรจุโฟตอนทั้ง N ตัว
- สำหรับโฟตอนแต่ละตัว ให้หารปริมาณฟลักซ์ (โฟตอนจริง) ที่โฟตอนดังกล่าวแสดงด้วยพื้นที่ของ S แล้วคูณด้วยBRDFที่ใช้กับโฟตอนดังกล่าว
- ผลรวมของผลลัพธ์เหล่านั้นสำหรับแต่ละโฟตอนแสดงถึงความสว่างรวมของพื้นผิวที่สะท้อนกลับจากจุดตัดของพื้นผิวในทิศทางของรังสีที่ตกกระทบ
การเพิ่มประสิทธิภาพ
- เพื่อหลีกเลี่ยงการปล่อยโฟตอนที่ไม่จำเป็น ทิศทางเริ่มต้นของการปล่อยโฟตอนมักถูกจำกัด แทนที่จะส่งโฟตอนออกไปในทิศทางสุ่มๆ พวกมันจะถูกส่งไปในทิศทางของวัตถุที่ทราบซึ่งเป็นตัวควบคุมโฟตอนที่ต้องการ เพื่อโฟกัสหรือกระจายแสง ยังมีรายละเอียดปลีกย่อยอื่นๆ อีกมากมายที่สามารถทำได้กับอัลกอริทึม เช่น การเลือกจำนวนโฟตอนที่จะส่ง และตำแหน่งและรูปแบบที่จะส่ง ดูเหมือนว่าการปล่อยโฟตอนมากขึ้นในทิศทางที่เฉพาะเจาะจงจะทำให้ความหนาแน่นของโฟตอนถูกเก็บไว้ในแผนที่โฟตอนรอบๆ ตำแหน่งที่โฟตอนตกกระทบสูงขึ้น และดังนั้นการวัดความหนาแน่นนี้จะให้ค่าความสว่าง ที่ไม่ถูกต้อง ซึ่งเป็นความจริง แต่ว่าอัลกอริทึมที่ใช้ในการคำนวณความสว่างไม่ได้ขึ้นอยู่กับการประมาณค่าความสว่าง
- สำหรับการส่องสว่างทางอ้อมแบบนุ่มนวล หากพื้นผิวเป็นแบบแลมเบอร์เชียนอาจใช้วิธีการที่เรียกว่าการแคชค่าความเข้มแสง เพื่อประมาณค่าจากผลการคำนวณก่อนหน้านี้ได้
- เพื่อหลีกเลี่ยงการทดสอบการชนที่ไม่จำเป็นในการส่องสว่างโดยตรง สามารถใช้โฟตอนเงาได้ ในระหว่างกระบวนการสร้างแผนที่โฟตอน เมื่อโฟตอนกระทบกับพื้นผิว นอกเหนือจากการดำเนินการตามปกติแล้ว โฟตอนเงาจะถูกปล่อยออกมาในทิศทางเดียวกับที่โฟตอนดั้งเดิมออกมา ซึ่งจะทะลุผ่านวัตถุไป วัตถุถัดไปที่มันชนจะทำให้เกิดโฟตอนเงาถูกเก็บไว้ในแผนที่โฟตอน จากนั้นในระหว่างการคำนวณการส่องสว่างโดยตรง แทนที่จะส่งรังสีจากพื้นผิวไปยังแสงที่ทดสอบการชนกับวัตถุ แผนที่โฟตอนจะถูกตรวจสอบหาโฟตอนเงา หากไม่มีโฟตอนเงาอยู่ แสดงว่าวัตถุนั้นมีเส้นทางการมองเห็นที่ชัดเจนไปยังแหล่งกำเนิดแสง และสามารถหลีกเลี่ยงการคำนวณเพิ่มเติมได้
- เพื่อเพิ่มคุณภาพของภาพ โดยเฉพาะอย่างยิ่งภาพแสงสะท้อน เจนเซนแนะนำให้ใช้ฟิลเตอร์ทรงกรวย โดยหลักการแล้ว ฟิลเตอร์นี้จะให้น้ำหนักกับการมีส่วนร่วมของโฟตอนในการแผ่รังสี โดยขึ้นอยู่กับระยะห่างของโฟตอนจากจุดตัดระหว่างรังสีกับพื้นผิว ซึ่งจะช่วยให้ได้ภาพที่คมชัดขึ้น
- การสร้างแผนที่โฟตอนในพื้นที่ภาพบรรลุประสิทธิภาพแบบเรียลไทม์โดยการคำนวณการกระเจิงครั้งแรกและครั้งสุดท้ายโดยใช้ตัวสร้างภาพแรสเตอร์ไรเซอร์ GPU
การเปลี่ยนแปลง
- แม้ว่าการทำแผนที่โฟตอนจะถูกออกแบบมาเพื่อใช้งานร่วมกับโปรแกรมเรย์เทรเซอร์เป็นหลัก แต่ก็สามารถขยายไปใช้กับโปรแกรมเรนเดอร์แบบสแกนไลน์ได้ เช่นกัน
ลิงก์ภายนอก
- การให้แสงสว่างทั่วโลกโดยใช้แผนที่โฟตอน
- การสังเคราะห์ภาพเสมือนจริงโดยใช้การแมปโฟตอน ISBN 1-56881-147-0
- บทนำเกี่ยวกับการทำแผนที่โฟตอนจากสถาบันเทคโนโลยีวูสเตอร์ (Worcester Polytechnic Institute)
- อคติในการเรนเดอร์
- กระดาษซิกกราฟ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การทำแผนที่โฟตอน
ใน กราฟิกคอมพิวเตอร์ การ แมปโฟตอน เป็น อัลกอริทึม การเรนเดอร์ แสงสว่างทั่วโลก แบบสองรอบที่พัฒนาโดย Henrik Wann Jensen ระหว่างปี 1995 ถึง 2001 [ 1 ] ซึ่งแก้สม การการเรนเดอร์...
สารกัดกร่อน
แสง ที่หักเห หรือ สะท้อน จะทำให้เกิดลวดลายที่เรียกว่า คอสติกส์ (caustics ) ซึ่งมักมองเห็นได้เป็นจุดแสงที่เข้มข้นบนพื้นผิวใกล้เคียง ตัวอย่างเช่น เมื่อแสงผ่านแก้วไวน์ที่วางอยู่บนโต๊ะ แสงจะหักเหและปรากฏลวดลายของแสงบนโต๊ะ การทำแผนที่โฟตอน (Photon mapping)...
การสะท้อนแบบกระจาย
การสะท้อนแสงแบบกระจายตัว เกิดขึ้นเมื่อแสงจากวัตถุที่กระจายแสงชิ้นหนึ่งสะท้อนไปยังอีกชิ้นหนึ่ง วิธีการแมปโฟตอน (Photon mapping) มีความสามารถในการจัดการกับปรากฏการณ์นี้ได้เป็นอย่างดี เนื่องจากอัลกอริทึมจะสะท้อนโฟตอนจากพื้นผิวหนึ่งไปยังอีกพื้นผิวหนึ่งโดยอาศัย...
การกระเจิงใต้พื้นผิว
การกระเจิงใต้พื้นผิว เป็นปรากฏการณ์ที่เห็นได้ชัดเมื่อแสงเข้าสู่วัสดุและเกิดการกระเจิงก่อนที่จะถูกดูดซับหรือสะท้อนไปในทิศทางอื่น การกระเจิงใต้พื้นผิวสามารถจำลองได้อย่างแม่นยำโดยใช้การทำแผนที่โฟตอน นี่เป็นวิธีการดั้งเดิมที่ Jensen นำมาใช้ อย่างไรก็ตาม...